aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2022-10-04 15:10:40 +0000
committerEd Maste <emaste@FreeBSD.org>2022-10-04 15:10:40 +0000
commit56fae06595918644df9cfd2f285777195c8d29b8 (patch)
tree3e8cd4c826b10ec878a70c5e4daabe584142e73f
parent7f9f5c27f6f623a2081f2b436692418fd962b903 (diff)
downloadsrc-56fae06595918644df9cfd2f285777195c8d29b8.tar.gz
src-56fae06595918644df9cfd2f285777195c8d29b8.zip
Vendor import of OpenSSH 9.1p1vendor/openssh/9.1p1
-rw-r--r--.depend5
-rw-r--r--.git_allowed_signers5
-rw-r--r--.git_allowed_signers.asc16
-rwxr-xr-x.github/configs75
-rwxr-xr-x.github/configure.sh2
-rwxr-xr-x.github/run_test.sh14
-rwxr-xr-x.github/setup_ci.sh63
-rw-r--r--.github/workflows/c-cpp.yml60
-rw-r--r--.github/workflows/selfhosted.yml12
-rw-r--r--.github/workflows/upstream.yml13
-rw-r--r--.skipped-commit-ids1
-rw-r--r--ChangeLog4645
-rw-r--r--INSTALL7
-rw-r--r--LICENCE1
-rw-r--r--Makefile.in67
-rw-r--r--PROTOCOL65
-rw-r--r--PROTOCOL.agent6
-rw-r--r--PROTOCOL.key12
-rw-r--r--README2
-rw-r--r--README.md8
-rw-r--r--addr.c4
-rw-r--r--auth.c155
-rw-r--r--auth.h26
-rw-r--r--auth2-hostbased.c7
-rw-r--r--auth2-passwd.c10
-rw-r--r--auth2-pubkey.c357
-rw-r--r--auth2-pubkeyfile.c501
-rw-r--r--authfd.c3
-rw-r--r--authfile.c19
-rw-r--r--channels.c50
-rw-r--r--channels.h4
-rw-r--r--cipher-ctr.c146
-rw-r--r--cipher.c13
-rw-r--r--clientloop.c14
-rw-r--r--compat.c15
-rw-r--r--config.h.in46
-rwxr-xr-xconfigure15889
-rw-r--r--configure.ac313
-rw-r--r--contrib/redhat/openssh.spec2
-rw-r--r--contrib/suse/openssh.spec2
-rw-r--r--int32_minmax.inc0
-rw-r--r--krl.c4
-rw-r--r--misc.c43
-rw-r--r--misc.h4
-rw-r--r--moduli801
-rw-r--r--moduli.016
-rw-r--r--moduli.59
-rw-r--r--moduli.c14
-rw-r--r--monitor.c2
-rw-r--r--monitor_wrap.c2
-rw-r--r--monitor_wrap.h4
-rw-r--r--mux.c11
-rw-r--r--openbsd-compat/Makefile.in10
-rw-r--r--openbsd-compat/arc4random.c284
-rw-r--r--openbsd-compat/arc4random.h79
-rw-r--r--openbsd-compat/arc4random_uniform.c64
-rw-r--r--openbsd-compat/bsd-asprintf.c1
-rw-r--r--openbsd-compat/bsd-getentropy.c82
-rw-r--r--openbsd-compat/bsd-misc.c12
-rw-r--r--openbsd-compat/bsd-timegm.c82
-rw-r--r--openbsd-compat/getcwd.c5
-rw-r--r--openbsd-compat/openbsd-compat.h23
-rw-r--r--openbsd-compat/openssl-compat.h25
-rw-r--r--packet.c4
-rw-r--r--readconf.c60
-rw-r--r--readconf.h12
-rw-r--r--readpass.c5
-rw-r--r--regress/agent-ptrace.sh2
-rw-r--r--regress/envpass.sh67
-rw-r--r--regress/forward-control.sh51
-rw-r--r--regress/misc/fuzz-harness/Makefile5
-rw-r--r--regress/misc/fuzz-harness/authkeys_fuzz.cc81
-rw-r--r--regress/misc/sk-dummy/sk-dummy.c2
-rw-r--r--regress/multiplex.sh16
-rw-r--r--regress/scp.sh27
-rw-r--r--regress/scp3.sh6
-rw-r--r--regress/sftp-cmds.sh7
-rw-r--r--regress/test-exec.sh41
-rw-r--r--regress/unittests/misc/test_convtime.c64
-rw-r--r--sandbox-capsicum.c7
-rw-r--r--sandbox-seccomp-filter.c15
-rw-r--r--scp.05
-rw-r--r--scp.19
-rw-r--r--scp.c12
-rw-r--r--servconf.c19
-rw-r--r--servconf.h3
-rw-r--r--serverloop.c5
-rw-r--r--sftp-client.c215
-rw-r--r--sftp-client.h26
-rw-r--r--sftp-common.c18
-rw-r--r--sftp-common.h5
-rw-r--r--sftp-server-main.c2
-rw-r--r--sftp-server.02
-rw-r--r--sftp-server.c94
-rw-r--r--sftp-usergroup.c239
-rw-r--r--sftp-usergroup.h25
-rw-r--r--sftp.011
-rw-r--r--sftp.111
-rw-r--r--sftp.c204
-rw-r--r--sk-api.h6
-rw-r--r--sk-usbhid.c115
-rw-r--r--ssh-add.02
-rw-r--r--ssh-add.c6
-rw-r--r--ssh-agent.02
-rw-r--r--ssh-agent.c24
-rw-r--r--ssh-ed25519.c8
-rw-r--r--ssh-keygen.0223
-rw-r--r--ssh-keygen.1224
-rw-r--r--ssh-keygen.c186
-rw-r--r--ssh-keyscan.09
-rw-r--r--ssh-keyscan.110
-rw-r--r--ssh-keyscan.c16
-rw-r--r--ssh-keysign.02
-rw-r--r--ssh-keysign.c6
-rw-r--r--ssh-pkcs11-helper.016
-rw-r--r--ssh-pkcs11-helper.823
-rw-r--r--ssh-sk-helper.823
-rw-r--r--ssh-sk-helper.c3
-rw-r--r--ssh-sk.c7
-rw-r--r--ssh-xmss.c4
-rw-r--r--ssh.07
-rw-r--r--ssh.112
-rw-r--r--ssh.c30
-rw-r--r--ssh_config.027
-rw-r--r--ssh_config.525
-rw-r--r--sshbuf-getput-basic.c2
-rw-r--r--sshbuf-getput-crypto.c2
-rw-r--r--sshbuf.c9
-rw-r--r--sshbuf.h2
-rw-r--r--sshconnect.c6
-rw-r--r--sshconnect2.c74
-rw-r--r--sshd.09
-rw-r--r--sshd.812
-rw-r--r--sshd.c34
-rw-r--r--sshd_config.026
-rw-r--r--sshd_config.522
-rw-r--r--sshkey.c96
-rw-r--r--sshkey.h3
-rw-r--r--sshlogin.c1
-rw-r--r--sshsig.c7
-rw-r--r--version.h4
-rw-r--r--xmss_hash.c5
142 files changed, 14873 insertions, 12066 deletions
diff --git a/.depend b/.depend
index cd38d15f8f52..fca83a67c970 100644
--- a/.depend
+++ b/.depend
@@ -27,6 +27,7 @@ auth2-none.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-co
auth2-passwd.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 packet.h openbsd-compat/sys-queue.h dispatch.h ssherr.h log.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h monitor_wrap.h misc.h servconf.h
auth2-pubkey.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h kex.h mac.h crypto_api.h sshbuf.h log.h ssherr.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h
auth2-pubkey.o: pathnames.h uidswap.h auth-options.h canohost.h monitor_wrap.h authfile.h match.h channels.h session.h sk-api.h
+auth2-pubkeyfile.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 log.h ssherr.h misc.h compat.h sshkey.h digest.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfile.h match.h
auth2.o: digest.h
auth2.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 atomicio.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h log.h ssherr.h sshbuf.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h monitor_wrap.h
authfd.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 sshbuf.h sshkey.h authfd.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h compat.h log.h ssherr.h atomicio.h misc.h
@@ -39,7 +40,6 @@ cipher-aes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-co
cipher-aesctr.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 cipher-aesctr.h rijndael.h
cipher-chachapoly-libcrypto.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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
cipher-chachapoly.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 log.h ssherr.h sshbuf.h cipher-chachapoly.h chacha.h poly1305.h
-cipher-ctr.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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
cipher.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h misc.h sshbuf.h ssherr.h digest.h openbsd-compat/openssl-compat.h
cleanup.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 log.h ssherr.h
clientloop.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 packet.h dispatch.h sshbuf.h compat.h channels.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h crypto_api.h
@@ -122,7 +122,8 @@ sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-com
sftp-realpath.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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
sftp-server-main.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 log.h ssherr.h sftp.h misc.h xmalloc.h
sftp-server.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 atomicio.h xmalloc.h sshbuf.h ssherr.h log.h misc.h match.h uidswap.h sftp.h sftp-common.h
-sftp.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 ssherr.h pathnames.h misc.h utf8.h sftp.h sshbuf.h sftp-common.h sftp-client.h openbsd-compat/glob.h
+sftp-usergroup.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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-tree.h log.h ssherr.h xmalloc.h sftp-common.h sftp-client.h openbsd-compat/glob.h sftp-usergroup.h
+sftp.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 ssherr.h pathnames.h misc.h utf8.h sftp.h sshbuf.h sftp-common.h sftp-client.h openbsd-compat/glob.h sftp-usergroup.h
sk-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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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
sntrup761.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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
srclimit.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-signal.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.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 addr.h canohost.h log.h ssherr.h misc.h srclimit.h xmalloc.h
diff --git a/.git_allowed_signers b/.git_allowed_signers
new file mode 100644
index 000000000000..0313c1ecd17f
--- /dev/null
+++ b/.git_allowed_signers
@@ -0,0 +1,5 @@
+dtucker@dtucker.net ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKecyjh9aNmD4rb8WblA8v91JjRb0Cd2JtkzqxcggGeG
+djm@mindrot.org sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBLnJo3ZVDENYZGXm5uO9lU7b0iDFq5gHpTu1MaHPWTEfPdvw+AjFQQ/q5YizuMJkXGsMdYmblJEJZYHpm9IS7ZkAAAAEc3NoOg==
+djm@mindrot.org sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBJoAXBTQalfg+kC5wy1vE7HkIHtVnmV6AUuuIo9KQ1P+70juHwvsFKpsGaqQbrHJkTVgYDGVP02XHj8+Fb18yBIAAAAEc3NoOg==
+djm@mindrot.org sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBH+z1I48s6ydOhP5SJmI02zVCLf0K15B+UMHgoTIKVfUIv5oDoVX7e9f+7QiRmTeEOdZfQydiaVqsfi7qPSve+0AAAAEc3NoOg==
+djm@mindrot.org sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBPM4BmUg/fMnsl42JwktTekk/mB8Be3M+yK2ayg6lqYsqEri8yhRx84gey51OHKVk1TwlGbJjcMHI4URreDBEMQAAAAEc3NoOg==
diff --git a/.git_allowed_signers.asc b/.git_allowed_signers.asc
new file mode 100644
index 000000000000..5fc6118ca9a6
--- /dev/null
+++ b/.git_allowed_signers.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCgAdFiEEcWi5g4FaXu9ZpK39Kj9BTnNgYLoFAmMMMiIACgkQKj9BTnNg
+YLpyGhAAhZ1RxmD62JnT0gnor1aD0inq1fGPRadaFvXH2OScPcxXMIZWx+otnyZ/
+H9s0bIti42dPHqurgh92KS2mDGVIW8Y8MvxFUr678+hdem1U7Xvjoo0uaveNhJhe
+GxuQDOvXKRmmfL2c6w3wnFChFA1o3K+JNshjCHhWz7u6+UmY0Q9yIxqbSi+vmEPP
+NfWPfGdu4h8r7q11UgTxRSUQkfZXMqpBtb367B9BLduGuKRFKEJNyi6WpjBrqy38
+BvEbAaL52KX8hEp3TKMjo38RbOK+veSoPV5zlLui0WlEwwasgljal3f4RkqCAJob
+hqpFJRogM5XNnA2e68TDTf3buJ3wRRjuK39/CusOJz5v4i6+VCdte+BET1Y4gD6y
+v8KV4pRyumcdbN3khFUkmaQsjo+fyQjWNrgOvv60J2xUWZdchn8lxHOxrfRVKnOi
+BD4bdks7tPQY/XsS5GNJIp21Ji9HGyBajjHo0BlesLodw7FEOf6YE18A3n9qzosR
+RliuP4Hs/Z4sCUuDTbpKtQiUVs40kBbkhEL8kS8FsXz3VO89hAWaUqNUYom8AkKv
+nfDjrZDBLXuVj1Mi8qNPXxqrB/1Cza2/W4U7SK4TlMFXfoXXWxxhefN5vIdMhAJB
+u9Mdz1pY9mowKbd0c0dR+3fauvjM133dzKuyeDHMqDa5JPyd59o=
+=kgnS
+-----END PGP SIGNATURE-----
diff --git a/.github/configs b/.github/configs
index 871a3d414d94..6bf1ab27f0ca 100755
--- a/.github/configs
+++ b/.github/configs
@@ -10,6 +10,8 @@
config=$1
+unset CC CFLAGS CPPFLAGS LDFLAGS LTESTS SUDO
+
TEST_TARGET="tests"
LTESTS=""
SKIP_LTESTS=""
@@ -32,7 +34,9 @@ case "$config" in
TEST_TARGET=t-exec
;;
cygwin-release)
- CONFIGFLAGS="--with-libedit --with-xauth=/usr/bin/xauth --disable-strip --with-security-key-builtin"
+ # See https://cygwin.com/git/?p=git/cygwin-packages/openssh.git;a=blob;f=openssh.cygport;hb=HEAD
+ CONFIGFLAGS="--with-xauth=/usr/bin/xauth --with-security-key-builtin"
+ CONFIGFLAGS="$CONFIGFLAGS --with-kerberos5=/usr --with-libedit --disable-strip"
;;
clang-12-Werror)
CC="clang-12"
@@ -41,6 +45,57 @@ case "$config" in
CFLAGS="-Wall -Wextra -O2 -Wno-error=implicit-fallthrough -Wno-error=unused-parameter"
CONFIGFLAGS="--with-pam --with-Werror"
;;
+ *-sanitize-*)
+ case "$config" in
+ gcc-*)
+ CC=gcc
+ ;;
+ clang-*)
+ # Find the newest available version of clang
+ for i in `seq 10 99`; do
+ clang="`which clang-$i 2>/dev/null`"
+ [ -x "$clang" ] && CC="$clang"
+ done
+ ;;
+ esac
+ # Put Sanitizer logs in regress dir.
+ SANLOGS=`pwd`/regress
+ # - We replace chroot with chdir so that the sanitizer in the preauth
+ # privsep process can read /proc.
+ # - clang does not recognizes explicit_bzero so we use bzero
+ # (see https://github.com/google/sanitizers/issues/1507
+ # - openssl and zlib trip ASAN.
+ # - sp_pwdp returned by getspnam trips ASAN, hence disabling shadow.
+ case "$config" in
+ *-sanitize-address)
+ CFLAGS="-fsanitize=address -fno-omit-frame-pointer"
+ LDFLAGS="-fsanitize=address"
+ CPPFLAGS='-Dchroot=chdir -Dexplicit_bzero=bzero -D_FORTIFY_SOURCE=0 -DASAN_OPTIONS=\"detect_leaks=0:log_path='$SANLOGS'/asan.log\"'
+ CONFIGFLAGS=""
+ TEST_TARGET="t-exec"
+ ;;
+ clang-sanitize-memory)
+ CFLAGS="-fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer"
+ LDFLAGS="-fsanitize=memory"
+ CPPFLAGS='-Dchroot=chdir -Dexplicit_bzero=bzero -DMSAN_OPTIONS=\"log_path='$SANLOGS'/msan.log\"'
+ CONFIGFLAGS="--without-openssl --without-zlib --without-shadow"
+ TEST_TARGET="t-exec"
+ ;;
+ *-sanitize-undefined)
+ CFLAGS="-fsanitize=undefined"
+ LDFLAGS="-fsanitize=undefined"
+ ;;
+ *)
+ echo unknown sanitize option;
+ exit 1;;
+ esac
+ features="--disable-security-key --disable-pkcs11"
+ hardening="--without-sandbox --without-hardening --without-stackprotect"
+ privsep="--with-privsep-user=root"
+ CONFIGFLAGS="$CONFIGFLAGS $features $hardening $privsep"
+ # Because we hobble chroot we can't test it.
+ SKIP_LTESTS=sftp-chroot
+ ;;
gcc-11-Werror)
CC="gcc"
# -Wnoformat-truncation in gcc 7.3.1 20180130 fails on fmt_scaled
@@ -107,14 +162,15 @@ case "$config" in
# Valgrind slows things down enough that the agent timeout test
# won't reliably pass, and the unit tests run longer than allowed
# by github so split into three separate tests.
- tests2="rekey integrity try-ciphers sftp"
- tests3="krl forward-control sshsig agent-restrict kextype"
+ tests2="rekey integrity try-ciphers"
+ tests3="krl forward-control sshsig agent-restrict kextype sftp"
tests4="cert-userkey cert-hostkey kextype sftp-perm keygen-comment percent"
case "$config" in
valgrind-1)
# All tests except agent-timeout (which is flaky under valgrind)
- #) and slow ones that run separately to increase parallelism.
- SKIP_LTESTS="agent-timeout ${tests2} ${tests3} ${tests4}"
+ # and hostbased (since valgrind won't let ssh exec keysign).
+ # Slow ones are run separately to increase parallelism.
+ SKIP_LTESTS="agent-timeout hostbased ${tests2} ${tests3} ${tests4}"
;;
valgrind-2)
LTESTS="${tests2}"
@@ -201,10 +257,13 @@ case "${TARGET_HOST}" in
;;
esac
-# Unless specified otherwise, build without OpenSSL on Mac OS since
-# modern versions don't ship with libcrypto.
case "`./config.guess`" in
+*cygwin)
+ SUDO=""
+ ;;
*-darwin*)
+ # Unless specified otherwise, build without OpenSSL on Mac OS since
+ # modern versions don't ship with libcrypto.
LIBCRYPTOFLAGS="--without-openssl"
TEST_TARGET=t-exec
;;
@@ -227,5 +286,5 @@ if [ -x "$(which plink 2>/dev/null)" ]; then
export REGRESS_INTEROP_PUTTY
fi
-export CC CFLAGS LTESTS SUDO
+export CC CFLAGS CPPFLAGS LDFLAGS LTESTS SUDO
export TEST_TARGET TEST_SSH_UNSAFE_PERMISSIONS TEST_SSH_FAIL_FATAL
diff --git a/.github/configure.sh b/.github/configure.sh
index 502bf5f0d407..bd0037702d6a 100755
--- a/.github/configure.sh
+++ b/.github/configure.sh
@@ -18,4 +18,4 @@ if [ "x$LDFLAGS" != "x" ]; then
fi
echo ./configure ${CONFIGFLAGS}
-./configure ${CONFIGFLAGS}
+./configure ${CONFIGFLAGS} 2>&1
diff --git a/.github/run_test.sh b/.github/run_test.sh
index adf2568ad1e2..8eeaf5e9b09d 100755
--- a/.github/run_test.sh
+++ b/.github/run_test.sh
@@ -6,6 +6,20 @@
set -ex
+# If we want to test hostbased auth, set up the host for it.
+if [ ! -z "$SUDO" ] && [ ! -z "$TEST_SSH_HOSTBASED_AUTH" ]; then
+ sshconf=/usr/local/etc
+ hostname | $SUDO tee $sshconf/shosts.equiv >/dev/null
+ echo "EnableSSHKeysign yes" | $SUDO tee $sshconf/ssh_config >/dev/null
+ $SUDO mkdir -p $sshconf
+ $SUDO cp -p /etc/ssh/ssh_host*key* $sshconf
+ $SUDO make install
+ for key in $sshconf/ssh_host*key*.pub; do
+ echo `hostname` `cat $key` | \
+ $SUDO tee -a $sshconf/ssh_known_hosts >/dev/null
+ done
+fi
+
output_failed_logs() {
for i in regress/failed*; do
if [ -f "$i" ]; then
diff --git a/.github/setup_ci.sh b/.github/setup_ci.sh
index a3bb8587eab1..044c4d1292b1 100755
--- a/.github/setup_ci.sh
+++ b/.github/setup_ci.sh
@@ -1,17 +1,30 @@
#!/bin/sh
+PACKAGES=""
+
. .github/configs $@
case "`./config.guess`" in
+*cygwin)
+ PACKAGER=setup
+ echo Setting CYGWIN sustem environment variable.
+ setx CYGWIN "binmode"
+ chmod -R go-rw /cygdrive/d/a
+ umask 077
+ PACKAGES="$PACKAGES,autoconf,automake,cygwin-devel,gcc-core"
+ PACKAGES="$PACKAGES,make,openssl-devel,zlib-devel"
+ ;;
*-darwin*)
+ PACKAGER=brew
brew install automake
exit 0
;;
+*)
+ PACKAGER=apt
esac
TARGETS=$@
-PACKAGES=""
INSTALL_FIDO_PPA="no"
export DEBIAN_FRONTEND=noninteractive
@@ -19,7 +32,17 @@ export DEBIAN_FRONTEND=noninteractive
set -ex
-lsb_release -a
+if [ -x "`which lsb_release 2>&1`" ]; then
+ lsb_release -a
+fi
+
+# Ubuntu 22.04 defaults to private home dirs which prevent the
+# agent-getpeerid test from running ssh-add as nobody. See
+# https://github.com/actions/runner-images/issues/6106
+if [ ! -z "$SUDO" ] && ! "$SUDO" -u nobody test -x ~; then
+ echo ~ is not executable by nobody, adding perms.
+ chmod go+x ~
+fi
if [ "${TARGETS}" = "kitchensink" ]; then
TARGETS="krb5 libedit pam sk selinux"
@@ -27,16 +50,24 @@ fi
for flag in $CONFIGFLAGS; do
case "$flag" in
- --with-pam) PACKAGES="${PACKAGES} libpam0g-dev" ;;
- --with-libedit) PACKAGES="${PACKAGES} libedit-dev" ;;
+ --with-pam) TARGETS="${TARGETS} pam" ;;
+ --with-libedit) TARGETS="${TARGETS} libedit" ;;
esac
done
for TARGET in $TARGETS; do
case $TARGET in
- default|without-openssl|without-zlib|c89|libedit|*pam)
+ default|without-openssl|without-zlib|c89)
# nothing to do
;;
+ clang-sanitize*)
+ PACKAGES="$PACKAGES clang-12"
+ ;;
+ cygwin-release)
+ PACKAGES="$PACKAGES libcrypt-devel libfido2-devel libkrb5-devel"
+ ;;
+ gcc-sanitize*)
+ ;;
clang-*|gcc-*)
compiler=$(echo $TARGET | sed 's/-Werror//')
PACKAGES="$PACKAGES $compiler"
@@ -47,6 +78,15 @@ for TARGET in $TARGETS; do
heimdal)
PACKAGES="$PACKAGES heimdal-dev"
;;
+ libedit)
+ case "$PACKAGER" in
+ setup) PACKAGES="$PACKAGES libedit-devel" ;;
+ apt) PACKAGES="$PACKAGES libedit-dev" ;;
+ esac
+ ;;
+ *pam)
+ PACKAGES="$PACKAGES libpam0g-dev"
+ ;;
sk)
INSTALL_FIDO_PPA="yes"
PACKAGES="$PACKAGES libfido2-dev libu2f-host-dev libcbor-dev"
@@ -99,9 +139,16 @@ if [ "yes" = "$INSTALL_FIDO_PPA" ]; then
sudo apt-add-repository -y ppa:yubico/stable
fi
-if [ "x" != "x$PACKAGES" ]; then
- sudo apt update -qq
- sudo apt install -qy $PACKAGES
+if [ "x" != "x$PACKAGES" ]; then
+ case "$PACKAGER" in
+ apt)
+ sudo apt update -qq
+ sudo apt install -qy $PACKAGES
+ ;;
+ setup)
+ /cygdrive/c/setup.exe -q -P `echo "$PACKAGES" | tr ' ' ,`
+ ;;
+ esac
fi
if [ "${INSTALL_HARDENED_MALLOC}" = "yes" ]; then
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
index b778c9804203..3cd1188fc572 100644
--- a/.github/workflows/c-cpp.yml
+++ b/.github/workflows/c-cpp.yml
@@ -2,9 +2,11 @@ name: C/C++ CI
on:
push:
- branches: [ master, ci ]
+ branches: [ master, ci, V_9_0 ]
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', 'Makefile.in', 'configure.ac' ]
pull_request:
branches: [ master ]
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', 'Makefile.in', 'configure.ac' ]
jobs:
ci:
@@ -13,11 +15,13 @@ jobs:
fail-fast: false
matrix:
# First we test all OSes in the default configuration.
- os: [ubuntu-20.04, ubuntu-18.04, macos-10.15, macos-11.0]
+ os: [ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, windows-2019, windows-2022]
configs: [default]
# Then we include any extra configs we want to test for specific VMs.
# Valgrind slows things down quite a bit, so start them first.
include:
+ - { os: windows-2019, configs: cygwin-release }
+ - { os: windows-2022, configs: cygwin-release }
- { os: ubuntu-20.04, configs: valgrind-1 }
- { os: ubuntu-20.04, configs: valgrind-2 }
- { os: ubuntu-20.04, configs: valgrind-3 }
@@ -30,6 +34,10 @@ jobs:
- { os: ubuntu-20.04, configs: clang-10 }
- { os: ubuntu-20.04, configs: clang-11 }
- { os: ubuntu-20.04, configs: clang-12-Werror }
+ - { os: ubuntu-20.04, configs: clang-sanitize-address }
+ - { os: ubuntu-20.04, configs: clang-sanitize-undefined }
+ - { os: ubuntu-20.04, configs: gcc-sanitize-address }
+ - { os: ubuntu-20.04, configs: gcc-sanitize-undefined }
- { os: ubuntu-20.04, configs: gcc-7 }
- { os: ubuntu-20.04, configs: gcc-8 }
- { os: ubuntu-20.04, configs: gcc-10 }
@@ -44,9 +52,9 @@ jobs:
- { os: ubuntu-latest, configs: libressl-2.8.3 }
- { os: ubuntu-latest, configs: libressl-3.0.2 }
- { os: ubuntu-latest, configs: libressl-3.2.6 }
- - { os: ubuntu-latest, configs: libressl-3.3.4 }
- - { os: ubuntu-latest, configs: libressl-3.4.1 }
- - { os: ubuntu-latest, configs: libressl-3.5.0 }
+ - { os: ubuntu-latest, configs: libressl-3.3.6 }
+ - { os: ubuntu-latest, configs: libressl-3.4.3 }
+ - { os: ubuntu-latest, configs: libressl-3.5.3 }
- { os: ubuntu-latest, configs: openssl-master }
- { os: ubuntu-latest, configs: openssl-noec }
- { os: ubuntu-latest, configs: openssl-1.0.1 }
@@ -55,30 +63,37 @@ jobs:
- { os: ubuntu-latest, configs: openssl-1.1.0h }
- { os: ubuntu-latest, configs: openssl-1.1.1 }
- { os: ubuntu-latest, configs: openssl-1.1.1k }
- - { os: ubuntu-latest, configs: openssl-1.1.1m }
+ - { os: ubuntu-latest, configs: openssl-1.1.1n }
+ - { os: ubuntu-latest, configs: openssl-1.1.1p }
- { os: ubuntu-latest, configs: openssl-3.0.0 }
- - { os: ubuntu-latest, configs: openssl-3.0.1 }
+ - { os: ubuntu-latest, configs: openssl-3.0.5 }
- { os: ubuntu-latest, configs: openssl-1.1.1_stable } # stable branch
- { os: ubuntu-latest, configs: openssl-3.0 } # stable branch
- - { os: ubuntu-18.04, configs: pam }
- - { os: ubuntu-18.04, configs: krb5 }
- - { os: ubuntu-18.04, configs: heimdal }
- - { os: ubuntu-18.04, configs: libedit }
- - { os: ubuntu-18.04, configs: sk }
- - { os: ubuntu-18.04, configs: selinux }
- - { os: ubuntu-18.04, configs: kitchensink }
- - { os: ubuntu-18.04, configs: without-openssl }
- - { os: macos-10.15, configs: pam }
- - { os: macos-11.0, configs: pam }
+ - { os: ubuntu-22.04, configs: pam }
+ - { os: ubuntu-22.04, configs: krb5 }
+ - { os: ubuntu-22.04, configs: heimdal }
+ - { os: ubuntu-22.04, configs: libedit }
+ - { os: ubuntu-22.04, configs: sk }
+ - { os: ubuntu-22.04, configs: selinux }
+ - { os: ubuntu-22.04, configs: kitchensink }
+ - { os: ubuntu-22.04, configs: without-openssl }
+ - { os: macos-11, configs: pam }
+ - { os: macos-12, configs: pam }
runs-on: ${{ matrix.os }}
steps:
+ - name: set cygwin git params
+ if: ${{ startsWith(matrix.os, 'windows') }}
+ run: git config --global core.autocrlf input
+ - name: install cygwin
+ if: ${{ startsWith(matrix.os, 'windows') }}
+ uses: cygwin/cygwin-install-action@master
- uses: actions/checkout@v2
- name: setup CI system
- run: ./.github/setup_ci.sh ${{ matrix.configs }}
+ run: sh ./.github/setup_ci.sh ${{ matrix.configs }}
- name: autoreconf
- run: autoreconf
+ run: sh -c autoreconf
- name: configure
- run: ./.github/configure.sh ${{ matrix.configs }}
+ run: sh ./.github/configure.sh ${{ matrix.configs }}
- name: save config
uses: actions/upload-artifact@v2
with:
@@ -89,9 +104,10 @@ jobs:
- name: make
run: make -j2
- name: make tests
- run: ./.github/run_test.sh ${{ matrix.configs }}
+ run: sh ./.github/run_test.sh ${{ matrix.configs }}
env:
TEST_SSH_UNSAFE_PERMISSIONS: 1
+ TEST_SSH_HOSTBASED_AUTH: yes
- name: save logs
if: failure()
uses: actions/upload-artifact@v2
@@ -102,3 +118,5 @@ jobs:
config.log
regress/*.log
regress/valgrind-out/
+ regress/asan.log.*
+ regress/msan.log.*
diff --git a/.github/workflows/selfhosted.yml b/.github/workflows/selfhosted.yml
index ec2c29825c85..c4bd1d9b24f7 100644
--- a/.github/workflows/selfhosted.yml
+++ b/.github/workflows/selfhosted.yml
@@ -2,7 +2,8 @@ name: C/C++ CI self-hosted
on:
push:
- branches: [ master, ci ]
+ branches: [ master, ci, V_9_0 ]
+ paths: [ '**.c', '**.h', '**.m4', '**.sh', '.github/**', 'Makefile.in', 'configure.ac' ]
jobs:
selfhosted:
@@ -17,15 +18,15 @@ jobs:
matrix:
os:
- aix51
+ - ARM
- ARM64
- alpine
- - bbone
- debian-i386
+ - debian-riscv64
- dfly30
- dfly48
- dfly58
- dfly60
- - fbsd6
- fbsd10
- fbsd12
- fbsd13
@@ -58,7 +59,6 @@ jobs:
- { os: dfly48, configs: pam }
- { os: dfly58, configs: pam }
- { os: dfly60, configs: pam }
- - { os: fbsd6, configs: pam }
- { os: fbsd10, configs: pam }
- { os: fbsd12, configs: pam }
- { os: fbsd13, configs: pam }
@@ -72,11 +72,11 @@ jobs:
# - { os: sol11, configs: sol64-pam }
- { os: win10, configs: cygwin-release }
steps:
+ - name: shutdown VM if running
+ run: vmshutdown
- uses: actions/checkout@v2
- name: autoreconf
run: autoreconf
- - name: shutdown VM if running
- run: vmshutdown
- name: startup VM
run: vmstartup
- name: configure
diff --git a/.github/workflows/upstream.yml b/.github/workflows/upstream.yml
index b91083c65184..3cec069ede74 100644
--- a/.github/workflows/upstream.yml
+++ b/.github/workflows/upstream.yml
@@ -3,6 +3,7 @@ name: Upstream self-hosted
on:
push:
branches: [ master, ci ]
+ paths: [ '**.c', '**.h', '.github/**' ]
jobs:
selfhosted:
@@ -14,7 +15,7 @@ jobs:
fail-fast: false
matrix:
os: [ obsdsnap, obsdsnap-i386 ]
- configs: [ default, without-openssl ]
+ configs: [ default, without-openssl, ubsan ]
steps:
- uses: actions/checkout@v2
- name: shutdown VM if running
@@ -24,13 +25,15 @@ jobs:
- name: update source
run: vmrun "cd /usr/src && cvs up -dPA usr.bin/ssh regress/usr.bin/ssh"
- name: make clean
- run: vmrun "cd /usr/src/usr.bin/ssh && make obj && make clean"
+ run: vmrun "cd /usr/src/usr.bin/ssh && make obj && make clean && cd /usr/src/regress/usr.bin/ssh && make obj && make clean"
- name: make
- run: vmrun "cd /usr/src/usr.bin/ssh && if test '${{ matrix.configs }}' = 'without-openssl'; then make OPENSSL=no; else make; fi"
+ run: vmrun "cd /usr/src/usr.bin/ssh && case ${{ matrix.configs }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
- name: make install
run: vmrun "cd /usr/src/usr.bin/ssh && sudo make install"
- - name: make tests
- run: vmrun "cd /usr/src/regress/usr.bin/ssh && make obj && make clean && if test '${{ matrix.configs }}' = 'without-openssl'; then make SUDO=sudo OPENSSL=no; else make SUDO=sudo; fi"
+ - name: make tests`
+ run: vmrun "cd /usr/src/regress/usr.bin/ssh && case ${{ matrix.configs }} in without-openssl) make OPENSSL=no;; ubsan) make DEBUG='-fsanitize-minimal-runtime -fsanitize=undefined';; *) make; esac"
+ env:
+ SUDO: sudo
timeout-minutes: 300
- name: save logs
if: failure()
diff --git a/.skipped-commit-ids b/.skipped-commit-ids
index c606eaee6c51..b639678939dd 100644
--- a/.skipped-commit-ids
+++ b/.skipped-commit-ids
@@ -24,6 +24,7 @@ d9b910e412d139141b072a905e66714870c38ac0 Makefile.inc
cc12a9029833d222043aecd252d654965c351a69 moduli-gen Makefile
7ac6c252d2a5be8fbad4c66d9d35db507c9dac5b moduli update
6b52cd2b637f3d29ef543f0ce532a2bce6d86af5 makefile change
+f9a0726d957cf10692a231996a1f34e7f9cdfeb0 moduli update
Old upstream tree:
diff --git a/ChangeLog b/ChangeLog
index 063b54769d53..02e11b023ca0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,2038 @@
+commit 0ffb46f2ee2ffcc4daf45ee679e484da8fcf338c
+Author: Damien Miller <djm@mindrot.org>
+Date: Tue Oct 4 01:51:42 2022 +1100
+
+ update .depend
+
+commit 657e676ff696c7bb787bffb0e249ea1be3b474e1
+Author: Damien Miller <djm@mindrot.org>
+Date: Tue Oct 4 01:45:52 2022 +1100
+
+ update release notes URL
+
+commit f059da2b29840c0f048448809c317ce2ae014da7
+Author: Damien Miller <djm@mindrot.org>
+Date: Tue Oct 4 01:45:41 2022 +1100
+
+ crank versions in RPM spec files
+
+commit b51f3f172d87cbdb80ca4eb7b2149e56a7647557
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 26 22:18:40 2022 +0000
+
+ upstream: openssh-9.1
+
+ OpenBSD-Commit-ID: 5a467b2ee81da01a86adf1ad93b62b1728494e56
+
+commit 4cf8d0c0f3030f594a238bab21a0695735515487
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Wed Sep 21 22:26:50 2022 +0000
+
+ upstream: Fix typo. From AlexanderStohr via github PR#343.
+
+ OpenBSD-Commit-ID: a134c9b4039e48803fc6a87f955b0f4a03181497
+
+commit 8179fed3264d5919899900ed8881d5f9bb57ca33
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 19 21:39:16 2022 +0000
+
+ upstream: add RequiredRSASize to the list of keywords accepted by
+
+ -o; spotted by jmc@
+
+ OpenBSD-Commit-ID: fe871408cf6f9d3699afeda876f8adbac86a035e
+
+commit 5f954929e9f173dd1e279e07d0e8b14fa845814d
+Author: Damien Miller <djm@mindrot.org>
+Date: Mon Sep 19 20:59:34 2022 +1000
+
+ no need for glob.h here
+
+ it also causes portability problems
+
+commit 03d94a47207d58b3db37eba4f87eb6ae5a63168a
+Author: Damien Miller <djm@mindrot.org>
+Date: Mon Sep 19 20:59:04 2022 +1000
+
+ avoid Wuninitialized false positive in gcc-12ish
+
+commit 9d952529113831fb3071ab6e408d2726fd72e771
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 19 10:46:00 2022 +0000
+
+ upstream: use users-groups-by-id@openssh.com sftp-server extension
+
+ (when available) to fill in user/group names for directory listings.
+ Implement a client-side cache of see uid/gid=>user/group names. ok markus@
+
+ OpenBSD-Commit-ID: f239aeeadfa925a37ceee36ee8b256b8ccf4466e
+
+commit 8ff680368b0bccf88ae85d4c99de69387fbad7a6
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 19 10:43:12 2022 +0000
+
+ upstream: sftp client library support for
+
+ users-groups-by-id@openssh.com; ok markus@
+
+ OpenBSD-Commit-ID: ddb2f33a2da6349a9a89a8b5bcb9ca7c999394de
+
+commit 488f6e1c582212c2374a4bf8cd1b703d2e70fb8b
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 19 10:41:58 2022 +0000
+
+ upstream: extend sftp-common.c:extend ls_file() to support supplied
+
+ user/group names; ok markus@
+
+ OpenBSD-Commit-ID: c70c70498b1fdcf158531117e405b6245863bfb0
+
+commit 74b77f7497dba3a58315c8f308883de448078057
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 19 10:40:52 2022 +0000
+
+ upstream: sftp-server(8): add a "users-groups-by-id@openssh.com"
+
+ extension request that allows the client to obtain user/group names that
+ correspond to a set of uids/gids.
+
+ Will be used to make directory listings more useful and consistent
+ in sftp(1).
+
+ ok markus@
+
+ OpenBSD-Commit-ID: 7ebabde0bcb95ef949c4840fe89e697e30df47d3
+
+commit 231a346c0c67cc7ca098360f9a554fa7d4f1eddb
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Sep 19 08:49:50 2022 +0000
+
+ upstream: better debugging for connect_next()
+
+ OpenBSD-Commit-ID: d16a307a0711499c971807f324484ed3a6036640
+
+commit 1875042c52a3b950ae5963c9ca3774a4cc7f0380
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sat Sep 17 10:34:29 2022 +0000
+
+ upstream: Add RequiredRSASize for sshd(8); RSA keys that fall
+
+ beneath this limit will be ignored for user and host-based authentication.
+
+ Feedback deraadt@ ok markus@
+
+ OpenBSD-Commit-ID: 187931dfc19d51873df5930a04f2d972adf1f7f1
+
+commit 54b333d12e55e6560b328c737d514ff3511f1afd
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sat Sep 17 10:33:18 2022 +0000
+
+ upstream: add a RequiredRSASize for checking RSA key length in
+
+ ssh(1). User authentication keys that fall beneath this limit will be
+ ignored. If a host presents a host key beneath this limit then the connection
+ will be terminated (unfortunately there are no fallbacks in the protocol for
+ host authentication).
+
+ feedback deraadt, Dmitry Belyavskiy; ok markus@
+
+ OpenBSD-Commit-ID: 430e339b2a79fa9ecc63f2837b06fdd88a7da13a
+
+commit 07d8771bacfefbcfb37fa8a6dc6103bcc097e0ab
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sat Sep 17 10:30:45 2022 +0000
+
+ upstream: Add a sshkey_check_rsa_length() call for checking the
+
+ length of an RSA key; ok markus@
+
+ OpenBSD-Commit-ID: de77cd5b11594297eda82edc594b0d32b8535134
+
+commit 3991a0cf947cf3ae0f0373bcec5a90e86a7152f5
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sat Sep 17 10:11:29 2022 +0000
+
+ upstream: actually hook up restrict_websafe; the command-line flag
+
+ was never actually used. Spotted by Matthew Garrett
+
+ OpenBSD-Commit-ID: 0b363518ac4c2819dbaa3dfad4028633ab9cdff1
+
+commit 30b2a7e4291fb9e357f80a237931ff008d686d3b
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Sep 16 06:55:37 2022 +0000
+
+ upstream: correct error value
+
+ OpenBSD-Commit-ID: 780efcbad76281f11f14b2a5ff04eb6db3dfdad4
+
+commit ac1ec9545947d9f9657259f55d04cb49d3a94c8a
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Sep 16 03:33:14 2022 +0000
+
+ upstream: sftp: Be a bit more clever about completions
+
+ There are commands (e.g. "get" or "put") that accept two
+ arguments, a local path and a remote path. However, the way
+ current completion is written doesn't take this distinction into
+ account and always completes remote or local paths.
+
+ By expanding CMD struct and "cmds" array this distinction can be
+ reflected and with small adjustment to completer code the correct
+ path can be completed.
+
+ By Michal Privoznik, ok dtucker@
+
+ OpenBSD-Commit-ID: 1396d921c4eb1befd531f5c4a8ab47e7a74b610b
+
+commit 590db83384f9d99fc51c84505792d26d1ef60df9
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Sep 16 03:13:34 2022 +0000
+
+ upstream: sftp: Don't attempt to complete arguments for
+
+ non-existent commands
+
+ If user entered a non-existent command (e.g. because they made a
+ typo) there is no point in trying to complete its arguments. Skip
+ calling complete_match() if that's the case.
+
+ From Michal Privoznik
+
+ OpenBSD-Commit-ID: cf39c811a68cde2aeb98fc85addea4000ef6b07a
+
+commit ff9809fdfd1d9a91067bb14a77d176002edb153c
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Sep 14 00:14:37 2022 +0000
+
+ upstream: sk_enroll: never drop SSH_SK_USER_VERIFICATION_REQD flag
+
+ from response
+
+ Now that all FIDO signing calls attempt first without PIN and then
+ fall back to trying PIN only if that attempt fails, we can remove the
+ hack^wtrick that removed the UV flag from the keys returned during
+ enroll.
+
+ By Corinna Vinschen
+
+ OpenBSD-Commit-ID: 684517608c8491503bf80cd175425f0178d91d7f
+
+commit 940dc10729cb5a95b7ee82c10184e2b9621c8a1d
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Sep 14 00:13:13 2022 +0000
+
+ upstream: a little extra debugging
+
+ OpenBSD-Commit-ID: edf1601c1d0905f6da4c713f4d9cecc7d1c0295a
+
+commit 4b5f91cb959358141181b934156513fcb8a6c1e3
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Sep 14 00:02:03 2022 +0000
+
+ upstream: ssh-agent: attempt FIDO key signing without PIN and use
+
+ the error to determine whether a PIN is required and prompt only if
+ necessary. from Corinna Vinschen
+
+ OpenBSD-Commit-ID: dd6be6a0b7148608e834ee737c3479b3270b00dd
+
+commit 113523bf0bc33600b07ebb083572c8c346b6fdf4
+Author: jmc@openbsd.org <jmc@openbsd.org>
+Date: Sun Sep 11 06:38:11 2022 +0000
+
+ upstream: .Li -> .Vt where appropriate; from josiah frentsos,
+
+ tweaked by schwarze
+
+ ok schwarze
+
+ OpenBSD-Commit-ID: 565046e3ce68b46c2f440a93d67c2a92726de8ed
+
+commit 86af013b56cecb5ee58ae0bd9d495cd586fc5918
+Author: jsg@openbsd.org <jsg@openbsd.org>
+Date: Sat Sep 10 08:50:53 2022 +0000
+
+ upstream: fix repeated words ok miod@ jmc@
+
+ OpenBSD-Commit-ID: 6765daefe26a6b648cc15cadbbe337596af709b7
+
+commit 0ba39b93b326a7d5dfab776cc9b9d326161a9b16
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Sep 9 03:31:42 2022 +0000
+
+ upstream: notifier_complete(NULL, ...) is a noop, so no need to test
+
+ that ctx!=NULL; from Corinna Vinschen
+
+ OpenBSD-Commit-ID: ade2f2e9cc519d01a586800c25621d910bce384a
+
+commit be197635329feb839865fdc738e34e24afd1fca8
+Author: Sam James <sam@gentoo.org>
+Date: Thu Sep 8 02:49:29 2022 +0100
+
+ openbsd-compat/bsd-asprintf: add <stdio.h> include for vsnprintf
+
+ Fixes the following build failure with Clang 15 on musl:
+ ```
+ bsd-asprintf.c:51:8: error: call to undeclared library function 'vsnprintf' with type 'int (char *, unsigned long, const char *, struct __va_list_tag *)'; ISO C99 and laterclang -O2 -pipe -fdiagnostics-color=always -frecord-gcc-switches -pipe -Wunknown-warning-option -Qunused-arguments -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -Wmisleading-indentation -Wbitwise-instead-of-logical -fno-strict-aliasing -mretpoline -ftrapv -fzero-call-used-regs=all -fno-builtin-memset -fstack-protector-strong -fPIE -I. -I. -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE -DSSHDIR=\"/etc/ssh\" -D_PATH_SSH_PROGRAM=\"/usr/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/lib/misc/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/usr/lib/misc/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/usr/lib/misc/ssh-keysign\" -D_PATH_SSH_PKCS11_HELPER=\"/usr/lib/misc/ssh-pkcs11-helper\" -D_PATH_SSH_SK_HELPER=\"/usr/lib/misc/ssh-sk-helper\" -D_PATH_SSH_PIDDIR=\"/run\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/empty\" -DHAVE_CONFIG_H -c cipher-aes.c -o cipher-aes.o
+ do not support
+ implicit function declarations [-Wimplicit-function-declaration]
+ ret = vsnprintf(string, INIT_SZ, fmt, ap2);
+ ^
+ bsd-asprintf.c:51:8: note: include the header <stdio.h> or explicitly provide a declaration for 'vsnprintf'
+ 1 error generated.
+ ```
+
+commit 6cb6f660bb35f77a0456dd2581ddf39c29398a5e
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Sep 2 16:43:27 2022 +1000
+
+ Remove DEF_WEAK, it's already in defines.h.
+
+commit ce39e7d8b70c4726defde5d3bc4cb7d40d131153
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Sep 2 14:28:14 2022 +1000
+
+ Resync arc4random with OpenBSD.
+
+ This brings us up to current, including djm's random-reseeding change,
+ as prompted by logan at cyberstorm.mu in bz#3467. It brings the
+ platform-specific hooks from LibreSSL Portable, simplified to match our
+ use case. ok djm@.
+
+commit beaddde26f30e2195b8aa4f3193970e140e17305
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Sep 2 14:20:04 2022 +1000
+
+ Move OPENBSD ORIGINAL marker.
+
+ Putting this after the copyright statement (which doesn't change)
+ instead of before the version identifier (which does) prevents merge
+ conflicts when resyncing changes.
+
+commit c83e467ead67a8cb48ef4bec8085d6fb880a2ff4
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Sep 2 14:17:28 2022 +1000
+
+ Remove arc4random_uniform from arc4random.c
+
+ This was previously moved into its own file (matching OpenBSD) which
+ prematurely committed in commit 73541f2.
+
+commit 5f45c2395c60865e59fa44152ff1d003a128c5bc
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Sep 2 04:20:02 2022 +0000
+
+ upstream: sk-usbhid: fix key_lookup() on tokens with built-in UV
+
+ explicitly test whether the token performs built-in UV (e.g. biometric
+ tokens) and enable UV in that case. From Pedro Martelletto via GHPR#388
+
+ OpenBSD-Commit-ID: 007eb7e387d27cf3029ab06b88224e03eca62ccd
+
+commit 03277a4aa49b80af541a3e691f264c0c0d8f9cec
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Aug 31 20:26:30 2022 +1000
+
+ Move sftp from valgrind-2 to 3 to rebalance.
+
+commit fcf5365da69c516817321ba89c3a91df98d098df
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Aug 31 02:56:40 2022 +0000
+
+ upstream: whitespace
+
+ OpenBSD-Commit-ID: c2bcbf93610d3d62ed206cdf9bf9ff98c6aaf232
+
+commit e60136a3d7a223dd8e84ba8a6895bc3142360993
+Author: Damien Miller <djm@mindrot.org>
+Date: Mon Aug 29 13:27:45 2022 +1000
+
+ additional keys
+
+commit 2b02dcb505288c462d1b5dd1ac04e603d01340eb
+Author: Damien Miller <djm@mindrot.org>
+Date: Mon Aug 29 13:23:43 2022 +1000
+
+ cross-sign allowed_signers with PGP key
+
+ Provides continuity of trust from legacy PGP release key to
+ the SSHSIG signing keys that we will use henceforth for git
+ signing.
+
+commit 51b345f177ae981b8755f6bdf8358b1cc5e83d67
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Aug 27 21:49:27 2022 +1000
+
+ Add libcrypt-devel to cygwin-release deps.
+
+ Based on feedback from vinschen at redhat.com.
+
+commit 9f81736cf16dd8dda1c8942f1973a5f80b8cd78c
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Aug 27 09:37:40 2022 +1000
+
+ Add Windows 2022 test targets.
+
+commit 85e1a69243f12be8520438ad6a3cfdc0b7fcbb2d
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 26 16:26:06 2022 +1000
+
+ Add cygwin-release test target.
+
+ This also moves the cygwin package install from the workflow file to
+ setup_ci.sh so that we can install different sets of Cygwin packages
+ for different test configs.
+
+commit 92382dbe8bf9ea1225b16858f9b9b208c15c7e8d
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 26 08:16:27 2022 +0000
+
+ upstream: whitespace
+
+ OpenBSD-Commit-ID: a5d015efbfd228dc598ffdef612d2da3a579e5d8
+
+commit 70a5de0a50e84d7250eb4e4537f765599f64c4af
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 26 08:12:56 2022 +0000
+
+ upstream: whitespace
+
+ OpenBSD-Commit-ID: d297e4387935d4aef091c5e9432578c2e513f538
+
+commit 3a683a19fd116ea15ebf8aa13d02646cceb302a9
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri Aug 26 14:23:55 2022 +1000
+
+ initial list of allowed signers
+
+commit 6851f4b8c3fc1b3e1114c56106e4dc31369c8513
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 19 17:22:18 2022 +1000
+
+ Install Cygwin packages based on OS not config.
+
+commit f96480906893ed93665df8cdf9065865c51c1475
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 19 06:07:47 2022 +0000
+
+ upstream: attemp FIDO key signing without PIN and use the error
+
+ code returned to fall back only if necessary. Avoids PIN prompts for FIDO
+ tokens that don't require them; part of GHPR#302
+
+ OpenBSD-Commit-ID: 4f752aaf9f2e7c28bcaaf3d4f8fc290131bd038e
+
+commit 5453333b5d28e313284cb9aae82899704103f98d
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 19 05:53:28 2022 +0000
+
+ upstream: remove incorrect check that can break enrolling a
+
+ resident key (introduced in r1.40)
+
+ OpenBSD-Commit-ID: 4cab364d518470e29e624af3d3f9ffa9c92b6f01
+
+commit ff89b1bed80721295555bd083b173247a9c0484e
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Aug 19 04:02:46 2022 +0000
+
+ upstream: Strictly enforce the maximum allowed SSH2 banner size in
+
+ ssh-keyscan and prevent a one-byte buffer overflow. Patch from Qualys, ok
+ djm@
+
+ OpenBSD-Commit-ID: 6ae664f9f4db6e8a0589425f74cd0bbf3aeef4e4
+
+commit 1b470b9036639cef4f32fb303bb35ea0b711178d
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 19 15:18:09 2022 +1000
+
+ Fix cygwin conditional steps.
+
+commit fd6ee741ab16714b7035d60aca924123ba28135a
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 19 15:12:57 2022 +1000
+
+ Add a bit more debug output.
+
+commit a9305c4c739f4d91a3d3a92c0b6d4949404a36c5
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 12 15:08:47 2022 +1000
+
+ Add Cygwin (on windows-2019) test target.
+
+ In addition to installing the requisite Cygwin packages, we also need to
+ explicitly invoke "sh" for steps that run other scripts since the runner
+ environment doesn't understand #! paths.
+
+commit 5062ad48814b06162511c4f5924a33d97b6b2566
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 19 03:06:30 2022 +0000
+
+ upstream: double free() in error path; from Eusgor via GHPR333
+
+ OpenBSD-Commit-ID: 39f35e16ba878c8d02b4d01d8826d9b321be26d4
+
+commit 5a5c580b48fc6006bdfa731fc2f6d4945c2c0e4e
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Aug 18 21:36:39 2022 +1000
+
+ Check for perms to run agent-getpeereid test.
+
+ Ubuntu 22.04 defaults to private home dirs which prevents "nobody"
+ running ssh-add during the agent-getpeereid test. Check for this and
+ add the necessary permissions.
+
+commit cd06a76b7ccc706e2bb4f1cc4aa9e9796a28a812
+Author: Damien Miller <djm@mindrot.org>
+Date: Wed Aug 17 16:04:16 2022 +1000
+
+ on Cygwin, prefer WinHello FIDO device
+
+ If no FIDO device was explictly specified, then prefer the
+ windows://hello FIDO device. An exception to this is when
+ probing resident FIDO keys, in which case hardware FIDO
+ devices are preferred.
+
+commit 47f72f534ac5cc2cd3027675a3df7b00a8f77575
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Aug 17 06:01:57 2022 +0000
+
+ upstream: add an extra flag to sk_probe() to indicate whether we're
+
+ probing for a FIDO resident key or not. Unused here, but will make like
+ easier for portable
+
+ OpenBSD-Commit-ID: 432c8ff70e270378df9dbceb9bdeaa5b43b5a832
+
+commit edb0bcb3c79b16031dc87a8e57aecc3c4a3414f0
+Author: jmc@openbsd.org <jmc@openbsd.org>
+Date: Tue Aug 16 20:24:08 2022 +0000
+
+ upstream: use .Cm for "sign"; from josiah frentsos
+
+ OpenBSD-Commit-ID: 7f80a53d54857ac6ae49ea6ad93c5bd12231d1e4
+
+commit cccb011e130cbbac538b1689d10e4a067298df8b
+Author: Corinna Vinschen <vinschen@redhat.com>
+Date: Thu Aug 11 20:19:35 2022 +0200
+
+ Revert "check_sk_options: add temporary WinHello workaround"
+
+ Cygwin now comes with libfido2 1.11.0, so this workaround
+ isn't required anymore.
+
+ This reverts commit 242c044ab111a37aad3b0775727c36a4c5f0102c.
+
+ Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
+
+commit 9468cd7cf9d989dfa2ac20e2a0268ba6e93bfa5a
+Author: Corinna Vinschen <vinschen@redhat.com>
+Date: Thu Aug 11 20:18:17 2022 +0200
+
+ fido_dev_is_winhello: return 0, not "false"
+
+ "false" is not used anywhere in OpenSSH, so return 0 like
+ everywhere else.
+
+ Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
+
+commit 730a80609472ee0451c99482d75c9c41f3ebc42d
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 12 05:20:28 2022 +0000
+
+ upstream: sftp-server: support home-directory request
+
+ Add support to the sftp-server for the home-directory extension defined
+ in draft-ietf-secsh-filexfer-extensions-00. This overlaps a bit with the
+ existing expand-path@openssh.com, but uses a more official protocol name,
+ and so is a bit more likely to be implemented by non-OpenSSH clients.
+
+ From Mike Frysinger, ok dtucker@
+
+ OpenBSD-Commit-ID: bfc580d05cc0c817831ae7ecbac4a481c23566ab
+
+commit 5e820bf79ce3ce99ef7e98b0ab642b0a0a4f396c
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 12 14:56:55 2022 +1000
+
+ Replace deprecated ubuntu-18.04 runners with 22.04
+
+commit 87b0d9c1b789d3ff958ec45df2ac912e24461bae
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Aug 11 22:48:23 2022 +1000
+
+ Add a timegm implementation from Heimdal via Samba.
+
+ Fixes build on (at least Solaris 10).
+
+commit d0c4fa58594577994921b593f10037c5282597ca
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Aug 11 14:23:58 2022 +1000
+
+ Rerun tests if any .github config file changes.
+
+commit 113fe6c77ab43769fc61e953d07cb619fd7ea54b
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Aug 11 13:33:51 2022 +1000
+
+ Skip hostbased during Valgrind tests.
+
+ Valgrind doesn't let ssh exec ssh-keysign (because it's setuid) so skip
+ it during the Valgrind based tests.
+
+ See https://bugs.kde.org/show_bug.cgi?id=119404 for a discussion of this
+ (ironically there the problematic binary was ssh(1) back when it could
+ still be setuid).
+
+commit b98a42afb69d60891eb0488935990df6ee571c4d
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu Aug 11 01:57:50 2022 +0000
+
+ upstream: add some tests for parse_absolute_time(), including cases
+
+ where it is forced to the UTC timezone. bz3468 ok dtucker
+
+ OpenBSD-Regress-ID: ea07ca31c2f3847a38df028ca632763ae44e8759
+
+commit ec1ddb72a146fd66d18df9cd423517453a5d8044
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu Aug 11 01:56:51 2022 +0000
+
+ upstream: allow certificate validity intervals, sshsig verification
+
+ times and authorized_keys expiry-time options to accept dates in the UTC time
+ zone in addition to the default of interpreting them in the system time zone.
+ YYYYMMDD and YYMMDDHHMM[SS] dates/times will be interpreted as UTC if
+ suffixed with a 'Z' character.
+
+ Also allow certificate validity intervals to be specified in raw
+ seconds-since-epoch as hex value, e.g. -V 0x1234:0x4567890. This
+ is intended for use by regress tests and other tools that call
+ ssh-keygen as part of a CA workflow.
+
+ bz3468 ok dtucker
+
+ OpenBSD-Commit-ID: 454db1cdffa9fa346aea5211223a2ce0588dfe13
+
+commit 4df246ec75751da7eb925e1880498300d8bda187
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Aug 11 10:23:55 2022 +1000
+
+ Fix conditional for running hostbased tests.
+
+commit 2580916e48721802220c61ce9e0df1297c00bc07
+Author: Damien Miller <djm@mindrot.org>
+Date: Thu Aug 11 08:58:28 2022 +1000
+
+ fix SANDBOX_SECCOMP_FILTER_DEBUG
+
+commit fdbd5bf507fc271ff813714fab8a72ff2c6cb5ca
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Aug 10 17:35:52 2022 +1000
+
+ Test hostbased auth on github runners.
+
+commit 7e2f51940ba48a1c0fae1107801ea643fa83c971
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Aug 10 17:25:24 2022 +1000
+
+ Rename our getentropy to prevent possible loops.
+
+ Since arc4random seeds from getentropy, and we use OpenSSL for that
+ if enabled, there's the possibility that if we build on a system that
+ does not have getentropy then run on a system that does have it, then
+ OpenSSL could end up calling our getentropy and getting stuck in a loop.
+ Pointed out by deraadt@, ok djm@
+
+commit 7a01f61be8d0aca0e975e7417f26371495fe7674
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Mon Aug 8 12:17:04 2022 +1000
+
+ Actually put HAVE_STDINT_H around the stdint.h.
+
+commit 73541f29f0b50480da6c20dceb7a7191bd8ea7d3
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Mon Aug 8 10:30:34 2022 +1000
+
+ Give unused param a name.
+
+ Fixes builds on platforms that do have fido2 but don't have
+ fido_dev_is_winhello.
+
+commit 2a108c0ea960381bd9b14ee0d84e818a23df4482
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Aug 5 05:01:40 2022 +0000
+
+ upstream: don't prompt for FIDO passphrase before attempting to enroll
+
+ the credential, just let the enroll operating fail and we'll attempt to get a
+ PIN anyway. Might avoid some unneccessary PIN prompts.
+
+ Part of GHPR#302 from Corinna Vinschen; ok dtucker@
+
+ OpenBSD-Commit-ID: bd5342ffc353ee37d39617906867c305564d1ce2
+
+commit 2886975c0ad9244e60dc5e4be34fde3aa573a4b5
+Author: Corinna Vinschen <vinschen@redhat.com>
+Date: Fri Feb 11 14:33:41 2022 +0100
+
+ sk_sign: set FIDO2 uv attribute explicitely for WinHello
+
+ WinHello via libfido2 performs user verification by default.
+ However, if we stick to that, there's no way to differentiate
+ between keys created with or without "-O verify-required".
+ Set FIDO2 uv attribute explicitely to FIDO_OPT_FALSE, then check
+ if user verification has been requested.
+
+ Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
+
+commit 242c044ab111a37aad3b0775727c36a4c5f0102c
+Author: Corinna Vinschen <vinschen@redhat.com>
+Date: Tue Feb 15 11:28:08 2022 +0100
+
+ check_sk_options: add temporary WinHello workaround
+
+ Up to libfido 1.10.0, WinHello advertises "clientPin" rather
+ than "uv" capability. This is fixed in 1.11.0. For the time
+ being, workaround it here.
+
+ Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
+
+commit 78774c08cc4b4997382975b0f414a86e06b6780c
+Author: Corinna Vinschen <vinschen@redhat.com>
+Date: Thu Feb 10 18:19:29 2022 +0100
+
+ compat code for fido_dev_is_winhello()
+
+ Signed-off-by: Corinna Vinschen <vinschen@redhat.com>
+
+commit 3d3a932a019aedfb891e0779bb4990cd5008a390
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Aug 5 13:12:27 2022 +1000
+
+ Factor out getrnd() and rename to getentropy().
+
+ Factor out the arc4random seeding into its own file and change the
+ interface to match getentropy. Use native getentropy if available.
+ This will make it easier to resync OpenBSD changes to arc4random.
+ Prompted by bz#3467, ok djm@.
+
+commit 9385d277b787403be9dfcb229cf372202496d2f3
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Aug 4 18:55:48 2022 +1000
+
+ Include CHANNEL and FIDO2 libs in configure output
+
+commit 141535b904b6fba01724444f38193a8599201f82
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Aug 1 11:09:26 2022 +0000
+
+ upstream: avoid double-free in error path introduced in r1.70; report
+
+ and fix based on GHPR#332 by v-rzh ok dtucker@
+
+ OpenBSD-Commit-ID: 3d21aa127b1f37cfc5bdc21461db369a663a951f
+
+commit dba7099ffcba3ca07b3946f017ba6a4c3158d9b1
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Jul 27 18:40:12 2022 +1000
+
+ Remove deprecated MacOS 10.15 runners.
+
+commit 722a56439aa5972c830e4a9a724cf52aff4a950a
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Jul 27 18:31:14 2022 +1000
+
+ Move stale-configure check as early as possible.
+
+ We added a check in Makefile to catch the case where configure needs to
+ be rebuilt, however this did not happen until a build was attempted in
+ which case all of the work done by configure was wasted. Move this check
+ to the start of configure to catch it as early as possible. ok djm@
+
+commit 099d6b56288b421ba38531d26dc1bd6bb685e311
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 22 10:47:19 2022 +1000
+
+ Move libcrypto into CHANNELLIBS.
+
+ This will result in sftp, sftp-server and scp no longer being linked
+ against libcrypto. ok djm@
+
+commit 1bdf86725b77733bb5f17c54888b88a10b2f6538
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 22 10:45:47 2022 +1000
+
+ Remove seed_rng calls from scp, sftp, sftp-server.
+
+ These binaries don't use OpenSSL's random functions. The next step
+ will be to stop linking them against libcrypto. ok djm@
+
+commit d73f77b8cb9b422f1ac4facee7890aa10ff2bc21
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 22 09:51:51 2022 +1000
+
+ Group libcrypto and PRNGD checks together.
+
+ They're related more than the libcrypt or libiaf checks which are
+ currently between them. ok djm@
+
+commit f117e372b3f42f2fbdb0a578d063b2609ab58e1f
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 22 09:24:45 2022 +1000
+
+ Do not link scp, sftp and sftp-server w/ zlib.
+
+ Some of our binaries (eg sftp, sftp-server, scp) do not interact with
+ the channels code and thus do use libraries such as zlib and libcrypto
+ although they are linked with them. This adds a CHANNELLIBS and starts
+ by moving zlib into it, which means the aformentioned binaries are no
+ longer linked against zlib. ok djm@
+
+commit 800c2483e68db38bd1566ff69677124be974aceb
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Mon Jul 25 21:49:04 2022 +1000
+
+ Remove workarounds for OpenSSL missing AES-CTR.
+
+ We have some compatibility hacks that were added to support OpenSSL
+ versions that do not support AES CTR mode. Since that time, however,
+ the minimum OpenSSL version that we support has moved to 1.0.1 which
+ *does* have CTR, so this is no longer needed. ok djm@
+
+commit b7c56b65c12f51fe0dbae798d19c8f58224a5d95
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Mon Jul 25 21:43:00 2022 +1000
+
+ Remove workarounds for OpenSSL missing AES-GCM.
+
+ We have some compatibility hacks that were added to support OpenSSL
+ versions that do not support AES GCM mode. Since that time, however,
+ the minimum OpenSSL version that we support has moved to 1.0.1 which
+ *does* have GCM, so this is no longer needed. ok djm@
+
+commit 5a4a9f7a968fbf92cc1eac519c65638e79ae9f1f
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Mon Jul 25 07:12:45 2022 +0000
+
+ upstream: Restore missing "!" in TEST_SSH_ELAPSED_TIMES test.
+
+ OpenBSD-Regress-ID: 38783f9676ec348c5a792caecee9a16e354b37b0
+
+commit 0ff886be132299386cc29d87c2aa16ff68a1aa08
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Sun Jul 24 23:29:10 2022 +0000
+
+ upstream: Test TEST_SSH_ELAPSED_TIMES for empty string not
+
+ executable. No-op on most platforms but should prevent warnings in -portable
+ on systems that don't have 'date %s'.
+
+ OpenBSD-Regress-ID: e39d79867b8065e33d0c5926fa1a31f85659d2a4
+
+commit f69319ad8ad1dd50f90bbcf5912e11cc8ed3e037
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Jul 23 14:38:22 2022 +1000
+
+ Convert "have_prog" function into "which".
+
+ "which" and its behaviour is not standardized, so convert the existing
+ have_prog function into "which" so we can rely on it being available
+ and what its semantics are. Add a have_prog wrapper that maintains the
+ existing behaviour.
+
+commit ea7ecc2c3ae39fdf5c6ad97b7bc0b47a98847f43
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Jul 23 14:36:38 2022 +1000
+
+ Skip scp3 test if there's no scp on remote path.
+
+ scp -3 ends up using the scp that's in the remote path and will fail if
+ one is not available. Based on a patch from rapier at psc.edu.
+
+commit c46f6fed419167c1671e4227459e108036c760f8
+Author: Damien Miller <djm@mindrot.org>
+Date: Wed Jul 20 13:39:14 2022 +1000
+
+ crank SSH_SK_VERSION_MAJOR in sk-dummy.so
+
+commit f208e3b9ffb5ee76cf9c95df7ff967adc7f51c7d
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Jul 20 03:33:22 2022 +0000
+
+ upstream: ssh-keygen: fix touch prompt, pin retries;
+
+ part of GHPR329 from Pedro Martelletto
+
+ OpenBSD-Commit-ID: 75d1005bd2ef8f29fa834c90d2684e73556fffe8
+
+commit 8638a2ce7e90c8a51d9af3143404282126c524f8
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Jul 20 03:31:42 2022 +0000
+
+ upstream: sk-usbhid: preserve error code returned by key_lookup()
+
+ it conveys useful information, such as the supplied pin being wrong.
+
+ Part of GHPR329 from Pedro Martelletto
+
+ OpenBSD-Commit-ID: c0647eb9290f793add363d81378439b273756c1b
+
+commit 9ab929ca2d820520327b41929372bcb9e261534c
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Jul 20 03:29:14 2022 +0000
+
+ upstream: when enrolling a resident key on a security token, check
+
+ if a credential with matching application and user ID strings already exists.
+ if so, prompt the user for confirmation before overwriting the credential.
+
+ patch from Pedro Martelletto via GHPR329
+
+ NB. cranks SSH_SK_VERSION_MAJOR, so any third-party FIDO middleware
+ implementations will need to adjust
+
+ OpenBSD-Commit-ID: e45e9f1bf2b2f32d9850669e7a8dbd64acc5fca4
+
+commit 5bcfc788b38d5b64e4c347bdc04bd9a01bbc36da
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Jul 20 03:13:04 2022 +0000
+
+ upstream: pull passphrase reading and confirmation into a separate
+
+ function so it can be used for FIDO2 PINs; no functional change
+
+ OpenBSD-Commit-ID: bf34f76b8283cc1d3f54633e0d4f13613d87bb2f
+
+commit eb679e2959bdb15454eb94751930eb4c9110da94
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 15 21:31:48 2022 +1000
+
+ Move vmshutdown to first step.
+
+ If a previous run on a physical runner has failed to clean up, the next
+ run will fail because it'll try to check out the code to a broken
+ directory mount. Make cleanup the first step.
+
+commit 46b91b70ff3cb9c147e2875ef5dc609fd64c0c96
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 15 20:25:27 2022 +1000
+
+ Rename bbone test target to ARM.
+
+commit 751d22cdeffed9fe921db78eedc32a29f9e80510
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 15 13:37:29 2022 +1000
+
+ Add AUDIT_ARCH_PPC to supported seccomp arches.
+
+ Patch from dries.deschout at dodeco.eu.
+
+commit a061792a6e8d235fc40a9b5d4c22a1762bb75a7b
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Jul 14 19:20:24 2022 +1000
+
+ Remove unintended changes.
+
+ I inadvertently included a couple of local changes with the OpenSSL
+ 3.0.4 change. Revert, anything that should be there will be committed
+ separately.
+
+commit 527cb43fa1b4e55df661feabbac51b8e608b6519
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Jul 14 11:22:08 2022 +1000
+
+ Return ERANGE from getcwd() if buffer size is 1.
+
+ If getcwd() is supplied a buffer size of exactly 1 and a path of "/", it
+ could result in a nul byte being written out of array bounds. POSIX says
+ it should return ERANGE if the path will not fit in the available buffer
+ (with terminating nul). 1 byte cannot fit any possible path with its nul,
+ so immediately return ERANGE in that case.
+
+ OpenSSH never uses getcwd() with this buffer size, and all current
+ (and even quite old) platforms that we are currently known to work
+ on have a native getcwd() so this code is not used on those anyway.
+ Reported by Qualys, ok djm@
+
+commit 36857fefd8849c4b0e877cfd9d1eb22f79b76650
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Jul 14 10:02:35 2022 +1000
+
+ Split README.platform into its own line.
+
+ README.platform has general platform-specific information, having it
+ following text about FIDO2 on the same line could imply that it only
+ has information about FIDO2.
+
+commit 00a496c6c14f2d41f2a9365714d494dd5f3aac9f
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Thu Jul 14 09:56:01 2022 +1000
+
+ Clarify README.md text.
+
+ Clarify the text about the implications of building without OpenSSL, and
+ prefix the "configure --help" example command with a "./" so it's likely
+ to work as-is in more shells. From bz#3461.
+
+commit f40b52f21fbc52eb513279168a49d3285c65256c
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 12 19:48:44 2022 +1000
+
+ Remove special casing of crypt().
+
+ Configure goes to some lengths to pick crypt() from either libcrypt
+ or OpenSSL's libcrypto because they can more or less featureful (eg
+ supporting md5-style passwords).
+
+ OpenSSL removed its crypt() interface in 2002:
+ https://github.com/openssl/openssl/commit/69deec58 so these hijinks
+ should no longer be necessary. This also only links sshd with libcrypt
+ which is the only thing that needs it. ok djm@
+
+commit 76f4e48631d7b09fb243b47d7b393d100d3741b7
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Jul 13 13:17:47 2022 +1000
+
+ Only refuse to use OpenSSL 3.0.4 on x86_64.
+
+ The potential RCE only impacts x86_64, so only refuse to use it if we're
+ targetting a potentially impacted architecture. ok djm@
+
+commit e75bbc1d88491fa85e61b2cc8783d4bbd00cd131
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 12 14:37:15 2022 +1000
+
+ Capture stderr output from configure.
+
+commit d9eaea4bea6271bcee6a2b9428f1271faf2d033b
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 12 12:54:49 2022 +1000
+
+ Refuse to use OpenSSL 3.0.4 due to potential RCE.
+
+ OpenSSL has a potential RCE in its RSA implementation (CVE-2022-2274)
+ so refuse to use that specific version.
+
+commit fb2f3a61bf3d28fff285524535f7ffcd177c9235
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 12 12:54:24 2022 +1000
+
+ Move unset to before we set anything.
+
+commit c483a5c0fb8e8b8915fad85c5f6113386a4341ca
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Jul 6 11:52:54 2022 +1000
+
+ Test against openssl-3.0.5.
+
+commit 669a56bcfe73f8b985f2bba476ba834d55253acf
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 5 18:35:53 2022 +1000
+
+ Update sanitizer test targets:
+
+ - remove clang-sanitize-memory for now. It takes so long that the test
+ times out.
+ - add gcc sanitize-address and sanitize-undefined test targets.
+
+commit 48cc68b69118b3ce8d07fd4f82e00d58667d5379
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 5 16:23:28 2022 +1000
+
+ Add GCC address sanitizer build/test.
+
+commit 55c60bdd39b82457e92efa77da8d16cfa6a49391
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Jul 5 12:02:33 2022 +1000
+
+ Move sanitizer logs into regress for collection.
+
+commit 35ef2b3b6ef198f8574904a45780487ec2f17858
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Mon Jul 4 09:10:31 2022 +0000
+
+ upstream: Add TEST_REGRESS_CACHE_DIR.
+
+ If set, it is used to cache regress test names that have succeeded and
+ skip those on a re-run.
+
+ OpenBSD-Regress-ID: a7570dd29a58df59f2cca647c3c2ec989b49f247
+
+commit 7394ed80c4de8b228a43c8956cf2fa1b9c6b2622
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sun Jul 3 21:46:44 2022 +1000
+
+ Add clang sanitizer tests.
+
+commit bfce0e66b6017a9bfab450b9dc7d4b16f90de817
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sun Jul 3 18:14:09 2022 +1000
+
+ Skip all rlimit tests when sandboxing disabled.
+
+ The rlimit tests can hang when being run with some compiler sanitizers
+ so skip all of them if sandbox=no.
+
+commit 6208d611520f9ea94d5369f9da404b709930029d
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sun Jul 3 17:54:49 2022 +1000
+
+ Move checks for pollfd.fd and nfds_t.
+
+ Move the checks for struct pollfd.fd and nfds_t to before the sandboxing
+ checks. This groups all the sandbox checks together so we can skip them
+ all when sandboxing is disabled.
+
+commit 322964f8f2e9c321e77ebae1e4d2cd0ccc5c5a0b
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jul 1 05:08:23 2022 +0000
+
+ upstream: Remove leftover line.
+
+ Remove extra line leftover from merge conflict. ok djm@
+
+ OpenBSD-Commit-ID: 460e2290875d7ae64971a7e669c244b1d1c0ae2e
+
+commit 7ec81daad0e03a64e8d91c5590960c48c1a899a3
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jul 1 04:45:50 2022 +0000
+
+ upstream: use consistent field names (s/char/byte)
+
+ in format description
+
+ OpenBSD-Commit-ID: 3de33572733ee7fcfd7db33d37db23d2280254f0
+
+commit 32e82a392d9f263485effdd606ff5862d289a4a0
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Jul 1 13:55:19 2022 +1000
+
+ Skip select+rlimit check if sandboxing is disabled
+
+ It's not needed in that case, and the test can fail when being built
+ with some compiler memory sanitizer flags. bz#3441
+
+commit 4be7184ebe2a2ccef175983517a35ee06766e1b4
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jul 1 03:52:57 2022 +0000
+
+ upstream: bump up loglevel from debug to info when unable to open
+
+ authorized keys/principals file for errno != ENOENT; bz2042 ok dtucker
+
+ OpenBSD-Commit-ID: e79aa550d91ade6a80f081bda689da24c086d66b
+
+commit 6c31ba10e97b6953c4f325f526f3e846dfea647a
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jul 1 03:39:44 2022 +0000
+
+ upstream: Don't leak the strings allocated by order_hostkeyalgs()
+
+ and list_hostkey_types() that are passed to compat_pkalg_proposal(). Part of
+ github PR#324 from ZoltanFridrich, ok djm@
+
+ This is a roll-forward of the previous rollback now that the required
+ changes in compat.c have been done.
+
+ OpenBSD-Commit-ID: c7cd93730b3b9f53cdad3ae32462922834ef73eb
+
+commit 486c4dc3b83b4b67d663fb0fa62bc24138ec3946
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jul 1 03:35:45 2022 +0000
+
+ upstream: Always return allocated strings from the kex filtering so
+
+ that we can free them later. Fix one leak in compat_kex_proposal. Based on
+ github PR#324 from ZoltanFridrich with some simplications by me. ok djm@
+
+ OpenBSD-Commit-ID: 9171616da3307612d0ede086fd511142f91246e4
+
+commit 96faa0de6c673a2ce84736eba37fc9fb723d9e5c
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jul 1 00:36:30 2022 +0000
+
+ upstream: ignore SIGPIPE earlier in main(), specifically before
+
+ muxclient() which performs operations that could cause one; Reported by Noam
+ Lewis via bz3454, ok dtucker@
+
+ OpenBSD-Commit-ID: 63d8e13276869eebac6d7a05d5a96307f9026e47
+
+commit 33efac790f6b09d54894ba6c3e17dfb08b6fc7e1
+Author: jmc@openbsd.org <jmc@openbsd.org>
+Date: Tue Jun 28 06:09:14 2022 +0000
+
+ upstream: reflect the update to -D arg name in usage();
+
+ OpenBSD-Commit-ID: abdcde4f92b1ef094ae44210ee99d3b0155aad9c
+
+commit c71a1442d02f0a3586109dfe2cb366de36dee08e
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Wed Jun 29 18:28:47 2022 +1000
+
+ Update OpenSSL tests to the most recent releases.
+
+commit 2a822f29300b2de7335fbff65f0b187a0c582304
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Jun 27 21:41:55 2022 +0000
+
+ upstream: allow arguments to sftp -D option, e.g. sftp -D
+
+ "/usr/libexec/sftp-server -el debug3"
+
+ ok markus@
+
+ OpenBSD-Commit-ID: 5a002b9f3a7aef2731fc0ffa9c921cf15f38ecce
+
+commit 2369a2810187e08f2af5d58b343956062fb96ee8
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jun 24 10:45:06 2022 +0000
+
+ upstream: Roll back previous KEX changes as they aren't safe until
+
+ compat_pkalg_proposal and friends always allocate their returned strings.
+ Reported by Qualys.
+
+ OpenBSD-Commit-ID: 1c7a88a0d5033f42f88ab9bec58ef1cf72c81ad0
+
+commit 646686136c34c2dbf6a01296dfaa9ebee029386d
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jun 24 04:37:00 2022 +0000
+
+ upstream: Don't leak the strings allocated by order_hostkeyalgs()
+
+ and list_hostkey_types() that are passed to compat_pkalg_proposal(). Part of
+ github PR#324 from ZoltanFridrich, ok djm@
+
+ OpenBSD-Commit-ID: b2f6e5f60f2bba293b831654328a8a0035ef4a1b
+
+commit 193c6d8d905dde836b628fc07a7b9cf2d347e2a3
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Jun 25 12:16:15 2022 +1000
+
+ Zero out LIBFIDO2 when SK support not usable.
+
+ Prevents us from trying to link them into ssh-sk-helper and failing to
+ build.
+
+commit 40f5d849d25c60b4ae21261e78484d435f5cfd51
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Jun 25 11:47:28 2022 +1000
+
+ Disable SK support if FIDO libs not found.
+
+commit 5fd922ade1b25880fe8a8249f5c0385e413108f9
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri Jun 24 14:43:54 2022 +1000
+
+ fix broken case statement in previous
+
+commit f51423bdaf0008d46b6af082bcfd7a22a87375f0
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri Jun 24 14:40:42 2022 +1000
+
+ request 1.1x API compatibility for OpenSSL >=3.x
+
+ idea/patch from Pedro Martelletto via GHPR#322; ok dtucker@
+
+commit 455cee8d6c2e4c48c5af9faead3599c49948411e
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jun 24 04:27:14 2022 +0000
+
+ upstream: make it clear that RekeyLimit applies to both transmitted
+
+ and received data. GHPR#328 from Jan Pazdziora
+
+ OpenBSD-Commit-ID: d180a905fec9ff418a75c07bb96ea41c9308c3f9
+
+commit 17904f05802988d0bb9ed3c8d1d37411e8f459c3
+Author: tobhe@openbsd.org <tobhe@openbsd.org>
+Date: Tue Jun 21 14:52:13 2022 +0000
+
+ upstream: Make sure not to fclose() the same fd twice in case of an
+
+ error.
+
+ ok dtucker@
+
+ OpenBSD-Commit-ID: e384c4e05d5521e7866b3d53ca59acd2a86eef99
+
+commit f29d6cf98c25bf044079032d22c1a57c63ab9d8e
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Sat Jun 18 02:17:16 2022 +0000
+
+ upstream: Don't attempt to fprintf a null identity comment. From
+
+ Martin Vahlensieck via tech@.
+
+ OpenBSD-Commit-ID: 4c54d20a8e8e4e9912c38a7b4ef5bfc5ca2e05c2
+
+commit ad1762173bb38716a106e8979806149fd0f2753e
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jun 17 01:00:03 2022 +0000
+
+ upstream: Log an error if pipe() fails while accepting a
+
+ connection. bz#3447, from vincent-openssh at vinc17 net, ok djm@
+
+ OpenBSD-Commit-ID: 9d59f19872b94900a5c79da2d57850241ac5df94
+
+commit 9c59e7486cc8691401228b43b96a3edbb06e0412
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri Jun 24 14:20:43 2022 +1000
+
+ automatically enable built-in FIDO support
+
+ If libfido2 is found and usable, then enable the built-in
+ security key support unless --without-security-key-builtin
+ was requested.
+
+ ok dtucker@
+
+commit 7d25b37fb2a5ff4dadabcbdac6087a97479434f5
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri Jun 24 13:46:39 2022 +1000
+
+ fix possible NULL deref when built without FIDO
+
+ Analysis/fix from kircher in bz3443; ok dtucker@
+
+commit f5ba85daddfc2da6a8dab6038269e02c0695be44
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Jun 15 16:08:25 2022 +0000
+
+ upstream: make sure that UseDNS hostname lookup happens in the monitor
+
+ and not in the pledge(2)'d unprivileged process; fixes regression caused by
+ recent refactoring spotted by henning@
+
+ OpenBSD-Commit-ID: a089870b95101cd8881a2dff65b2f1627d13e88d
+
+commit acb2059febaddd71ee06c2ebf63dcf211d9ab9f2
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jun 3 04:47:21 2022 +0000
+
+ upstream: move auth_openprincipals() and auth_openkeyfile() over to
+
+ auth2-pubkeyfile.c too; they make more sense there.
+
+ OpenBSD-Commit-ID: 9970d99f900e1117fdaab13e9e910a621b7c60ee
+
+commit 3d9b0845f34510111cc693bb99a667662ca50cd8
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jun 3 04:31:54 2022 +0000
+
+ upstream: test setenv in both client and server, test first-match-wins
+
+ too
+
+ OpenBSD-Regress-ID: 4c8804f9db38a02db480b9923317457b377fe34b
+
+commit 22e1a3a71ad6d108ff0c5f07f93c3fcbd30f8b40
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Jun 3 04:30:46 2022 +0000
+
+ upstream: Make SetEnv directives first-match-wins in both
+
+ sshd_config and sshd_config; previously if the same name was reused then the
+ last would win (which is the opposite to how the config is supposed to work).
+
+ While there, make the ssh_config parsing more like sshd_config.
+
+ bz3438, ok dtucker
+
+ OpenBSD-Commit-ID: 797909c1e0262c0d00e09280459d7ab00f18273b
+
+commit 38ed6c57e9e592c08e020fa6e82b45b4e1040970
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jun 3 04:00:15 2022 +0000
+
+ upstream: Add missing *-sk types to ssh-keyscan manpage. From
+
+ skazi0 via github PR#294.
+
+ OpenBSD-Commit-ID: fda2c869cdb871f3c90a89fb3f985370bb5d25c0
+
+commit ea97ec98c41ec2b755dfab459347db674ff9a5de
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jun 3 03:21:09 2022 +0000
+
+ upstream: Add period at end of "not known by any other names"
+
+ message. github PR#320 from jschauma, ok djm@
+
+ OpenBSD-Commit-ID: bd60809803c4bfd3ebb7c5c4d918b10e275266f2
+
+commit 88e376fcd67478ad1660d94bc73ab348ac9f4527
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Jun 3 03:17:42 2022 +0000
+
+ upstream: ssh-keygen -A: do not generate DSA keys by default.
+
+ Based on github PR#303 from jsegitz with man page text from jmc@, ok markus@
+ djm@
+
+ OpenBSD-Commit-ID: 5c4c57bdd7063ff03381cfb6696659dd3f9f5b9f
+
+commit 6b3fb624675082a1e5aa615d1b8479873d8b5731
+Author: naddy@openbsd.org <naddy@openbsd.org>
+Date: Tue May 31 14:05:12 2022 +0000
+
+ upstream: ssh-keygen: implement "verify-required" certificate option.
+
+ This was already documented when support for user-verified FIDO
+ keys was added, but the ssh-keygen(1) code was missing.
+
+ ok djm@
+
+ OpenBSD-Commit-ID: f660f973391b593fea4b7b25913c9a15c3eb8a06
+
+commit b7f86ffc301be105bba9a3e0618b6fab3ae379bd
+Author: jmc@openbsd.org <jmc@openbsd.org>
+Date: Sat May 28 05:57:56 2022 +0000
+
+ upstream: keywords ref ssh_config.5;
+
+ from caspar schutijser
+
+ OpenBSD-Commit-ID: f146a19d7d5c9374c3b9c520da43b2732d7d1a4e
+
+commit dc7bc52372f2744fa39191577be5306ee57aacd4
+Author: Damien Miller <djm@mindrot.org>
+Date: Mon May 30 09:29:09 2022 +1000
+
+ fix some bugs in the fuzzer
+
+commit 1781f507c113667613351c19898efaf1e311a865
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri May 27 18:19:48 2022 +1000
+
+ Test against OpenSSL 1.1.1o and 3.0.3.
+
+commit c53906e0c59e569691b4095d3e8db79cf78fa058
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri May 27 18:18:31 2022 +1000
+
+ Test against LibreSSL 3.5.3.
+
+commit 9b3ad432ad2f19319bcc089370e356c6315d682f
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri May 27 17:00:43 2022 +1000
+
+ fuzzer for authorized_keys parsing
+
+ mostly redundant to authopt_fuzz, but it's sensitive code so IMO it
+ makes sense to test this layer too
+
+commit c83d8c4d6f3ccceef84d46de107f6b71cda06359
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri May 27 05:02:46 2022 +0000
+
+ upstream: split the low-level file handling functions out from
+
+ auth2-pubkey.c
+
+ Put them in a new auth2-pubkeyfile.c to make it easier to refer to them
+ (e.g. in unit/fuzz tests) without having to refer to everything else
+ pubkey auth brings in.
+
+ ok dtucker@
+
+ OpenBSD-Commit-ID: 3fdca2c61ad97dc1b8d4a7346816f83dc4ce2217
+
+commit 3b0b142d2a0767d8cd838e2f3aefde8a0aaa41e1
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri May 27 05:01:25 2022 +0000
+
+ upstream: refactor authorized_keys/principals handling
+
+ remove "struct ssh *" from arguments - this was only used to pass the
+ remote host/address. These can be passed in instead and the resulting
+ code is less tightly coupled to ssh_api.[ch]
+
+ ok dtucker@
+
+ OpenBSD-Commit-ID: 9d4373d013edc4cc4b5c21a599e1837ac31dda0d
+
+commit 2c334fd36f80cb91cc42e4b978b10aa35e0df236
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri May 27 04:29:40 2022 +0000
+
+ upstream: f sshpkt functions fail, then password is not cleared
+
+ with freezero. Unconditionally call freezero to guarantee that password is
+ removed from RAM.
+
+ From tobias@ and c3h2_ctf via github PR#286, ok djm@
+
+ OpenBSD-Commit-ID: 6b093619c9515328e25b0f8093779c52402c89cd
+
+commit 5d3a77f4c5ae774c6796387266503f52c7cdc7c2
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri May 27 04:27:49 2022 +0000
+
+ upstream: Avoid kill with -1 argument. The out_ctx label can be
+
+ reached before fork has been called. If this happens, then kill -1 would be
+ called, sending SIGTERM to all processes reachable by the current process.
+
+ From tobias@ and c3h2_ctf via github PR#286, ok djm@
+
+ OpenBSD-Commit-ID: 6277af1207d81202f5daffdccfeeaed4c763b1a8
+
+commit 533b31cd08e4b97f455466f91c36915e2924c15a
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri May 27 04:13:24 2022 +0000
+
+ upstream: Note that ProxyJump also accepts the same tokens as
+
+ ProxyCommand. From pallxk via github PR#305.
+
+ OpenBSD-Commit-ID: 7115ac351b129205f1f1ffa6bbfd62abd76be7c5
+
+commit 9d8c80f8a304babe61ca28f2e3fb5eb6dc9c39bf
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed May 25 06:03:44 2022 +0000
+
+ upstream: revert previous; it was broken (spotted by Theo)
+
+ OpenBSD-Commit-ID: 457c79afaca2f89ec2606405c1059b98b30d8b0d
+
+commit 9e0d02ef7ce88b67643bfb1c2272c9f5f04cc680
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed May 25 00:31:13 2022 +0000
+
+ upstream: make SSHBUF_DBG/SSHBUF_TELL (off by default and only enabled
+
+ via #define) dump to stderr rather than stdout
+
+ OpenBSD-Commit-ID: 10298513ee32db8390aecb0397d782d68cb14318
+
+commit 2487163630f28be28b7e2396b4bd6511b98f1d3e
+Author: Tim Rice <tim@multitalents.net>
+Date: Tue May 24 10:21:25 2022 -0700
+
+ configure.ac: Add missing AC_DEFINE for caph_cache_tzdata test causing
+ HAVE_CAPH_CACHE_TZDATA to be missing from config.h.in.
+ Spotted by Bryan Drewery
+
+commit bedb93415b60db3dfd704a3d525e82adb14a2481
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sun May 15 23:48:07 2022 +0000
+
+ upstream: regress test for in-place transfers and clobbering larger
+
+ files with smaller ones; would have caught last regression in scp(1)
+
+ OpenBSD-Regress-ID: 19de4e88dd3a4f7e5c1618c9be3c32415bd93bc2
+
+commit b4f0d719c2548cb74da509fb65f384dada4ebd37
+Author: anton@openbsd.org <anton@openbsd.org>
+Date: Fri Apr 22 05:08:43 2022 +0000
+
+ upstream: Only run agent-ptrace.sh if gdb is available as all
+
+ architectures do not ship with gdb.
+
+ OpenBSD-Regress-ID: ec53e928803e6b87f9ac142d38888ca79a45348d
+
+commit 9b73345f80255a7f3048026462f2c0c6a241eeac
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sun May 15 23:47:21 2022 +0000
+
+ upstream: fix in-place copies; r1.163 incorrectly skipped truncation in
+
+ all cases, not just at the start of a transfer. This could cause overwrites
+ of larger files to leave junk at the end. Spotted by tb@
+
+ OpenBSD-Commit-ID: b189f19cd68119548c8e24e39c79f61e115bf92c
+
+commit 56a0697fe079ff3e1ba30a2d5c26b5e45f7b71f8
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri May 13 06:31:50 2022 +0000
+
+ upstream: arrange for scp, when in sftp mode, to not ftruncate(3) files
+
+ early
+
+ previous behavious of unconditionally truncating the destination file
+ would cause "scp ~/foo localhost:" and "scp localhost:foo ~/" to
+ delete all the contents of their destination.
+
+ spotted by solene@ sthen@, also bz3431; ok dtucker@
+
+ OpenBSD-Commit-ID: ca39fdd39e0ec1466b9666f15cbcfddea6aaa179
+
+commit fbcef70c2832712f027bccea1aa9bc4b4103da93
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Mon May 9 08:25:27 2022 +0000
+
+ upstream: Remove errant apostrophe. From haruyama at queen-ml org.
+
+ OpenBSD-Commit-ID: dc6b294567cb84b384ad6ced9ca469f2bbf0bd10
+
+commit 0086a286ea6bbd11ca9b664ac3bb12b27443d6eb
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon May 9 03:09:53 2022 +0000
+
+ upstream: Allow existing -U (use agent) flag to work with "-Y sign"
+
+ operations, where it will be interpreted to require that the private keys is
+ hosted in an agent; bz3429, suggested by Adam Szkoda; ok dtucker@
+
+ OpenBSD-Commit-ID: a7bc69873b99c32c42c7628ed9ea91565ba08c2f
+
+commit cb010744cc98f651b1029bb09efa986eb54e4ccf
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sun May 8 22:58:35 2022 +0000
+
+ upstream: improve error message when 'ssh-keygen -Y sign' is unable to
+
+ load a private key; bz3429, reported by Adam Szkoda ok dtucker@
+
+ OpenBSD-Commit-ID: bb57b285e67bea536ef81b1055467be2fc380e74
+
+commit aa61fc82c63d309a90c22ca74fb1da6c6f4372fd
+Author: Tobias Heider <me@tobhe.de>
+Date: Mon May 9 02:00:01 2022 +0200
+
+ Remove duplicate bcrypt_pbkdf.o from Makefile
+
+ bcrypt_pbkdf.o is duplicated in the openbsd-compat Makefile's object
+ file list.
+
+commit deb506d00da8d11fb04c1e7b9b1e1cc379c1705c
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sun May 8 22:32:36 2022 +0000
+
+ upstream: When performing operations that glob(3) a remote path, ensure
+
+ that the implicit working directory used to construct that path escapes
+ glob(3) characters.
+
+ This prevents glob characters from being processed in places they
+ shouldn't, e.g. "cd /tmp/a*/", "get *.txt" should have the get operation
+ treat the path "/tmp/a*" literally and not attempt to expand it.
+
+ Reported by Lusia Kundel; ok markus@
+
+ OpenBSD-Commit-ID: 4f647f58482cbad3d58b1eab7f6a1691433deeef
+
+commit f38cf74f20b5da113cfa823afd5bfb5c6ba65f3d
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri May 6 14:50:18 2022 +1000
+
+ Also retest OpenBSD upstream on .yml changes.
+
+commit f87a132800ba3710ab130d703448a31ef1128d77
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri May 6 14:46:09 2022 +1000
+
+ Note that, for now, we need variadic macros.
+
+commit 217b518e0f7c52c4b909e935141a55344c61e644
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri May 6 14:39:34 2022 +1000
+
+ Add ubsan minimal testcase on OpenBSD.
+
+ As suggested by djm@.
+
+commit 457dce2cfef6a48f5442591cd8b21c7e8cba13f8
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu May 5 01:04:14 2022 +0000
+
+ upstream: sshkey_unshield_private() contains a exact duplicate of
+
+ the code in private2_check_padding(). Pull private2_check_padding() up so the
+ code can be reused. From Martin Vahlensieck, ok deraadt@
+
+ OpenBSD-Commit-ID: 876884c3f0e62e8fd8d1594bab06900f971c9c85
+
+commit 0e44db4d9cb313e68a59a44d27884af66c02356e
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu May 5 00:56:58 2022 +0000
+
+ upstream: channel_new no longer frees remote_name. So update the
+
+ comment accordingly. As remote_name is not modified, it can be const as
+ well. From Martin Vahlensieck
+
+ OpenBSD-Commit-ID: e4e10dc8dc9f40c166ea5a8e991942bedc75a76a
+
+commit 37b62fd5caf19c85a48241535277cefff65adace
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu May 5 00:55:11 2022 +0000
+
+ upstream: mux.c: mark argument as const; from Martin Vahlensieck
+
+ OpenBSD-Commit-ID: 69a1a93a55986c7c2ad9f733c093b46a47184341
+
+commit f4e67c0ad259b4cf10177277a5827fa5545bac53
+Author: markus@openbsd.org <markus@openbsd.org>
+Date: Wed May 4 07:31:22 2022 +0000
+
+ upstream: make sure stdout is non-blocking; ok djm@
+
+ OpenBSD-Commit-ID: 64940fffbd1b882eda2d7c8c7a43c79368309c0d
+
+commit e5c036d2092c00bef395e9161dc5ce42d4be9565
+Author: florian@openbsd.org <florian@openbsd.org>
+Date: Tue May 3 07:42:27 2022 +0000
+
+ upstream: Add FIDO AUTHENTICATOR section and explain a bit how FIDO
+
+ works. The wording came mostly from the 8.2 OpenSSH release notes, addapted
+ to fit the man page. Then move the -O bits into the new section as is already
+ done for CERTIFICATES and MODULI GENERATION. Finally we can explain the
+ trade-offs of resident keys. While here, consistently refer to the FIDO
+ thingies as "FIDO authenticators", not "FIDO tokens".
+
+ input & OK jmc, naddy
+
+ OpenBSD-Commit-ID: dd98748d7644df048f78dcf793b3b63db9ab1d25
+
+commit 575771bf79bef7127be6aaccddc46031ea15529e
+Author: jmc@openbsd.org <jmc@openbsd.org>
+Date: Mon May 2 05:40:37 2022 +0000
+
+ upstream: remove an obsolete rsa1 format example from an example;
+
+ from megan batty
+ ok djm
+
+ OpenBSD-Commit-ID: db2c89879c29bf083df996bd830abfb1e70d62bf
+
+commit 0bc6b4c8f04e292577bdb44d5dc6b630d3448087
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Sun May 1 23:20:30 2022 +0000
+
+ upstream: fix some integer overflows in sieve_large() that show up when
+
+ trying to generate modp groups > 16k bits. Reported via GHPR#306 by Bertram
+ Felgenhauer, but fixed in a different way. feedback/ok tb@
+
+ OpenBSD-Commit-ID: 81cbc6dd3a21c57bd6fadea10e44afe37bca558e
+
+commit a45615cb172bc827e21ec76750de39dfb30ecc05
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Apr 29 04:55:07 2022 +0000
+
+ upstream: be stricter in which characters will be accepted in
+
+ specifying a mask length; allow only 0-9. From khaleesicodes via GHPR#278; ok
+ dtucker@
+
+ OpenBSD-Commit-ID: e267746c047ea86665cdeccef795a8a56082eeb2
+
+commit 4835544d2dd31de6ffc7dba59f92093aea98155b
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Apr 30 10:56:41 2022 +1000
+
+ Add Mac OS X 12 test target.
+
+commit 97a6a8b8c1f2da09712d0e72d0ef800e4edd34cd
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Apr 29 18:27:34 2022 +1000
+
+ Only run tests when source files change.
+
+ Also run tests on changes to V_9_0 branch.
+
+commit 6d0392b9ff4b50a56ac5685d1b9392e2cd432ca3
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Fri Apr 29 18:22:34 2022 +1000
+
+ Remove now-empty int32_minmax.inc.
+
+commit af59463553b5ad52d3b42c4455ee3c5600158bb7
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Apr 29 03:24:30 2022 +0000
+
+ upstream: mention that the helpers are used by ssh(1), ssh-agent(1)
+
+ and ssh-keygen(1). Previously only ssh(1) was mentioned. From Pedro
+ Martelletto
+
+ OpenBSD-Commit-ID: 30f880f989d4b329589c1c404315685960a5f153
+
+commit 3e26b3a6eebcee27be177207cc0846fb844b7a56
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Apr 29 03:16:48 2022 +0000
+
+ upstream: Don't leak SK device. Patch from Pedro Martelletto via
+
+ github PR#316. ok djm@
+
+ OpenBSD-Commit-ID: 17d11327545022e727d95fd08b213171c5a4585d
+
+commit 247082b5013f0d4fcae8f97453f2a2f01bcda811
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Apr 29 03:13:32 2022 +0000
+
+ upstream: fix memleak on session-bind path; from Pedro Martelletto, ok
+
+ dtucker@
+
+ OpenBSD-Commit-ID: e85899a26ba402b4c0717b531317e8fc258f0a7e
+
+commit e05522008092ceb86a87bdd4ad7878424315db89
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu Apr 28 02:53:31 2022 +0000
+
+ upstream: avoid printing hash algorithm twice; from lucas AT sexy.is
+
+ OpenBSD-Commit-ID: 9d24671e10a84141b7c504396cabad600e47a941
+
+commit 0979e29356915261d69a9517a1e0aaade7c9fc75
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Wed Apr 27 11:08:55 2022 +0000
+
+ upstream: Add authfd path to debug output. ok markus@
+
+ OpenBSD-Commit-ID: f735a17d1a6f2bee63bfc609d76ef8db8c090890
+
+commit 67b7c784769c74fd4d6b147d91e17e1ac1a8a96d
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Tue Apr 26 07:41:44 2022 +0000
+
+ upstream: Check sshauthopt_new() for NULL. bz#3425, from
+
+ tessgauthier at microsoft.com. ok djm@
+
+ OpenBSD-Commit-ID: af0315bc3e44aa406daa7e0ae7c2d719a974483f
+
+commit d571314d14b919fbd7c84a61f9bf2065fc0a6841
+Author: millert@openbsd.org <millert@openbsd.org>
+Date: Wed Apr 20 16:00:25 2022 +0000
+
+ upstream: Remove unnecessary includes: openssl/hmac.h and
+
+ openssl/evp.h. From Martin Vahlensieck.
+
+ OpenBSD-Commit-ID: a6debb5fb0c8a44e43e8d5ca7cc70ad2f3ea31c3
+
+commit da8dddf8cc1f2516ff894b8183e83a7c5ba3ef80
+Author: millert@openbsd.org <millert@openbsd.org>
+Date: Wed Apr 20 15:59:18 2022 +0000
+
+ upstream: Add missing includes of stdlib.h and stdint.h. We need
+
+ stdlib.h for malloc(3) and stdint.h for SIZE_MAX. Unlike the other xmss
+ files, ssh-xmss.c does not include xmss_commons.h so ssh-xmss.c must include
+ those headers itself. From Martin Vahlensieck
+
+ OpenBSD-Commit-ID: 70e28a9818cee3da1be2ef6503d4b396dd421e6b
+
+commit fe9d87a6800a7a33be08f4d5ab662a758055ced2
+Author: millert@openbsd.org <millert@openbsd.org>
+Date: Wed Apr 20 15:56:49 2022 +0000
+
+ upstream: Avoid an unnecessary xstrdup in rm_env() when matching
+
+ patterns. Since match_pattern() doesn't modify its arguments (they are
+ const), there is no need to make an extra copy of the strings in
+ options->send_env. From Martin Vahlensieck
+
+ OpenBSD-Commit-ID: 2c9db31e3f4d3403b49642c64ee048b2a0a39351
+
+commit 7bf2eb958fbb551e7d61e75c176bb3200383285d
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Tue Apr 26 23:30:59 2022 +1000
+
+ Add debian-riscv64 test target.
+
+commit 3913c935523902482974c4c503bcff20bd850a6a
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Mon Apr 25 17:20:06 2022 +1000
+
+ Update OpenSSL and LibreSSL versions in tests.
+
+commit dcd8dca29bcdb193ff6be35b96fc55e6e30d37d9
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Apr 23 20:40:28 2022 +1000
+
+ Include stdlib.h for free() prototype.
+
+ ... which is used inside the CUSTOM_SYS_AUTH_GET_LASTLOGIN_MSG block.
+
+commit 4cc05de568e1c3edd7834ff3bd9d8214eb34861b
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Apr 23 20:17:26 2022 +1000
+
+ Cache timezone data in capsicum sandbox.
+
+ From emaste at freebsd.org, originally part of FreeBSD commit r339216
+ / fc3c19a9 with autoconf bits added by me.
+
+commit c31404426d212e2964ff9e5e58e1d0fce3d83f27
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Thu Apr 21 01:36:46 2022 +0000
+
+ upstream: It looks like we can't completely avoid
+
+ waiting for processes to exit so retrieve the pid via controlmaster and
+ use that.
+
+ OpenBSD-Regress-ID: 8246f00f22b14e49d2ff1744c94897ead33d457b
+
+commit d19b21afab5c8e2f3df6bd8aee9766bdad3d8c58
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Wed Apr 20 13:25:55 2022 +0000
+
+ upstream: Use ssh -f and ControlPersist ..
+
+ to start up test forwards and ssh -O stop to shut them down intead of
+ sleep loops. This speeds up the test by an order of magnitude.
+
+ OpenBSD-Regress-ID: eb3db5f805100919b092a3b2579c611fba3e83e7
+
+commit 5f76286a126721fa005de6edf3d1c7a265555f19
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Wed Apr 20 05:24:13 2022 +0000
+
+ upstream: Simplify forward-control test.
+
+ Since we no longer need to support SSH1 we don't need to run shell
+ commands on the other end of the connection and can use ssh -N instead.
+ This also makes the test less racy.
+
+ OpenBSD-Regress-ID: 32e94ce272820cc398f30b848b2b0f080d10302c
+
+commit 687bbf23572d8bdf25cbbcdf8ac583514e1ba710
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Thu Mar 31 03:07:33 2022 +0000
+
+ upstream: regression test for sftp cp command
+
+ OpenBSD-Regress-ID: c96bea9edde3a384b254785e7f9b2b24a81cdf82
+
+commit f1233f19a6a9fe58f52946f50df4772f5b136761
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Wed Apr 20 01:13:47 2022 +0000
+
+ upstream: Import regenerated moduli
+
+ OpenBSD-Commit-ID: f9a0726d957cf10692a231996a1f34e7f9cdfeb0
+
+commit fec014785de198b9a325d1b94e324bb958c5fe7b
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Wed Apr 20 04:19:11 2022 +0000
+
+ upstream: Try to continue running local I/O for channels in state
+
+ OPEN during SSH transport rekeying. The most visible benefit is that it
+ should make ~-escapes work in the client (e.g. to exit) if the connection
+ happened to have stalled during a rekey event. Based work by and ok dtucker@
+
+ OpenBSD-Commit-ID: a66e8f254e92edd4ce09c9f750883ec8f1ea5f45
+
+commit e68154b0d4f0f5085a050ea896955da1b1be6e30
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Wed Apr 20 01:13:47 2022 +0000
+
+ upstream: Import regenerated moduli
+
+ OpenBSD-Commit-ID: f9a0726d957cf10692a231996a1f34e7f9cdfeb0
+
+commit 69928b106d8f0fa15b88cf3850d992ed81c44ae0
+Author: tj@openbsd.org <tj@openbsd.org>
+Date: Sat Apr 16 00:22:31 2022 +0000
+
+ upstream: list the correct version number
+
+ for when usage of the sftp protocol became default and fix a typo
+ from ed maste
+
+ OpenBSD-Commit-ID: 24e1795ed2283fdeacf16413c2f07503bcdebb31
+
+commit 21042a05c0b304c16f655efeec97438249d2e2cc
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Tue Apr 12 05:09:49 2022 +0000
+
+ upstream: Correct path for system known hosts file in description
+
+ of IgnoreUserKnownHosts. Patch from Martin Vahlensieck via tech@
+
+ OpenBSD-Commit-ID: 9b7784f054fa5aa4d63cb36bd563889477127215
+
+commit 53f4aff60a7c1a08a23917bd47496f8901c471f5
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Apr 16 14:33:20 2022 +1000
+
+ Resync moduli.5 with upstream.
+
+ 1.18: remove duplicate publication year; carsten dot kunze at arcor dot de
+ 1.19: ssh-keygen's -G/-T have been replaced with -M generate/screen.
+
+commit d2b888762b9844eb0d8eb59909cdf5af5159f810
+Author: Darren Tucker <dtucker@dtucker.net>
+Date: Sat Apr 16 14:31:13 2022 +1000
+
+ Retire fbsd6 test VM.
+
+ It's long since out of support, relatively slow (it's i686) and the
+ compiler has trouble with PIE.
+
+commit cd1f70009860a154b51230d367c55ea5f9a4504e
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Mon Apr 11 22:52:08 2022 +0000
+
+ upstream: clear io_want/io_ready flags at start of poll() cycle;
+
+ avoids plausible spin during rekeying if channel io_want flags are reused
+ across cycles. ok markus@ deraadt@
+
+ OpenBSD-Commit-ID: 91034f855b7c73cd2591657c49ac30f10322b967
+
+commit aa1920302778273f7f94c2091319aba199068ca0
+Author: dtucker@openbsd.org <dtucker@openbsd.org>
+Date: Fri Apr 8 05:43:39 2022 +0000
+
+ upstream: Note that curve25519-sha256 was later published in
+
+ RFC8731. ok djm@
+
+ OpenBSD-Commit-ID: 2ac2b5d642d4cf5918eaec8653cad9a4460b2743
+
+commit 4673fa8f2be983f2f88d5afd754adb1a2a39ec9e
+Author: djm@openbsd.org <djm@openbsd.org>
+Date: Fri Apr 8 04:40:40 2022 +0000
+
+ upstream: two defensive changes from Tobias Stoeckmann via GHPR287
+
+ enforce stricter invarient for sshbuf_set_parent() - never allow
+ a buffer to have a previously-set parent changed.
+
+ In sshbuf_reset(), if the reallocation fails, then zero the entire
+ buffer and not the (potentially smaller) default initial alloc size.
+
+ OpenBSD-Commit-ID: 14583203aa5d50ad38d2e209ae10abaf8955e6a9
+
+commit 26eef015e2d2254375e13afaaf753b78932b1bf5
+Author: Damien Miller <djm@mindrot.org>
+Date: Mon Apr 11 16:07:09 2022 +1000
+
+ Revert "update build-aux files to match autoconf-2.71"
+
+ This reverts commit 0a8ca39fac6ad19096b6c263436f8b2dd51606f2.
+
+ It turns out that the checked-in copies of these files are actually newer
+ than autoconf-2.71's copies, so this was effectively a downgrade.
+ Spotted by Bo Anderson via github
+
+commit 0a8ca39fac6ad19096b6c263436f8b2dd51606f2
+Author: Damien Miller <djm@mindrot.org>
+Date: Fri Apr 8 14:48:58 2022 +1000
+
+ update build-aux files to match autoconf-2.71
+
+ i.e. config.guess, config.sub and install-sh
+
commit 94eb6858efecc1b4f02d8a6bd35e149f55c814c8
Author: Damien Miller <djm@mindrot.org>
Date: Wed Apr 6 10:47:48 2022 +1000
@@ -9277,2613 +11312,3 @@ Date: Sun Oct 4 03:04:02 2020 +0000
found by booking00 at sina.cn, ok markus@
OpenBSD-Commit-ID: 373b7bbf1f15ae482d39567ce30d18b51c9229b5
-
-commit 396d32f3a1a16e54df2a76b2a9b237868580dcbe
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Oct 3 09:22:26 2020 +0000
-
- upstream: There are lots of place where we want to redirect stdin,
-
- stdout and/or stderr to /dev/null. Factor all these out to a single
- stdfd_devnull() function that allows selection of which of these to redirect.
- ok markus@
-
- OpenBSD-Commit-ID: 3033ba5a4c47cacfd5def020d42cabc52fad3099
-
-commit 1286981d08b8429a64613215ce8bff3f6b32488a
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Oct 3 08:30:47 2020 +0000
-
- upstream: enable UpdateHostkeys by default when the configuration
-
- has not overridden UserKnownHostsFile; ok markus@ "The timing is perfect"
- deraadt@
-
- OpenBSD-Commit-ID: 62df71c9c5242da5763cb473c2a2deefbd0cef60
-
-commit 332f21537293d66508f7342dc643bc7fe45f0f69
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Oct 3 08:12:59 2020 +0000
-
- upstream: disable UpdateHostkeys when a wildcard hostname pattern
-
- is encountered or when a certificate host key is in use. feedback/ok markus@
-
- OpenBSD-Commit-ID: b6e5575af7e6732322be82ec299e09051a5413bd
-
-commit 13cee44ef907824083d89cb9395adbbd552e46c1
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Oct 3 08:11:28 2020 +0000
-
- upstream: record when the host key checking code downgrades a
-
- certificate host key to a plain key. This occurs when the user connects to a
- host with a certificate host key but no corresponding CA key configured in
- known_hosts; feedback and ok markus@
-
- OpenBSD-Commit-ID: 2ada81853ff9ee7824c62f440bcf4ad62030c901
-
-commit 12ae8f95e2e0c273e9e7ef930b01a028ef796a3f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Oct 3 04:15:06 2020 +0000
-
- upstream: prefer ed25519 signature algorithm variants to ECDSA; ok
-
- markus@
-
- OpenBSD-Commit-ID: 82187926fca96d35a5b5afbc091afa84e0966e5b
-
-commit e5ed753add7aa8eed6b167e44db6240a76404db2
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Oct 3 03:40:38 2020 +0000
-
- upstream: want time.h here too
-
- OpenBSD-Commit-ID: fafee8f1108c64ad8b282f9a1ed5ea830d8c58a7
-
-commit 66bd9fdf8b7762eb6a85cabbb1ae4ed955679f60
-Author: deraadt@openbsd.org <deraadt@openbsd.org>
-Date: Sat Oct 3 02:18:33 2020 +0000
-
- upstream: split introductory paragraph, and insert ominous words about
-
- the glob issue, which cannot be fully fixed and really requires completely
- replacing scp with a completely different subsystem. team effort to find the
- right words..
-
- OpenBSD-Commit-ID: 58e1f72d292687f63eb357183036ee242513691c
-
-commit 86cc8ce002ea10e88a4c5d622a8fdfab8a7d261f
-Author: Damien Miller <djm@mindrot.org>
-Date: Sat Oct 3 13:38:55 2020 +1000
-
- use relative rather than system include here
-
-commit 922cfac5ed5ead9f796f7d39f012dd653dc5c173
-Author: Damien Miller <djm@mindrot.org>
-Date: Sat Oct 3 13:38:41 2020 +1000
-
- add some openbsd-compat licenses we missed
-
-commit ce941c75ea9cd6c358508a5b206809846c8d9240
-Author: Philip Hands <phil@hands.com>
-Date: Sat Oct 3 00:20:07 2020 +0200
-
- un-nest $() to make ksh cheerful
-
-commit 18ea5f4b88e303677d2003b95e5cb864b439e442
-Author: Philip Hands <phil@hands.com>
-Date: Fri Oct 2 21:30:10 2020 +0200
-
- ksh doesn't grok 'local'
-
- and AFAICT it's not actually doing anything useful in the code, so let's
- see how things go without it.
-
-commit d9e727dcc04a52caaac87543ea1d230e9e6b5604
-Author: Oleg <Fallmay@users.noreply.github.com>
-Date: Thu Oct 1 12:09:08 2020 +0300
-
- Fix `EOF: command not found` error in ssh-copy-id
-
-commit a1a856d50c89be3206f320baa4bfb32fff4e826f
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Sep 30 09:11:39 2020 +0000
-
- upstream: Regen moduli.
-
- OpenBSD-Commit-ID: 04967f8c43e9854ac34b917bcd6f5ac96c53a693
-
-commit fa1fe3ead7069d90d3c67d62137ad66acfcc9f48
-Author: HARUYAMA Seigo <haruyama@unixuser.org>
-Date: Sun Sep 27 20:06:20 2020 +0900
-
- Restore first section title of INSTALL
-
-commit 279261e1ea8150c7c64ab5fe7cb4a4ea17acbb29
-Author: Damien Miller <djm@mindrot.org>
-Date: Sun Sep 27 17:25:01 2020 +1000
-
- update version numbers
-
-commit 58ca6ab6ff035ed12b5078e3e9c7199fe72c8587
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sun Sep 27 07:22:05 2020 +0000
-
- upstream: openssh 8.4
-
- OpenBSD-Commit-ID: a29e5b372d2c00e297da8a35a3b87c9beb3b4a58
-
-commit 9bb8a303ce05ff13fb421de991b495930be103c3
-Author: Damien Miller <djm@mindrot.org>
-Date: Tue Sep 22 10:07:43 2020 +1000
-
- sync with upstream ssh-copy-id rev f0da1a1b7
-
-commit 0a4a5571ada76b1b012bec9cf6ad1203fc19ec8d
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Sep 21 07:29:09 2020 +0000
-
- upstream: close stdin when forking after authentication too; ok markus
-
- OpenBSD-Commit-ID: 43db17e4abc3e6b4a7b033aa8cdab326a7cb6c24
-
-commit d14fe25e6c3b89f8af17e2894046164ac3b45688
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sun Sep 20 23:31:46 2020 +0000
-
- upstream: close stdout/stderr after "ssh -f ..." forking
-
- bz#3137, ok markus
-
- OpenBSD-Commit-ID: e2d83cc4dea1665651a7aa924ad1ed6bcaaab3e2
-
-commit 53a33a0d745179c02108589e1722457ca8ae4372
-Author: Damien Miller <djm@mindrot.org>
-Date: Sun Sep 20 15:57:09 2020 +1000
-
- .depend
-
-commit 107eb3eeafcd390e1fa7cc7672a05e994d14013e
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sun Sep 20 05:47:25 2020 +0000
-
- upstream: cap channel input buffer size at 16MB; avoids high memory use
-
- when peer advertises a large window but is slow to consume the data we send
- (e.g. because of a slow network)
-
- reported by Pierre-Yves David
-
- fix with & ok markus@
-
- OpenBSD-Commit-ID: 1452771f5e5e768876d3bfe2544e3866d6ade216
-
-commit acfe2ac5fe033e227ad3a56624fbbe4af8b5da04
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Sep 18 22:02:53 2020 +1000
-
- libfido2 1.5.0 is recommended
-
-commit 52a03e9fca2d74eef953ddd4709250f365ca3975
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Sep 18 08:16:38 2020 +0000
-
- upstream: handle multiple messages in a single read()
-
- PR#183 by Dennis Kaarsemaker; feedback and ok markus@
-
- OpenBSD-Commit-ID: 8570bb4d02d00cf70b98590716ea6a7d1cce68d1
-
-commit dc098405b2939146e17567a25b08fc6122893cdf
-Author: pedro martelletto <pedro@ambientworks.net>
-Date: Fri Sep 18 08:57:29 2020 +0200
-
- configure.ac: add missing includes
-
- when testing, make sure to include the relevant header files that
- declare the types of the functions used by the test:
-
- - stdio.h for printf();
- - stdlib.h for exit();
- - string.h for strcmp();
- - unistd.h for unlink(), _exit(), fork(), getppid(), sleep().
-
-commit b3855ff053f5078ec3d3c653cdaedefaa5fc362d
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Sep 18 05:23:03 2020 +0000
-
- upstream: tweak the client hostkey preference ordering algorithm to
-
- prefer the default ordering if the user has a key that matches the
- best-preference default algorithm.
-
- feedback and ok markus@
-
- OpenBSD-Commit-ID: a92dd7d7520ddd95c0a16786a7519e6d0167d35f
-
-commit f93b187ab900c7d12875952cc63350fe4de8a0a8
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Sep 18 14:55:48 2020 +1000
-
- control over the colours in gnome-ssh-askpass[23]
-
- Optionally set the textarea colours via $GNOME_SSH_ASKPASS_FG_COLOR and
- $GNOME_SSH_ASKPASS_BG_COLOR. These accept the usual three or six digit
- hex colours.
-
-commit 9d3d36bdb10b66abd1af42e8655502487b6ba1fa
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Sep 18 14:50:38 2020 +1000
-
- focus improvement for gnome-ssh-askpass[23]
-
- When serving a SSH_ASKPASS_PROMPT=none information dialog, ensure
- then <enter> doesn't immediately close the dialog. Instead, require an
- explicit <tab> to reach the close button, or <esc>.
-
-commit d6f507f37e6c75a899db0ef8224e72797c5563b6
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Sep 16 03:07:31 2020 +0000
-
- upstream: Remove unused buf, last user was removed when switching
-
- to the sshbuf API. Patch from Sebastian Andrzej Siewior.
-
- OpenBSD-Commit-ID: 250fa17f0cec01039cc4abd95917d9746e24c889
-
-commit c3c786c3a0973331ee0922b2c51832a3b8d7f20f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Sep 9 21:57:27 2020 +0000
-
- upstream: For the hostkey confirmation message:
-
- > Are you sure you want to continue connecting (yes/no/[fingerprint])?
-
- compare the fingerprint case sensitively; spotted Patrik Lundin
- ok dtucker
-
- OpenBSD-Commit-ID: 73097afee1b3a5929324e345ba4a4a42347409f2
-
-commit f2950baf0bafe6aa20dfe2e8d1ca4b23528df617
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Sep 11 14:45:23 2020 +1000
-
- New config-build-time dependency on automake.
-
-commit 600c1c27abd496372bd0cf83d21a1c119dfdf9a5
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Sun Sep 6 21:56:36 2020 +1000
-
- Add aclocal.m4 and config.h.in~ to .gitignore.
-
- aclocal.m4 is now generated by autoreconf.
-
-commit 4bf7e1d00b1dcd3a6b3239f77465c019e61c6715
-Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-Date: Sat Sep 5 17:50:03 2020 +0200
-
- Quote the definition of OSSH_CHECK_HEADER_FOR_FIELD
-
- autoreconf complains about underquoted definition of
- OSSH_CHECK_HEADER_FOR_FIELD after aclocal.m4 has been and now is beeing
- recreated.
-
- Quote OSSH_CHECK_HEADER_FOR_FIELD as suggested.
-
- Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-
-commit a2f3ae386b5f7938ed3c565ad71f30c4f7f010f1
-Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-Date: Sat Sep 5 17:50:02 2020 +0200
-
- Move the local m4 macros
-
- The `aclocal' step is skipped during `autoreconf' because aclocal.m4 is
- present.
- Move the current aclocal.m4 which contains local macros into the m4/
- folder. With this change the aclocal.m4 will be re-created during
- changes to the m4/ macro.
- This is needed so the `aclocal' can fetch m4 macros from the system if
- they are references in the configure script. This is a prerequisite to
- use PKG_CHECK_MODULES.
-
- Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-
-commit 8372bff3a895b84fd78a81dc39da10928b662f5a
-Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-Date: Sat Sep 5 17:50:01 2020 +0200
-
- Remove HAVE_MMAP and BROKEN_MMAP
-
- BROKEN_MMAP is no longer defined since commit
- 1cfd5c06efb12 ("Remove portability support for mmap")
-
- this commit also removed other HAVE_MMAP user. I didn't find anything
- that defines HAVE_MMAP. The check does not trigger because compression
- on server side is by default COMP_DELAYED (2) so it never triggers.
-
- Remove remaining HAVE_MMAP and BROKEN_MMAP bits.
-
- Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
-
-commit bbf20ac8065905f9cb9aeb8f1df57fcab52ee2fb
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Sep 9 03:10:21 2020 +0000
-
- upstream: adapt to SSH_SK_VERSION_MAJOR crank
-
- OpenBSD-Regress-ID: 0f3e76bdc8f9dbd9d22707c7bdd86051d5112ab8
-
-commit 9afe2a150893b20bdf9eab764978d817b9a7b783
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Aug 28 03:17:13 2020 +0000
-
- upstream: Ensure that address/mask mismatches are flagged at
-
- config-check time. ok djm@
-
- OpenBSD-Regress-ID: 8f5f4c2c0bf00e6ceae7a1755a444666de0ea5c2
-
-commit c76773524179cb654ff838dd43ba1ddb155bafaa
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Sep 9 03:08:01 2020 +0000
-
- upstream: when writing an attestation blob for a FIDO key, record all
-
- the data needed to verify the attestation. Previously we were missing the
- "authenticator data" that is included in the signature.
-
- spotted by Ian Haken
- feedback Pedro Martelletto and Ian Haken; ok markus@
-
- OpenBSD-Commit-ID: 8439896e63792b2db99c6065dd9a45eabbdb7e0a
-
-commit c1c44eeecddf093a7983bd91e70b446de789b363
-Author: pedro martelletto <pedro@ambientworks.net>
-Date: Tue Sep 1 17:01:55 2020 +0200
-
- configure.ac: fix libfido2 back-compat
-
- - HAVE_FIDO_CRED_PROD -> HAVE_FIDO_CRED_PROT;
- - check for fido_dev_get_touch_begin(), so that
- HAVE_FIDO_DEV_GET_TOUCH_BEGIN gets defined.
-
-commit 785f0f315bf7ac5909e988bb1ac3e019fb5e1594
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Aug 31 04:33:17 2020 +0000
-
- upstream: refuse to add verify-required (PINful) FIDO keys to
-
- ssh-agent until the agent supports them properly
-
- OpenBSD-Commit-ID: 125bd55a8df32c87c3ec33c6ebe437673a3d037e
-
-commit 39e88aeff9c7cb6862b37ad1a87a03ebbb38c233
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Aug 31 00:17:41 2020 +0000
-
- upstream: Add RCS IDs to the few files that are missing them; from
-
- Pedro Martelletto
-
- OpenBSD-Commit-ID: 39aa37a43d0c75ec87f1659f573d3b5867e4a3b3
-
-commit 72730249b38a676da94a1366b54a6e96e6928bcb
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Aug 28 03:15:52 2020 +0000
-
- upstream: Check that the addresses supplied to Match Address and
-
- Match LocalAddress are valid when parsing in config-test mode. This will
- catch address/mask mismatches before they cause problems at runtime. Found by
- Daniel Stocker, ok djm@
-
- OpenBSD-Commit-ID: 2d0b10c69fad5d8fda4c703e7c6804935289378b
-
-commit 2a3a9822311a565a9df48ed3b6a3c972f462bd7d
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Thu Aug 27 12:34:00 2020 +0000
-
- upstream: sentence fix; from pedro martelletto
-
- OpenBSD-Commit-ID: f95b84a1e94e9913173229f3787448eea2f8a575
-
-commit ce178be0d954b210c958bc2b9e998cd6a7aa73a9
-Author: Damien Miller <djm@mindrot.org>
-Date: Thu Aug 27 20:01:52 2020 +1000
-
- tweak back-compat for older libfido2
-
-commit d6f45cdde031acdf434bbb27235a1055621915f4
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 09:46:04 2020 +0000
-
- upstream: debug()-print a little info about FIDO-specific key
-
- fields via "ssh-keygen -vyf /path/key"
-
- OpenBSD-Commit-ID: cf315c4fe77db43947d111b00155165cb6b577cf
-
-commit b969072cc3d62d05cb41bc6d6f3c22c764ed932f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 09:43:28 2020 +0000
-
- upstream: skip a bit more FIDO token selection logic when only a
-
- single token is attached.
-
- with Pedro Martelletto
-
- OpenBSD-Commit-ID: e4a324bd9814227ec1faa8cb619580e661cca9ac
-
-commit 744df42a129d7d7db26947b7561be32edac89f88
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Thu Aug 27 06:15:22 2020 +0000
-
- upstream: tweak previous;
-
- OpenBSD-Commit-ID: 92714b6531e244e4da401b2defaa376374e24be7
-
-commit e32479645ce649b444ba5c6e7151304306a09654
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 03:55:22 2020 +0000
-
- upstream: adapt to API changes
-
- OpenBSD-Regress-ID: 5f147990cb67094fe554333782ab268a572bb2dd
-
-commit bbcc858ded3fbc46abfa7760e40389e3ca93884c
-Author: Damien Miller <djm@mindrot.org>
-Date: Thu Aug 27 12:37:12 2020 +1000
-
- degrade semi-gracefully when libfido2 is too old
-
-commit 9cbbdc12cb6a2ab1e9ffe9974cca91d213c185c2
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 01:15:36 2020 +0000
-
- upstream: dummy firmware needs to match API version numner crank (for
-
- verify-required resident keys) even though it doesn't implement this feature
-
- OpenBSD-Regress-ID: 86579ea2891e18e822e204413d011b2ae0e59657
-
-commit c1e76c64956b424ba260fd4eec9970e5b5859039
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 02:11:09 2020 +0000
-
- upstream: remove unreachable code I forgot to delete in r1.334
-
- OpenBSD-Commit-ID: 9ed6078251a0959ee8deda443b9ae42484fd8b18
-
-commit 0caff05350bd5fc635674c9e051a0322faba5ae3
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 01:08:45 2020 +0000
-
- upstream: Request PIN ahead of time for certain FIDO actions
-
- When we know that a particular action will require a PIN, such as
- downloading resident keys or generating a verify-required key, request
- the PIN before attempting it.
-
- joint work with Pedro Martelletto; ok markus@
-
- OpenBSD-Commit-ID: 863182d38ef075bad1f7d20ca485752a05edb727
-
-commit b649b3daa6d4b8ebe1bd6de69b3db5d2c03c9af0
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 01:08:19 2020 +0000
-
- upstream: preserve verify-required for resident FIDO keys
-
- When downloading a resident, verify-required key from a FIDO token,
- preserve the verify-required in the private key that is written to
- disk. Previously we weren't doing that because of lack of support
- in the middleware API.
-
- from Pedro Martelletto; ok markus@ and myself
-
- OpenBSD-Commit-ID: 201c46ccdd227cddba3d64e1bdbd082afa956517
-
-commit 642e06d0df983fa2af85126cf4b23440bb2985bf
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 01:07:51 2020 +0000
-
- upstream: major rework of FIDO token selection logic
-
- When PINs are in use and multiple FIDO tokens are attached to a host, we
- cannot just blast requests at all attached tokens with the PIN specified
- as this will cause the per-token PIN failure counter to increment. If
- this retry counter hits the token's limit (usually 3 attempts), then the
- token will lock itself and render all (web and SSH) of its keys invalid.
- We don't want this.
-
- So this reworks the key selection logic for the specific case of
- multiple keys being attached. When multiple keys are attached and the
- operation requires a PIN, then the user must touch the key that they
- wish to use first in order to identify it.
-
- This may require multiple touches, but only if there are multiple keys
- attached AND (usually) the operation requires a PIN. The usual case of a
- single key attached should be unaffected.
-
- Work by Pedro Martelletto; ok myself and markus@
-
- OpenBSD-Commit-ID: 637d3049ced61b7a9ee796914bbc4843d999a864
-
-commit 801c9f095e6d8b7b91aefd98f5001c652ea13488
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 01:07:09 2020 +0000
-
- upstream: support for requiring user verified FIDO keys in sshd
-
- This adds a "verify-required" authorized_keys flag and a corresponding
- sshd_config option that tells sshd to require that FIDO keys verify the
- user identity before completing the signing/authentication attempt.
- Whether or not user verification was performed is already baked into the
- signature made on the FIDO token, so this is just plumbing that flag
- through and adding ways to require it.
-
- feedback and ok markus@
-
- OpenBSD-Commit-ID: 3a2313aae153e043d57763d766bb6d55c4e276e6
-
-commit 9b8ad93824c682ce841f53f3b5762cef4e7cc4dc
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Aug 27 01:06:18 2020 +0000
-
- upstream: support for user-verified FIDO keys
-
- FIDO2 supports a notion of "user verification" where the user is
- required to demonstrate their identity to the token before particular
- operations (e.g. signing). Typically this is done by authenticating
- themselves using a PIN that has been set on the token.
-
- This adds support for generating and using user verified keys where
- the verification happens via PIN (other options might be added in the
- future, but none are in common use now). Practically, this adds
- another key generation option "verify-required" that yields a key that
- requires a PIN before each authentication.
-
- feedback markus@ and Pedro Martelletto; ok markus@
-
- OpenBSD-Commit-ID: 57fd461e4366f87c47502c5614ec08573e6d6a15
-
-commit 1196d7f49d4fbc90f37e550de3056561613b0960
-Author: cheloha@openbsd.org <cheloha@openbsd.org>
-Date: Wed Aug 12 01:23:45 2020 +0000
-
- upstream: ssh-keyscan(1): simplify conloop() with timercmp(3),
-
- timersub(3); ok djm@
-
- OpenBSD-Commit-ID: a102acb544f840d33ad73d40088adab4a687fa27
-
-commit d0a195c89e26766d3eb8f3e4e2a00ebc98b57795
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue Aug 11 09:49:57 2020 +0000
-
- upstream: let ssh_config(5)'s AddKeysToAgent keyword accept a time
-
- limit for keys in addition to its current flag options. Time-limited keys
- will automatically be removed from ssh-agent after their expiry time has
- passed; ok markus@
-
- OpenBSD-Commit-ID: 792e71cacbbc25faab5424cf80bee4a006119f94
-
-commit e9c2002891a7b8e66f4140557a982978f372e5a3
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue Aug 11 09:45:54 2020 +0000
-
- upstream: let the "Confirm user presence for key ..." ssh-askpass
-
- notification respect $SSH_ASKPASS_REQUIRE; ok markus@
-
- OpenBSD-Commit-ID: 7c1a616b348779bda3b9ad46bf592741f8e206c1
-
-commit eaf8672b1b52db2815a229745f4e4b08681bed6d
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Aug 21 00:04:13 2020 +1000
-
- Remove check for 'ent' command.
-
- It was added in 8d1fd57a9 for measuring entropy of ssh_prng_cmds which
- has long since been removed and there are no other references to it.
-
-commit 05c215de8d224e094a872d97d45f37f60c06206b
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Mon Aug 17 21:34:32 2020 +1000
-
- Wrap stdint.h include in ifdef HAVE_STDINT_H.
-
-commit eaf2765efe8bc74feba85c34295d067637fc6635
-Author: Damien Miller <djm@mindrot.org>
-Date: Mon Aug 10 13:24:09 2020 +1000
-
- sync memmem.c with OpenBSD
-
-commit ed6bef77f5bb5b8f9ca2914478949e29f2f0a780
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Aug 7 17:12:16 2020 +1000
-
- Always send any PAM account messages.
-
- If the PAM account stack reaturns any messages, send them to the user
- not just if the check succeeds. bz#2049, ok djm@
-
-commit a09e98dcae1e26f026029b7142b0e0d10130056f
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Aug 7 15:37:37 2020 +1000
-
- Output test debug logs on failure.
-
-commit eb122b1eebe58b29a83a507ee814cbcf8aeded1b
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Aug 7 15:11:42 2020 +1000
-
- Add ability to specify exact test target.
-
-commit c2ec7a07f8caabb4d8e00c66e7cd46bf2cd1e922
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Aug 7 14:21:15 2020 +1000
-
- Document --without-openssl and --without-zlib.
-
-commit 651bb3a31949bbdc3a78b2ede95a77bce0c72984
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Aug 7 14:15:11 2020 +1000
-
- Add without-openssl without-zlib test target.
-
-commit 9499f2bb01dc1032ae155999b2d7764b9491341f
-Author: Stefan Schindler <dns2utf8@estada.ch>
-Date: Wed Aug 5 19:00:52 2020 +0200
-
- Add CI with prepare script
-
- * Only use heimdal kerberos implementation
- * Fetch yubico/libfido2 (see: https://github.com/Yubico/libfido2)
- * Add one target for
- * all features
- * each feature alone
- * no features
-
-commit ea1f649046546a860f68b97ddc3015b7e44346ca
-Author: Damien Miller <djm@mindrot.org>
-Date: Wed Aug 5 08:58:57 2020 +1000
-
- support NetBSD's utmpx.ut_ss address field
-
- bz#960, ok dtucker
-
-commit 32c63e75a70a0ed9d6887a55fcb0e4531a6ad617
-Author: Damien Miller <djm@mindrot.org>
-Date: Tue Aug 4 14:59:21 2020 +1000
-
- wrap a declaration in the same ifdefs as its use
-
- avoids warnings on NetBSD
-
-commit c9e3be9f4b41fda32a2a0138d54c7a6b563bc94d
-Author: Damien Miller <djm@mindrot.org>
-Date: Tue Aug 4 14:58:46 2020 +1000
-
- undef TAILQ_CONCAT and friends
-
- Needed for NetBSD. etc that supply these macros
-
-commit 2d8a3b7e8b0408dfeb933ac5cfd3a58f5bac49af
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Aug 3 02:53:51 2020 +0000
-
- upstream: ensure that certificate extensions are lexically sorted.
-
- Previously if the user specified a custom extension then the everything would
- be in order except the custom ones. bz3198 ok dtucker markus
-
- OpenBSD-Commit-ID: d97deb90587b06cb227c66ffebb2d9667bf886f0
-
-commit a8732d74cb8e72f0c6366015687f1e649f60be87
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Aug 3 02:43:41 2020 +0000
-
- upstream: allow -A to explicitly enable agent forwarding in scp and
-
- sftp. The default remains to not forward an agent, even when ssh_config
- enables it. ok jmc dtucker markus
-
- OpenBSD-Commit-ID: 36cc526aa3b0f94e4704b8d7b969dd63e8576822
-
-commit ab9105470a83ed5d8197959a1b1f367399958ba1
-Author: deraadt@openbsd.org <deraadt@openbsd.org>
-Date: Mon Aug 3 02:42:49 2020 +0000
-
- upstream: clang -Wimplicit-fallthrough does not recognise /*
-
- FALLTHROUGH */ comments, which is the style we currently use, and gives too
- many boring warnings. ok djm
-
- OpenBSD-Commit-ID: 07b5031e9f49f2b69ac5e85b8da4fc9e393992a0
-
-commit ced327b9fb78c94d143879ef4b2a02cbc5d38690
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 31 04:19:37 2020 +0000
-
- upstream: Also compare username when checking for JumpHost loops.
-
- bz#3057, ok djm@
-
- OpenBSD-Commit-ID: 9bbc1d138adb34c54f3c03a15a91f75dbf418782
-
-commit ae7527010c44b3376b85d036a498f136597b2099
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jul 31 15:19:04 2020 +1000
-
- Remove AC_REVISION.
-
- It hasn't been useful since we switched to git in 2014. ok djm@
-
-commit 89fc3f414be0ce4e8008332a9739a7d721269e50
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Tue Jul 28 19:40:30 2020 +1000
-
- Use argv in OSSH_CHECK_CFLAG_COMPILE test.
-
- configure.ac is not detecting -Wextra in compilers that implement the
- option. The problem is that -Wextra implies -Wunused-parameter, and the
- C excerpt used by aclocal.m4 does not use argv. Patch from pedro at
- ambientworks.net, ok djm@
-
-commit 62c81ef531b0cc7ff655455dd34f5f0c94f48e82
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Mon Jul 20 22:12:07 2020 +1000
-
- Skip ECDSA-SK webauthn test when built w/out ECC
-
-commit 3ec9a6d7317236a9994887d8bd5d246af403a00d
-Author: Damien Miller <djm@mindrot.org>
-Date: Mon Jul 20 13:09:25 2020 +1000
-
- Add ssh-sk-helper and manpage to RPM spec file
-
- Based on patch from Fabio Pedretti
-
-commit a2855c048b3f4b17d8787bd3f24232ec0cd79abe
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 17 07:09:24 2020 +0000
-
- upstream: Add %k to the TOKENs for Match Exec for consistency with
-
- the other keywords that recently got %k.
-
- OpenBSD-Commit-ID: 1857d1c40f270cbc254fca91e66110641dddcfdb
-
-commit 69860769fa9f4529d8612ec055ae11912f7344cf
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Fri Jul 17 05:59:05 2020 +0000
-
- upstream: fix macro slip in previous;
-
- OpenBSD-Commit-ID: 624e47ab209450ad9ad5c69f54fa69244de5ed9a
-
-commit 40649bd0822883b684183854b16d0b8461d5697b
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 17 07:10:24 2020 +0000
-
- upstream: Add test for '%k' (HostKeyAlias) TOKEN.
-
- OpenBSD-Regress-ID: 8ed1ba1a811790031aad3fcea860a34ad7910456
-
-commit 6736fe680704a3518cb4f3f8f6723b00433bd3dd
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 17 03:26:58 2020 +0000
-
- upstream: Add tests for expansions on UserKnownHostsFile.
-
- OpenBSD-Regress-ID: bccf8060306c841bbcceb1392644f906a4d6ca51
-
-commit 287dc6396e0f9cb2393f901816dbd7f2a7dfbb5f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 17 03:51:32 2020 +0000
-
- upstream: log error message for process_write() write failures
-
- OpenBSD-Commit-ID: f733d7b3b05e3c68967dc18dfe39b9e8fad29851
-
-commit 8df5774a42d2eaffe057bd7f293fc6a4b1aa411c
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 17 03:43:42 2020 +0000
-
- upstream: Add a '%k' TOKEN that expands to the effective HostKey of
-
- the destination. This allows, eg, keeping host keys in individual files
- using "UserKnownHostsFile ~/.ssh/known_hosts.d/%k". bz#1654, ok djm@, jmc@
- (man page bits)
-
- OpenBSD-Commit-ID: 7084d723c9cc987a5c47194219efd099af5beadc
-
-commit c4f239944a4351810fd317edf408bdcd5c0102d9
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 17 03:23:10 2020 +0000
-
- upstream: Add %-TOKEN, environment variable and tilde expansion to
-
- UserKnownHostsFile, allowing the file to be automagically split up in the
- configuration (eg bz#1654). ok djm@, man page parts jmc@
-
- OpenBSD-Commit-ID: 7e1b406caf147638bb51558836a72d6cc0bd1b18
-
-commit dbaaa01daedb423c38124a72c471982fb08a16fb
-Author: solene@openbsd.org <solene@openbsd.org>
-Date: Wed Jul 15 07:50:46 2020 +0000
-
- upstream: - Add [-a rounds] in ssh-keygen man page and usage() -
-
- Reorder parameters list in the first usage() case - Sentence rewording
-
- ok dtucker@
- jmc@ noticed usage() missed -a flag too
-
- OpenBSD-Commit-ID: f06b9afe91cc96f260b929a56e9930caecbde246
-
-commit 69924a92c3af7b99a7541aa544a2334ec0fb092c
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Wed Jul 15 05:40:05 2020 +0000
-
- upstream: start sentence with capital letter;
-
- OpenBSD-Commit-ID: ab06581d51b2b4cc1b4aab781f7f3cfa56cad973
-
-commit 5b56bd0affea7b02b540bdbc4d1d271b0e4fc885
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Jul 17 13:15:50 2020 +1000
-
- detect Linux/X32 systems
-
- This is a frankenstein monster of AMD64 instructions/calling conventions
- but with a 4GB address space. Allegedly deprecated but people still run
- into it causing weird sandbox failures, e.g. bz#3085
-
-commit 9c9ddc1391d6af8d09580a2424ab467d0a5df3c7
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Jul 15 06:43:16 2020 +0000
-
- upstream: Fix previous by calling the correct function.
-
- OpenBSD-Regress-ID: 821cdd1dff9c502cceff4518b6afcb81767cad5a
-
-commit f1a4798941b4372bfe5e46f1c0f8672fe692d9e4
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Jul 15 05:36:50 2020 +0000
-
- upstream: Update test to match recent change in match.c
-
- OpenBSD-Regress-ID: 965bda1f95f09a765050707340c73ad755f41167
-
-commit d7e71be4fd57b7c7e620d733cdf2333b27bfa924
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed Jul 15 15:30:43 2020 +1000
-
- Adjust portable code to match changes in 939d787d,
-
-commit fec89f32a84fd0aa1afc81deec80a460cbaf451a
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Jul 15 04:27:34 2020 +0000
-
- upstream: Add default for number of rounds (-a). ok djm@
-
- OpenBSD-Commit-ID: cb7e9aa04ace01a98e63e4bd77f34a42ab169b15
-
-commit aaa8b609a7b332be836cd9a3b782422254972777
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue Jul 14 23:57:01 2020 +0000
-
- upstream: allow some additional control over the use of ssh-askpass
-
- via $SSH_ASKPASS_REQUIRE, including force-enable/disable. bz#69 ok markus@
-
- OpenBSD-Commit-ID: 3a1e6cbbf6241ddc4405c4246caa2c249f149eb2
-
-commit 6368022cd4dd508671c4999a59ec5826df098530
-Author: deraadt@openbsd.org <deraadt@openbsd.org>
-Date: Tue Jul 7 02:47:21 2020 +0000
-
- upstream: correct recently broken comments
-
- OpenBSD-Commit-ID: 964d9a88f7de1d0eedd3f8070b43fb6e426351f1
-
-commit 6d755706a0059eb9e2d63517f288b75cbc3b4701
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sun Jul 5 23:59:45 2020 +0000
-
- upstream: some language improvements; ok markus
-
- OpenBSD-Commit-ID: 939d787d571b4d5da50b3b721fd0b2ac236acaa8
-
-commit b0c1e8384d5e136ebdf895d1434aea7dd8661a1c
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Fri Jul 3 10:12:26 2020 +0000
-
- upstream: update setproctitle after re-exec; ok djm
-
- OpenBSD-Commit-ID: bc92d122f9184ec2a9471ade754b80edd034ce8b
-
-commit cd119a5ec2bf0ed5df4daff3bd14f8f7566dafd3
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Fri Jul 3 10:11:33 2020 +0000
-
- upstream: keep ignoring HUP after fork+exec; ok djm
-
- OpenBSD-Commit-ID: 7679985a84ee5ceb09839905bb6f3ddd568749a2
-
-commit 8af4a743693ccbea3e15fc9e93edbeb610fa94f4
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Fri Jul 3 10:10:17 2020 +0000
-
- upstream: don't exit the listener on send_rexec_state errors; ok
-
- djm
-
- OpenBSD-Commit-ID: 57cbd757d130d3f45b7d41310b3a15eeec137d5c
-
-commit 03da4c2b70468f04ed1c08518ea0a70e67232739
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Jul 15 04:55:47 2020 +0000
-
- upstream: Use $OBJ to find key files. Fixes test when run on an obj
-
- directory (on OpenBSD) or out of tree (in Portable).
-
- OpenBSD-Regress-ID: 938fa8ac86adaa527d64a305bd2135cfbb1c0a17
-
-commit 73f20f195ad18f1cf633eb7d8be95dc1b6111eea
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Sat Jul 4 23:11:23 2020 +1000
-
- Wrap stdint.h in ifdef HAVE_STDINT_H.
-
-commit aa6fa4bf3023fa0e5761cd8f4b2cd015d2de74dd
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 3 07:25:18 2020 +0000
-
- upstream: put back the mux_ctx memleak fix, but only for channels of
-
- type SSH_CHANNEL_MUX_LISTENER; Specifically SSH_CHANNEL_MUX_PROXY channels
- should not have this structure freed.
-
- OpenBSD-Commit-ID: f3b213ae60405f77439e2b06262f054760c9d325
-
-commit d8195914eb43b20b13381f4e5a74f9f8a14f0ded
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 3 07:17:35 2020 +0000
-
- upstream: revert r1.399 - the lifetime of c->mux_ctx is more complex;
-
- simply freeing it here causes other problems
-
- OpenBSD-Commit-ID: c6fee8ca94e2485faa783839541962be2834c5ed
-
-commit 20b5fab9f773b3d3c7f06cb15b8f69a2c081ee80
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 3 07:02:37 2020 +0000
-
- upstream: avoid tilde_expand_filename() in expanding ~/.ssh/rc - if
-
- sshd is in chroot mode, the likely absence of a password database will cause
- tilde_expand_filename() to fatal; ok dtucker@
-
- OpenBSD-Commit-ID: e20aee6159e8b79190d18dba1513fc1b7c8b7ee1
-
-commit c8935081db35d73ee6355999142fa0776a2af912
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 3 06:46:41 2020 +0000
-
- upstream: when redirecting sshd's log output to a file, undo this
-
- redirection after the session child process is forked(); ok dtucker@
-
- OpenBSD-Commit-ID: 6df86dd653c91f5bc8ac1916e7680d9d24690865
-
-commit 183c4aaef944af3a1a909ffa01058c65bac55748
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 3 06:29:57 2020 +0000
-
- upstream: start ClientAliveInterval bookkeeping before first pass
-
- through select() loop; fixed theoretical case where busy sshd may ignore
- timeouts from client; inspired by and ok dtucker
-
- OpenBSD-Commit-ID: 96bfc4b1f86c7da313882a84755b2b47eb31957f
-
-commit 6fcfd303d67f16695198cf23d109a988e40eefb6
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Jul 3 15:28:27 2020 +1000
-
- add check for fido_cred_set_prot() to configure
-
-commit f11b23346309e4d5138e733a49321aedd6eeaa2f
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jul 3 05:09:06 2020 +0000
-
- upstream: Only reset the serveralive check when we receive traffic from
-
- the server and ignore traffic from a port forwarding client, preventing a
- client from keeping a connection alive when it should be terminated. Based
- on a patch from jxraynor at gmail.com via openssh-unix-dev and bz#2265, ok
- djm@
-
- OpenBSD-Commit-ID: a941a575a5cbc244c0ef5d7abd0422bbf02c2dcd
-
-commit adfdbf1211914b631c038f0867a447db7b519937
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Jul 3 15:15:15 2020 +1000
-
- sync sys-queue.h with OpenBSD upstream
-
- needed for TAILQ_CONCAT
-
-commit 1b90ddde49e2ff377204082b6eb130a096411dc1
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jul 3 05:08:41 2020 +0000
-
- upstream: fix memory leak of mux_ctx; patch from Sergiy Lozovsky
-
- via bz3189 ok dtucker
-
- OpenBSD-Commit-ID: db249bd4526fd42d0f4f43f72f7b8b7705253bde
-
-commit 55ef3e9cbd5b336bd0f89205716924886fcf86de
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jul 1 16:28:31 2020 +0000
-
- upstream: free kex in ssh_packet_close; ok djm semarie
-
- OpenBSD-Commit-ID: dbc181e90d3d32fd97b10d75e68e374270e070a2
-
-commit e1c401109b61f7dbc199b5099933d579e7fc5dc9
-Author: bket@openbsd.org <bket@openbsd.org>
-Date: Sat Jun 27 13:39:09 2020 +0000
-
- upstream: Replace TAILQ concatenation loops with TAILQ_CONCAT
-
- OK djm@
-
- OpenBSD-Commit-ID: 454b40e09a117ddb833794358970a65b14c431ef
-
-commit 14beca57ac92d62830c42444c26ba861812dc837
-Author: semarie@openbsd.org <semarie@openbsd.org>
-Date: Fri Jun 26 11:26:01 2020 +0000
-
- upstream: backout 1.293 fix kex mem-leak in ssh_packet_close at markus
-
- request
-
- the change introduced a NULL deref in sshpkt_vfatal() (uses of ssh->kex after
- calling ssh_packet_clear_keys())
-
- OpenBSD-Commit-ID: 9c9a6721411461b0b1c28dc00930d7251a798484
-
-commit 598c3a5e3885080ced0d7c40fde00f1d5cdbb32b
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Jun 26 16:07:12 2020 +1000
-
- document a PAM spec problem in a frustrated comment
-
-commit 976c4f86286d52a0cb2aadf4a095d379c0da752e
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 26 05:42:16 2020 +0000
-
- upstream: avoid spurious error message when ssh-keygen creates files
-
- outside ~/.ssh; with dtucker@
-
- OpenBSD-Commit-ID: ac0c662d44607e00ec78c266ee60752beb1c7e08
-
-commit 32b2502a9dfdfded1ccdc1fd6dc2b3fe41bfc205
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Jun 26 15:30:06 2020 +1000
-
- missing ifdef SELINUX; spotted by dtucker
-
-commit e073106f370cdd2679e41f6f55a37b491f0e82fe
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 26 05:12:21 2020 +0000
-
- upstream: regress test for ssh-add -d; ok dtucker@
-
- OpenBSD-Regress-ID: 3a2e044be616afc7dd4f56c100179e83b33d8abf
-
-commit c809daaa1bad6b1c305b0e0b5440360f32546c84
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jun 24 15:16:23 2020 +0000
-
- upstream: add test for mux w/-Oproxy; ok djm
-
- OpenBSD-Regress-ID: 764d5c696e2a259f1316a056e225e50023abb027
-
-commit 3d06ff4bbd3dca8054c238d2a94c0da563ef7eee
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 26 05:16:38 2020 +0000
-
- upstream: handle EINTR in waitfd() and timeout_connect() helpers;
-
- bz#3071; ok dtucker@
-
- OpenBSD-Commit-ID: 08fa87be50070bd8b754d9b1ebb1138d7bc9d8ee
-
-commit fe2ec0b9c19adeab0cd9f04b8152dc17f31c31e5
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 26 05:04:07 2020 +0000
-
- upstream: allow "ssh-add -d -" to read keys to be deleted from
-
- stdin bz#3180; ok dtucker@
-
- OpenBSD-Commit-ID: 15c7f10289511eb19fce7905c9cae8954e3857ff
-
-commit a3e0c376ffc11862fa3568b28188bd12965973e1
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 26 05:03:36 2020 +0000
-
- upstream: constify a few things; ok dtucker (as part of another
-
- diff)
-
- OpenBSD-Commit-ID: 7c17fc987085994d752304bd20b1ae267a9bcdf6
-
-commit 74344c3ca42c3f53b00b025daf09ae7f6aa38076
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jun 26 05:02:03 2020 +0000
-
- upstream: Defer creation of ~/.ssh by ssh(1) until we attempt to
-
- write to it so we don't leave an empty .ssh directory when it's not needed.
- Use the same function to replace the code in ssh-keygen that does the same
- thing. bz#3156, ok djm@
-
- OpenBSD-Commit-ID: 59c073b569be1a60f4de36f491a4339bc4ae870f
-
-commit c9e24daac6324fcbdba171392c325bf9ccc3c768
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jun 26 04:45:11 2020 +0000
-
- upstream: Expand path to ~/.ssh/rc rather than relying on it
-
- being relative to the current directory, so that it'll still be found if the
- shell startup changes its directory. Since the path is potentially longer,
- make the cmd buffer that uses it dynamically sized. bz#3185, with & ok djm@
-
- OpenBSD-Commit-ID: 36e33ff01497af3dc8226d0c4c1526fc3a1e46bf
-
-commit 07f5f369a25e228a7357ef6c57205f191f073d99
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jun 24 15:12:09 2020 +0000
-
- upstream: fix kex mem-leak in ssh_packet_close; ok djm
-
- OpenBSD-Commit-ID: e2e9533f393620383afd0b68ef435de8d5e8abe4
-
-commit e35995088cd6691a712bfd586bae8084a3a922ba
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jun 24 15:10:38 2020 +0000
-
- upstream: fix ssh -O proxy w/mux which got broken by no longer
-
- making ssh->kex optional in packet.c revision 1.278 ok djm@
-
- OpenBSD-Commit-ID: 2b65df04a064c2c6277359921d2320c90ab7d917
-
-commit 250246fef22b87a54a63211c60a2def9be431fbd
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jun 24 15:09:53 2020 +0000
-
- upstream: support loading big sshd_config files w/o realloc; ok
-
- djm
-
- OpenBSD-Commit-ID: ba9238e810074ac907f0cf8cee1737ac04983171
-
-commit 89b54900ac61986760452f132bbe3fb7249cfdac
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jun 24 15:08:53 2020 +0000
-
- upstream: allow sshd_config longer than 256k; ok djm
-
- OpenBSD-Commit-ID: 83f40dd5457a64c1d3928eb4364461b22766beb3
-
-commit e3fa6249e6d9ceb57c14b04dd4c0cfab12fa7cd5
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Wed Jun 24 15:07:33 2020 +0000
-
- upstream: only call sshkey_xmss_init() once for KEY_XMSS_CERT; ok
-
- djm
-
- OpenBSD-Commit-ID: d0002ffb7f20f538b014d1d0735facd5a81ff096
-
-commit 37f2da069c0619f2947fb92785051d82882876d7
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 23:44:27 2020 +0000
-
- upstream: some clarifying comments
-
- OpenBSD-Commit-ID: 5268479000fd97bfa30ab819f3517139daa054a2
-
-commit b659319a5bc9e8adf3c4facc51f37b670d2a7426
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Mon Jun 22 06:37:38 2020 +0000
-
- upstream: updated argument name for -P in first synopsis was
-
- missed in previous;
-
- OpenBSD-Commit-ID: 8d84dc3050469884ea91e29ee06a371713f2d0b7
-
-commit 02a9222cbce7131d639984c2f6c71d1551fc3333
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Mon Jun 22 06:36:40 2020 +0000
-
- upstream: supply word missing in previous;
-
- OpenBSD-Commit-ID: 16a38b049f216108f66c8b699aa046063381bd23
-
-commit 5098b3b6230852a80ac6cef5d53a785c789a5a56
-Author: Damien Miller <djm@mindrot.org>
-Date: Mon Jun 22 16:54:02 2020 +1000
-
- missing files for webauthn/sshsig unit test
-
-commit 354535ff79380237924ac8fdc98f8cdf83e67da6
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 06:00:06 2020 +0000
-
- upstream: add support for verification of webauthn sshsig signature,
-
- and example HTML/JS to generate webauthn signatures in SSH formats (also used
- to generate the testdata/* for the test).
-
- OpenBSD-Regress-ID: dc575be5bb1796fdf4b8aaee0ef52a6671a0f6fb
-
-commit bb52e70fa5330070ec9a23069c311d9e277bbd6f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 05:58:35 2020 +0000
-
- upstream: Add support for FIDO webauthn (verification only).
-
- webauthn is a standard for using FIDO keys in web browsers. webauthn
- signatures are a slightly different format to plain FIDO signatures - this
- support allows verification of these. Feedback and ok markus@
-
- OpenBSD-Commit-ID: ab7e3a9fb5782d99d574f408614d833379e564ad
-
-commit 64bc121097f377142f1387ffb2df7592c49935af
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 05:56:23 2020 +0000
-
- upstream: refactor ECDSA-SK verification a little ahead of adding
-
- support for FIDO webauthn signature verification support; ok markus@
-
- OpenBSD-Commit-ID: c9f478fd8e0c1bd17e511ce8694f010d8e32043e
-
-commit 12848191f8fe725af4485d3600e0842d92f8637f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 05:54:10 2020 +0000
-
- upstream: support for RFC4648 base64url encoding; ok markus
-
- OpenBSD-Commit-ID: 0ef22c55e772dda05c112c88412c0797fec66eb4
-
-commit 473b4af43db12127137c7fc1a10928313f5a16d2
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 05:53:26 2020 +0000
-
- upstream: better terminology for permissions; feedback & ok markus@
-
- OpenBSD-Commit-ID: ff2a71803b5ea57b83cc3fa9b3be42b70e462fb9
-
-commit fc270baf264248c3ee3050b13a6c8c0919e6559f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Jun 22 05:52:05 2020 +0000
-
- upstream: better terminology for permissions; feedback & ok markus@
-
- OpenBSD-Commit-ID: ffb220b435610741dcb4de0e7fc68cbbdc876d2c
-
-commit 00531bb42f1af17ddabea59c3d9c4b0629000d27
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jun 19 07:21:42 2020 +0000
-
- upstream: Correct synopsis and usage for the options accepted when
-
- passing a command to ssh-agent. ok jmc@
-
- OpenBSD-Commit-ID: b36f0679cb0cac0e33b361051b3406ade82ea846
-
-commit b4556c8ad7177e379f0b60305a0cd70f12180e7c
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jun 19 19:22:00 2020 +1000
-
- Add OPENBSD ORIGINAL marker to bcrypt_pbkdf.
-
-commit 1babb8bb14c423011ca34c2f563bb1c51c8fbf1d
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jun 19 19:10:47 2020 +1000
-
- Extra brackets around sizeof() in bcrypt.
-
- Prevents following warning from clang 10:
- bcrypt_pbkdf.c:94:40: error: expression does not compute the number of
- elements in this array; element type is ´uint32_tÂ[...]
- place parentheses around the ´sizeof(uint64_t)´ expression to
- silence this warning
-
-commit 9e065729592633290e5ddb6852792913b2286545
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jun 19 18:47:56 2020 +1000
-
- Add includes.h to new test.
-
- Fixes warnings eg "´bounded´ attribute directive ignor" from gcc.
-
-commit e684b1ea365e070433f282a3c1dabc3e2311ce49
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jun 19 18:38:39 2020 +1000
-
- Skip OpenSSL specific tests w/out OpenSSL.
-
- Allows unit tests to pass when configure'ed --without-openssl.
-
-commit 80610e97a76407ca982e62fd051c9be03622fe7b
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jun 19 17:15:27 2020 +1000
-
- Hook sshsig tests up to Portable Makefiles.
-
-commit 5dba1fcabacaab46693338ec829b42a1293d1f52
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jun 19 05:07:09 2020 +0000
-
- upstream: Test that ssh-agent exits when running as as subprocess
-
- of a specified command (ie "ssh-agent command"). Would have caught bz#3181.
-
- OpenBSD-Regress-ID: 895b4765ba5153eefaea3160a7fe08ac0b6db8b3
-
-commit 68e8294f6b04f9590ea227e63d3e129398a49e27
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 19 04:34:21 2020 +0000
-
- upstream: run sshsig unit tests
-
- OpenBSD-Regress-ID: 706ef17e2b545b64873626e0e35553da7c06052a
-
-commit 5edfa1690e9a75048971fd8775f7c16d153779db
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 19 04:32:09 2020 +0000
-
- upstream: basic unit test for sshsig.[ch], including FIDO keys
-
- verification only so far
-
- OpenBSD-Regress-ID: fb1f946c8fc59206bc6a6666e577b5d5d7e45896
-
-commit e95c0a0e964827722d29b4bc00d5c0ff4afe0ed2
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 19 03:48:49 2020 +0000
-
- upstream: basic unit test for FIDO kep parsing
-
- OpenBSD-Regress-ID: 8089b88393dd916d7c95422b442a6fd4cfe00c82
-
-commit 7775819c6de3e9547ac57b87c7dd2bfd28cefcc5
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Jun 18 23:34:19 2020 +0000
-
- upstream: check public host key matches private; ok markus@ (as
-
- part of previous diff)
-
- OpenBSD-Commit-ID: 65a4f66436028748b59fb88b264cb8c94ce2ba63
-
-commit c514f3c0522855b4d548286eaa113e209051a6d2
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Thu Jun 18 23:33:38 2020 +0000
-
- upstream: avoid spurious "Unable to load host key" message when
-
- sshd can load a private key but no public counterpart; with & ok markus@
-
- OpenBSD-Commit-ID: 0713cbdf9aa1ff8ac7b1f78b09ac911af510f81b
-
-commit 7fafaeb5da365f4a408fec355dac04a774f27193
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 12 05:26:37 2020 +0000
-
- upstream: correct RFC number; from HARUYAMA Seigo via GH PR191
-
- OpenBSD-Commit-ID: 8d03b6c96ca98bfbc23d3754c3c33e1fe0852e10
-
-commit 3a7f654d5bcb20df24a134b6581b0d235da4564a
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 5 06:18:07 2020 +0000
-
- upstream: unbreak "sshd -ddd" - close of config passing fd happened too
-
- early. ok markus@
-
- OpenBSD-Commit-ID: 49346e945c6447aca3e904e65fc400128d2f8ed0
-
-commit 3de02be39e5c0c2208d9682a3844991651620fcc
-Author: Andreas Schwab <schwab@suse.de>
-Date: Mon May 25 11:10:44 2020 +0200
-
- Add support for AUDIT_ARCH_RISCV64
-
-commit ea547eb0329c2f8da77a4ac05f6c330bd49bdaab
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 5 03:25:35 2020 +0000
-
- upstream: make sshbuf_putb(b, NULL) a no-op
-
- OpenBSD-Commit-ID: 976fdc99b500e347023d430df372f31c1dd128f7
-
-commit 69796297c812640415c6cea074ea61afc899cbaa
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 5 03:24:36 2020 +0000
-
- upstream: make sshbuf_dump() args const
-
- OpenBSD-Commit-ID: b4a5accae750875d665b862504169769bcf663bd
-
-commit 670428895739d1f79894bdb2457891c3afa60a59
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Jun 5 03:24:16 2020 +0000
-
- upstream: wrap long line
-
- OpenBSD-Commit-ID: ed405a12bd27bdc9c52e169bc5ff3529b4ebbbb2
-
-commit 2f648cf222882719040906722b3593b01df4ad1a
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Jun 5 03:15:26 2020 +0000
-
- upstream: Correct historical comment: provos@ modified OpenSSH to
-
- work with SSLeay (very quickly replaced by OpenSSL) not SSL in general. ok
- deraadt, historical context markus@
-
- OpenBSD-Commit-ID: 7209e07a2984b50411ed8ca5a4932da5030d2b90
-
-commit 56548e4efcc3e3e8093c2eba30c75b23e561b172
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Jun 3 08:23:18 2020 +0000
-
- upstream: Import regenerated moduli file.
-
- OpenBSD-Commit-ID: 52ff0e3205036147b2499889353ac082e505ea54
-
-commit 8da801f585dd9c534c0cbe487a3b1648036bf2fb
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Jun 5 13:20:10 2020 +1000
-
- Test fallthrough in OSSH_CHECK_CFLAG_COMPILE.
-
- clang 10's -Wimplicit-fallthrough does not understand /* FALLTHROUGH */
- comments and we don't use the __attribute__((fallthrough)) that it's
- looking for. This has the effect of turning off -Wimplicit-fallthrough
- where it does not currently help (particularly with -Werror). ok djm@
-
-commit 049297de975b92adcc2db77e3fb7046c0e3c695d
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Wed Jun 3 08:23:18 2020 +0000
-
- upstream: Import regenerated moduli file.
-
- OpenBSD-Commit-ID: 52ff0e3205036147b2499889353ac082e505ea54
-
-commit b458423a38a3140ac022ffcffcb332609faccfe3
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Mon Jun 1 07:11:38 2020 +0000
-
- upstream: Remove now-unused proto_spec and associated definitions.
-
- ok djm@
-
- OpenBSD-Commit-ID: 2e2b18e3aa6ee22a7b69c39f2d3bd679ec35c362
-
-commit 5ad3c3a33ef038b55a14ebd31faeeec46073db2c
-Author: millert@openbsd.org <millert@openbsd.org>
-Date: Fri May 29 21:22:02 2020 +0000
-
- upstream: Fix error message on close(2) and add printf format
-
- attributes. From Christos Zoulas, OK markus@
-
- OpenBSD-Commit-ID: 41523c999a9e3561fcc7082fd38ea2e0629ee07e
-
-commit 712ac1efb687a945a89db6aa3e998c1a17b38653
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri May 29 11:17:56 2020 +0000
-
- upstream: Make dollar_expand variadic and pass a real va_list to
-
- vdollar_percent_expand. Fixes build error on arm64 spotted by otto@.
-
- OpenBSD-Commit-ID: 181910d7ae489f40ad609b4cf4a20f3d068a7279
-
-commit 837ffa9699a9cba47ae7921d2876afaccc027133
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri May 29 20:39:00 2020 +1000
-
- Omit ToS setting if we don't have IPV6_TCLASS too.
-
- Fixes tests on old BSDs.
-
-commit f85b118d2150847cc333895296bc230e367be6b5
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri May 29 09:02:44 2020 +0000
-
- upstream: Pass a NULL instead of zeroed out va_list from
-
- dollar_expand. The original intent was in case there's some platform where
- va_list is not a pointer equivalent, but on i386 this chokes on the memset.
- This unbreaks that build, but will require further consideration.
-
- OpenBSD-Commit-ID: 7b90afcd8e1137a1d863204060052aef415baaf7
-
-commit ec1d50b01c84ff667240ed525f669454c4ebc8e9
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Fri May 29 05:48:39 2020 +0000
-
- upstream: remove a stray .El;
-
- OpenBSD-Commit-ID: 58ddfe6f8a15fe10209db6664ecbe7896f1d167c
-
-commit 058674a62ffe33f01d871d46e624bc2a2c22d91f
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri May 29 04:32:26 2020 +0000
-
- upstream: Add regression and unit tests for ${ENV} style
-
- environment variable expansion in various keywords (bz#3140). ok djm@
-
- OpenBSD-Regress-ID: 4d9ceb95d89365b7b674bc26cf064c15a5bbb197
-
-commit 0b15892fc47d6840eba1291a6be9be1a70bc8972
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri May 29 01:21:35 2020 +0000
-
- upstream: Unit test for convtime. ok djm@
-
- OpenBSD-Regress-ID: cec4239efa2fc4c7062064f07a847e1cbdbcd5dd
-
-commit 188e332d1c8f9f24e5b6659e9680bf083f837df9
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 29 05:37:03 2020 +0000
-
- upstream: mention that wildcards are processed in lexical order;
-
- bz#3165
-
- OpenBSD-Commit-ID: 8856f3d1612bd42e9ee606d89386cae456dd165c
-
-commit 4a1b46e6d032608b7ec00ae51c4e25b82f460b05
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri May 29 04:25:40 2020 +0000
-
- upstream: Allow some keywords to expand shell-style ${ENV}
-
- environment variables on the client side. The supported keywords are
- CertificateFile, ControlPath, IdentityAgent and IdentityFile, plus
- LocalForward and RemoteForward when used for Unix domain socket paths. This
- would for example allow forwarding of Unix domain socket paths that change at
- runtime. bz#3140, ok djm@
-
- OpenBSD-Commit-ID: a4a2e801fc2d4df2fe0e58f50d9c81b03822dffa
-
-commit c9bab1d3a9e183cef3a3412f57880a0374cc8cb2
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri May 29 14:49:16 2020 +1000
-
- depend
-
-commit 0b0d219313bf9239ca043f20b1a095db0245588f
-Author: sobrado <sobrado@openbsd.org>
-Date: Thu Sep 3 23:06:28 2015 +0000
-
- partial sync of regress/netcat.c with upstream
-
- synchronize synopsis and usage.
-
-commit 0f04c8467f589f85a523e19fd684c4f6c4ed9482
-Author: chl <chl@openbsd.org>
-Date: Sun Jul 26 19:12:28 2015 +0000
-
- partial sync of regress/netcat.c with upstream
-
- remove unused variable
-
- ok tedu@
-
-commit d6a81050ace2630b06c3c6dd39bb4eef5d1043f8
-Author: tobias <tobias@openbsd.org>
-Date: Thu Mar 26 21:22:50 2015 +0000
-
- partial sync of regress/netcat.c with upstream
-
- 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. :)
-
- with input by and ok djm
-
-commit bf3893dddd35e16def04bf48ed2ee1ad695b8f82
-Author: tobias <tobias@openbsd.org>
-Date: Thu Mar 26 10:36:03 2015 +0000
-
- partial sync of regress/netcat.c with upstream
-
- Check for short writes in fdpass(). Clean up while at it.
-
- ok djm
-
-commit e18435fec124b4c08eb6bbbbee9693dc04f4befb
-Author: jca <jca@openbsd.org>
-Date: Sat Feb 14 22:40:22 2015 +0000
-
- partial sync of regress/netcat.c with upstream
-
- Support for nc -T on IPv6 addresses.
-
- ok sthen@
-
-commit 4c607244054a036ad3b2449a6cb4c15feb846a76
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 29 03:14:02 2020 +0000
-
- upstream: fix compilation on !HAVE_DLOPEN platforms; stub function
-
- was not updated to match API change. From Dale Rahn via beck@ ok markus@
-
- OpenBSD-Commit-ID: 2b8d054afe34c9ac85e417dae702ef981917b836
-
-commit 224418cf55611869a4ace1b8b07bba0dff77a9c3
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 29 03:11:54 2020 +0000
-
- upstream: fix exit status for downloading of FIDO resident keys;
-
- from Pedro Martelletto, ok markus@
-
- OpenBSD-Commit-ID: 0da77dc24a1084798eedd83c39a002a9d231faef
-
-commit 1001dd148ed7c57bccf56afb40cb77482ea343a6
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri May 29 01:20:46 2020 +0000
-
- upstream: Fix multiplier in convtime when handling seconds after
-
- other units. bz#3171, spotted by ronf at timeheart.net, ok djm@.
-
- OpenBSD-Commit-ID: 95b7a848e1083974a65fbb6ccb381d438e1dd5be
-
-commit 7af1e92cd289b7eaa9a683e9a6f2fddd98f37a01
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 27 22:37:53 2020 +0000
-
- upstream: fix Include before Match in sshd_config; bz#3122 patch
-
- from Jakub Jelen
-
- OpenBSD-Commit-ID: 1b0aaf135fe6732b5d326946042665dd3beba5f4
-
-commit 0a9a611619b0a1fecd0195ec86a9885f5d681c84
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 27 21:59:11 2020 +0000
-
- upstream: Do not call process_queued_listen_addrs() for every
-
- included file from sshd_config; patch from Jakub Jelen
-
- OpenBSD-Commit-ID: 0ff603d6f06a7fab4881f12503b53024799d0a49
-
-commit 16ea1fdbe736648f79a827219134331f8d9844fb
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 27 21:25:18 2020 +0000
-
- upstream: fix crash in recallocarray when deleting SendEnv
-
- variables; spotted by & ok sthen@
-
- OpenBSD-Commit-ID: b881e8e849edeec5082b5c0a87d8d7cff091a8fd
-
-commit 47adfdc07f4f8ea0064a1495500244de08d311ed
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 27 22:35:19 2020 +0000
-
- upstream: two new tests for Include in sshd_config, checking whether
-
- Port directives are processed correctly and handling of Include directives
- that appear before Match. Both tests currently fail. bz#3122 and bz#3169 -
- patch from Jakub Jelen
-
- OpenBSD-Regress-ID: 8ad5a4a385a63f0a1c59c59c763ff029b45715df
-
-commit 47faad8f794516c33864d866aa1b55d88416f94c
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed May 27 23:26:23 2020 +1000
-
- Document that libfido2 >= 1.4.0 is needed.
-
-commit 4be563994c0cbe9856e7dd3078909f41beae4a9c
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue May 26 01:59:46 2020 +0000
-
- upstream: fix memleak of signature; from Pedro Martelletto
-
- OpenBSD-Commit-ID: d0a6eb07e77c001427d738b220dd024ddc64b2bb
-
-commit 0c111eb84efba7c2a38b2cc3278901a0123161b9
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue May 26 01:26:58 2020 +0000
-
- upstream: Restrict ssh-agent from signing web challenges for FIDO
-
- keys.
-
- When signing messages in ssh-agent using a FIDO key that has an
- application string that does not start with "ssh:", ensure that the
- message being signed is one of the forms expected for the SSH protocol
- (currently pubkey authentication and sshsig signatures).
-
- This prevents ssh-agent forwarding on a host that has FIDO keys
- attached granting the ability for the remote side to sign challenges
- for web authentication using those keys too.
-
- Note that the converse case of web browsers signing SSH challenges is
- already precluded because no web RP can have the "ssh:" prefix in the
- application string that we require.
-
- ok markus@
-
- OpenBSD-Commit-ID: 9ab6012574ed0352d2f097d307f4a988222d1b19
-
-commit 9c5f64b6cb3a68b99915202d318b842c6c76cf14
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue May 26 01:09:05 2020 +0000
-
- upstream: improve logging for MaxStartups connection throttling:
-
- have sshd log when it starts and stops throttling and periodically while in
- this state. bz#3055 ok markus@
-
- OpenBSD-Commit-ID: 2e07a09a62ab45d790d3d2d714f8cc09a9ac7ab9
-
-commit 756c6f66aee83a5862a6f936a316f761532f3320
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue May 26 01:06:52 2020 +0000
-
- upstream: add fmt_timeframe() (from bgpd) to format a time
-
- interval in a human- friendly format. Switch copyright for this file from BSD
- to MIT to make it easier to add Henning's copyright for this function. ok
- markus@
-
- OpenBSD-Commit-ID: 414a831c662df7e68893e5233e86f2cac081ccf9
-
-commit 2a63ce5cd6d0e782783bf721462239b03757dd49
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon May 18 04:29:35 2020 +0000
-
- upstream: avoid possible NULL deref; from Pedro Martelletto
-
- OpenBSD-Commit-ID: e6099c3fbb70aa67eb106e84d8b43f1fa919b721
-
-commit 4b307faf2fb0e63e51a550b37652f7f972df9676
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Fri May 15 08:34:03 2020 +0000
-
- upstream: sshd listener must not block if reexecd sshd exits
-
- in write(2) on config_s[0] if the forked child exits early before finishing
- recv_rexec_state (e.g. with fatal()) because config_s[1] stays open in the
- parent. this prevents the parent from accepting new connections. ok djm,
- deraadt
-
- OpenBSD-Commit-ID: 92ccfeb939ccd55bda914dc3fe84582158c4a9ef
-
-commit af8b16fb2cce880341c0ee570ceb0d84104bdcc0
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 15 03:57:33 2020 +0000
-
- upstream: fix off-by-one error that caused sftp downloads to make
-
- one more concurrent request that desired. This prevented using sftp(1) in
- unpipelined request/response mode, which is useful when debugging. Patch from
- Stephen Goetze in bz#3054
-
- OpenBSD-Commit-ID: 41b394ebe57037dbc43bdd0eef21ff0511191f28
-
-commit d7d753e2979f2d3c904b03a08d30856cd2a6e892
-Author: deraadt@openbsd.org <deraadt@openbsd.org>
-Date: Wed May 13 22:38:41 2020 +0000
-
- upstream: we are still aiming for pre-C99 ...
-
- OpenBSD-Commit-ID: a240fc9cbe60bc4e6c3d24d022eb4ab01fe1cb38
-
-commit 2ad7b7e46408dbebf2a4efc4efd75a9544197d57
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 13 10:08:02 2020 +0000
-
- upstream: Enable credProtect extension when generating a resident
-
- key.
-
- The FIDO 2.1 Client to Authenticator Protocol introduced a "credProtect"
- feature to better protect resident keys. This option allows (amone other
- possibilities) requiring a PIN prior to all operations that may retrieve
- the key handle.
-
- Patch by Pedro Martelletto; ok djm and markus
-
- OpenBSD-Commit-ID: 013bc06a577dcaa66be3913b7f183eb8cad87e73
-
-commit 1e70dc3285fc9b4f6454975acb81e8702c23dd89
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 13 09:57:17 2020 +0000
-
- upstream: always call fido_init(); previous behaviour only called
-
- fido_init() when SK_DEBUG was defined. Harmless with current libfido2, but
- this isn't guaranteed in the future.
-
- OpenBSD-Commit-ID: c7ea20ff2bcd98dd12015d748d3672d4f01f0864
-
-commit f2d84f1b3fa68d77c99238d4c645d0266fae2a74
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 13 09:55:57 2020 +0000
-
- upstream: preserve group/world read permission on known_hosts
-
- file across runs of "ssh-keygen -Rf /path". The old behaviour was to remove
- all rights for group/other. bz#3146 ok dtucker@
-
- OpenBSD-Commit-ID: dc369d0e0b5dd826430c63fd5f4b269953448a8a
-
-commit 05a651400da6fbe12296c34e3d3bcf09f034fbbf
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 13 09:52:41 2020 +0000
-
- upstream: when ordering the hostkey algorithms to request from a
-
- server, prefer certificate types if the known_hosts files contain a key
- marked as a @cert-authority; bz#3157 ok markus@
-
- OpenBSD-Commit-ID: 8f194573e5bb7c01b69bbfaabc68f27c9fa5e0db
-
-commit 829451815ec207e14bd54ff5cf7e22046816f042
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue May 12 01:41:32 2020 +0000
-
- upstream: fix non-ASCII quote that snuck in; spotted by Gabriel
-
- Kihlman
-
- OpenBSD-Commit-ID: 04bcde311de2325d9e45730c744c8de079b49800
-
-commit 5a442cec92c0efd6fffb4af84bf99c70af248ef3
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon May 11 02:11:29 2020 +0000
-
- upstream: clarify role of FIDO tokens in multi-factor
-
- authentictation; mostly from Pedro Martelletto
-
- OpenBSD-Commit-ID: fbe05685a1f99c74b1baca7130c5a03c2df7c0ac
-
-commit ecb2c02d994b3e21994f31a70ff911667c262f1f
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 8 05:13:14 2020 +0000
-
- upstream: fix compilation with DEBUG_KEXDH; bz#3160 ok dtucker@
-
- OpenBSD-Commit-ID: 832e771948fb45f2270e8b8895aac36d176ba17a
-
-commit 3ab6fccc3935e9b778ff52f9c8d40f215d58e01d
-Author: Damien Miller <djm@mindrot.org>
-Date: Thu May 14 12:22:09 2020 +1000
-
- prefer ln to cp for temporary copy of sshd
-
- I saw failures on the reexec fallback test on Darwin 19.4 where
- fork()ed children of a process that had it's executable removed
- would instantly fail. Using ln to preserve the inode avoids this.
-
-commit f700d316c6b15a9cfbe87230d2dca81a5d916279
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed May 13 15:24:51 2020 +1000
-
- Actually skip pty tests when needed.
-
-commit 08ce6b2210f46f795e7db747809f8e587429dfd2
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed May 13 13:56:45 2020 +1000
-
- Skip building sk-dummy library if no SK support.
-
-commit 102d106bc2e50347d0e545fad6ff5ce408d67247
-Author: Damien Miller <djm@mindrot.org>
-Date: Wed May 13 12:08:34 2020 +1000
-
- explicitly manage .depend and .depend.bak
-
- Bring back removal of .depend to give the file a known state before
- running makedepend, but manually move aside the current .depend file
- and restore it as .depend.bak afterwards so the stale .depend check
- works as expected.
-
-commit 83a6dc6ba1e03b3fa39d12a8522b8b0e68dd6390
-Author: Damien Miller <djm@mindrot.org>
-Date: Wed May 13 12:03:42 2020 +1000
-
- make depend
-
-commit 7c0bbed967abed6301a63e0267cc64144357a99a
-Author: Damien Miller <djm@mindrot.org>
-Date: Wed May 13 12:01:10 2020 +1000
-
- revert removal of .depend before makedepend
-
- Commit 83657eac4 started removing .depend before running makedepend
- to reset the contents of .depend to a known state. Unfortunately
- this broke the depend-check step as now .depend.bak would only ever
- be created as an empty file.
-
- ok dtucker
-
-commit 58ad004acdcabf3b9f40bc3aaa206b25d998db8c
-Author: Damien Miller <djm@mindrot.org>
-Date: Tue May 12 12:58:46 2020 +1000
-
- prepare for 8.3 release
-
-commit 4fa9e048c2af26beb7dc2ee9479ff3323e92a7b5
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri May 8 21:50:43 2020 +1000
-
- Ensure SA_SIGNAL test only signals itself.
-
- When the test's child signals its parent and it exits the result of
- getppid changes. On Ubuntu 20.04 this results in the ppid being that
- of the GDM session, causing it to exit. Analysis and testing from pedro
- at ambientworks.net
-
-commit dc2da29aae76e170d22f38bb36f1f5d1edd5ec2b
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri May 8 13:31:53 2020 +1000
-
- sync config.guess/config.sub with latest versions
-
- ok dtucker@
-
-commit a8265bd64c14881fc7f4fa592f46dfc66b911f17
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 6 20:58:01 2020 +0000
-
- upstream: openssh-8.3; ok deraadt@
-
- OpenBSD-Commit-ID: c8831ec88b9c750f5816aed9051031fb535d22c1
-
-commit 955854cafca88e0cdcd3d09ca1ad4ada465364a1
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed May 6 20:57:38 2020 +0000
-
- upstream: another case where a utimes() failure could make scp send
-
- a desynchronising error; reminded by Aymeric Vincent ok deraadt markus
-
- OpenBSD-Commit-ID: 2ea611d34d8ff6d703a7a8bf858aa5dbfbfa7381
-
-commit 59d531553fd90196946743da391f3a27cf472f4e
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Thu May 7 15:34:12 2020 +1000
-
- Check if -D_REENTRANT is needed for localtime_r.
-
- On at least HP-UX 11.11, the localtime_r declararation is behind
- ifdef _REENTRANT. Check for and add if needed.
-
-commit c13403e55de8cdbb9da628ed95017b1d4c0f205f
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Tue May 5 11:32:43 2020 +1000
-
- Skip security key tests if ENABLE_SK not set.
-
-commit 4da393f87cd52d788c84112ee3f2191c9bcaaf30
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 04:03:14 2020 +0000
-
- upstream: sure enough, some of the test data that we though were in
-
- new format were actually in the old format; fix from Michael Forney
-
- OpenBSD-Regress-ID: a41a5c43a61b0f0b1691994dbf16dfb88e8af933
-
-commit 15bfafc1db4c8792265ada9623a96f387990f732
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 04:00:29 2020 +0000
-
- upstream: make mktestdata.sh generate old/new format keys that we
-
- expect. This script was written before OpenSSH switched to new-format private
- keys by default and was never updated to the change (until now) From Michael
- Forney
-
- OpenBSD-Regress-ID: 38cf354715c96852e5b71c2393fb6e7ad28b7ca7
-
-commit 7882d2eda6ad3eb82220a85294de545d20ef82db
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 03:58:02 2020 +0000
-
- upstream: portability fix for sed that always emil a newline even
-
- if the input does not contain one; from Michael Forney
-
- OpenBSD-Regress-ID: 9190c3ddf0d2562ccc02c4a95fce0e392196bfc7
-
-commit 8074f9499e454df0acdacea33598858a1453a357
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 03:36:25 2020 +0000
-
- upstream: remove obsolete RSA1 test keys; spotted by Michael Forney
-
- OpenBSD-Regress-ID: 6384ba889594e217d166908ed8253718ab0866da
-
-commit c697e46c314aa94574af0d393d80f23e0ebc9748
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Sat May 2 18:34:47 2020 +1000
-
- Update .depend.
-
-commit 83657eac42941f270c4b02b2c46d9a21f616ef99
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Sat May 2 18:29:40 2020 +1000
-
- Remove use of tail for 'make depend'.
-
- Not every tail supports +N and we can do with out it so just remove it.
- Prompted by mforney at mforney.org.
-
-commit d25d630d24c5a1c64d4e646510e79dc22d6d7b88
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat May 2 07:19:43 2020 +0000
-
- upstream: we have a sshkey_save_public() function to save public keys;
-
- use it and save a bunch of redundant code.
-
- Patch from loic AT venez.fr; ok markus@ djm@
-
- OpenBSD-Commit-ID: f93e030a0ebcd0fd9054ab30db501ec63454ea5f
-
-commit e9dc9863723e111ae05e353d69df857f0169544a
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri May 1 18:32:25 2020 +1000
-
- Use LONG_LONG_MAX and friends if available.
-
- If we don't have LLONG_{MIN,MAX} but do have LONG_LONG_{MIN,MAX}
- then use those instead. We do calculate these values in configure,
- but it turns out that at least one compiler (old HP ANSI C) can't
- parse "-9223372036854775808LL" without mangling it. (It can parse
- "-9223372036854775807LL" which is presumably why its limits.h defines
- LONG_LONG_MIN as the latter minus 1.)
-
- Fixes rekey test when compiled with the aforementioned compiler.
-
-commit aad87b88fc2536b1ea023213729aaf4eaabe1894
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 06:31:42 2020 +0000
-
- upstream: when receving a file in sink(), be careful to send at
-
- most a single error response after the file has been opened. Otherwise the
- source() and sink() can become desyncronised. Reported by Daniel Goujot,
- Georges-Axel Jaloyan, Ryan Lahfa, and David Naccache.
-
- ok deraadt@ markus@
-
- OpenBSD-Commit-ID: 6c14d233c97349cb811a8f7921ded3ae7d9e0035
-
-commit 31909696c4620c431dd55f6cd15db65c4e9b98da
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 06:28:52 2020 +0000
-
- upstream: expose vasnmprintf(); ok (as part of other commit) markus
-
- deraadt
-
- OpenBSD-Commit-ID: 2e80cea441c599631a870fd40307d2ade5a7f9b5
-
-commit 99ce9cefbe532ae979744c6d956b49f4b02aff82
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri May 1 04:23:11 2020 +0000
-
- upstream: avoid NULL dereference when attempting to convert invalid
-
- ssh.com private keys using "ssh-keygen -i"; spotted by Michael Forney
-
- OpenBSD-Commit-ID: 2e56e6d26973967d11d13f56ea67145f435bf298
-
-commit 6c6072ba8b079e6f5caa38b011a6f4570c14ed38
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri May 1 15:09:26 2020 +1000
-
- See if SA_RESTART signals will interrupt select().
-
- On some platforms (at least older HP-UXes such as 11.11, possibly others)
- setting SA_RESTART on signal handers will cause it to not interrupt
- select(), at least for calls that do not specify a timeout. Try to
- detect this and if found, don't use SA_RESTART.
-
- POSIX says "If SA_RESTART has been set for the interrupting signal, it
- is implementation-dependent whether select() restarts or returns with
- [EINTR]" so this behaviour is within spec.
-
-commit 90a0b434ed41f9c505662dba8782591818599cb3
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri May 1 13:55:03 2020 +1000
-
- fix reversed test
-
-commit c0dfd18dd1c2107c73d18f70cd164f7ebd434b08
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri May 1 13:29:16 2020 +1000
-
- wrap sha2.h inclusion in #ifdef HAVE_SHA2_H
-
-commit a01817a9f63dbcbbc6293aacc4019993a4cdc7e3
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue Apr 28 04:59:29 2020 +0000
-
- upstream: adapt dummy FIDO middleware to API change; ok markus@
-
- OpenBSD-Regress-ID: 8bb84ee500c2eaa5616044314dd0247709a1790f
-
-commit 261571ddf02ea38fdb5e4a97c69ee53f847ca5b7
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Thu Apr 30 18:28:37 2020 +0000
-
- upstream: tweak previous; ok markus
-
- OpenBSD-Commit-ID: 41895450ce2294ec44a5713134491cc31f0c09fd
-
-commit 5de21c82e1d806d3e401b5338371e354b2e0a66f
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Thu Apr 30 17:12:20 2020 +0000
-
- upstream: bring back debug() removed in rev 1.74; noted by pradeep
-
- kumar
-
- OpenBSD-Commit-ID: 8d134d22ab25979078a3b48d058557d49c402e65
-
-commit ea14103ce9a5e13492e805f7e9277516ff5a4273
-Author: markus@openbsd.org <markus@openbsd.org>
-Date: Thu Apr 30 17:07:10 2020 +0000
-
- upstream: run the 2nd ssh with BatchMode for scp -3
-
- OpenBSD-Commit-ID: 77994fc8c7ca02d88e6d0d06d0f0fe842a935748
-
-commit 59d2de956ed29aa5565ed5e5947a7abdb27ac013
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Tue Apr 28 04:02:29 2020 +0000
-
- upstream: when signing a challenge using a FIDO toke, perform the
-
- hashing in the middleware layer rather than in ssh code. This allows
- middlewares that call APIs that perform the hashing implicitly (including
- Microsoft's AFAIK). ok markus@
-
- OpenBSD-Commit-ID: c9fc8630aba26c75d5016884932f08a5a237f37d
-
-commit c9d10dbc0ccfb1c7568bbb784f7aeb7a0b5ded12
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Sun Apr 26 09:38:14 2020 +0000
-
- upstream: Fix comment typo. Patch from mforney at mforney.org.
-
- OpenBSD-Commit-ID: 3565f056003707a5e678e60e03f7a3efd0464a2b
-
-commit 4d2c87b4d1bde019cdd0f00552fcf97dd8b39940
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Sat Apr 25 06:59:36 2020 +0000
-
- upstream: We've standardized on memset over bzero, replace a couple
-
- that had slipped in. ok deraadt markus djm.
-
- OpenBSD-Commit-ID: f5be055554ee93e6cc66b0053b590bef3728dbd6
-
-commit 7f23f42123d64272a7b00754afa6b0841d676691
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri May 1 12:21:58 2020 +1000
-
- Include sys/byteorder.h for htons and friends.
-
- These are usually in netinet/in.h but on HP-UX they are not defined if
- _XOPEN_SOURCE_EXTENDED is set. Only needed for netcat in the regression
- tests.
-
-commit d27cba58c972d101a5de976777e518f34ac779cb
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri May 1 09:21:52 2020 +1000
-
- Fix conditional for openssl-based chacha20.
-
- Fixes warnings or link errors when building against older OpenSSLs.
- ok djm
-
-commit 20819b962dc1467cd6fad5486a7020c850efdbee
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Apr 24 15:07:55 2020 +1000
-
- Error out if given RDomain if unsupported.
-
- If the config contained 'RDomain %D' on a platform that did not support
- it, the error would not be detected until runtime resulting in a broken
- sshd. Detect this earlier and error out if found. bz#3126, based on a
- patch from jjelen at redhat.com, tweaks and ok djm@
-
-commit 2c1690115a585c624eed2435075a93a463a894e2
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Apr 24 03:33:21 2020 +0000
-
- upstream: Fix incorrect error message for "too many known hosts files."
-
- bz#3149, patch from jjelen at redhat.com.
-
- OpenBSD-Commit-ID: e0fcb07ed5cf7fd54ce340471a747c24454235e5
-
-commit 3beb7276e7a8aedd3d4a49f9c03b97f643448c92
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Apr 24 02:19:40 2020 +0000
-
- upstream: Remove leave_non_blocking() which is now dead code
-
- because nothing sets in_non_blocking_mode any more. Patch from
- michaael.meeks at collabora.com, ok djm@
-
- OpenBSD-Commit-ID: c403cefe97a5a99eca816e19cc849cdf926bd09c
-
-commit 8654e3561772f0656e7663a0bd6a1a8cb6d43300
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Thu Apr 23 21:28:09 2020 +0000
-
- upstream: ce examples of "Ar arg Ar arg" with "Ar arg arg" and
-
- stop the spread;
-
- OpenBSD-Commit-ID: af0e952ea0f5e2019c2ce953ed1796eca47f0705
-
-commit 67697e4a8246dd8423e44b8785f3ee31fee72d07
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Fri Apr 24 11:10:18 2020 +1000
-
- Update .depend.
-
-commit d6cc76176216fe3fac16cd20d148d75cb9c50876
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed Apr 22 14:07:00 2020 +1000
-
- Mailing list is now closed to non-subscribers.
-
- While there, add a reference to the bugzilla. ok djm@
-
-commit cecde6a41689d0ae585ec903b190755613a6de79
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed Apr 22 12:09:40 2020 +1000
-
- Put the values from env vars back.
-
- This merges the values from the recently removed environment into make's
- command line arguments since we actually need those.
-
-commit 300c4322b92e98d3346efa0aec1c094c94d0f964
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed Apr 22 11:33:15 2020 +1000
-
- Pass configure's egrep through to test-exec.sh.
-
- Use it to create a wrapper function to call it from tests. Fixes the
- keygen-comment test on platforms with impoverished default egrep (eg
- Solaris).
-
-commit c8d9796cfe046f00eb8b2096d2b7028d6a523a84
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed Apr 22 10:56:44 2020 +1000
-
- Remove unneeded env vars from t-exec invocation.
-
-commit 01d4cdcd4514e99a4b6eb9523cd832bbf008d1d7
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Tue Apr 21 23:14:58 2020 +0000
-
- upstream: Backslash '$' at then end of string. Prevents warning on
-
- some shells.
-
- OpenBSD-Regress-ID: 5dc27ab624c09d34078fd326b10e38c1ce9c741f
-
-commit 8854724ccefc1fa16f10b37eda2e759c98148caa
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Tue Apr 21 18:27:23 2020 +1000
-
- Sync rev 1.49.
-
- Prevent infinite for loop since i went from ssize_t to size_t. Patch from
- eagleoflqj via OpenSSH github PR#178, ok djm@, feedback & ok millert@
-
-commit d00d07b6744d3b4bb7aca46c734ecd670148da23
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Apr 20 04:44:47 2020 +0000
-
- upstream: regression test for printing of private key fingerprints and
-
- key comments, mostly by loic AT venez.fr (slightly tweaked for portability)
- ok dtucker@
-
- OpenBSD-Regress-ID: 8dc6c4feaf4fe58b6d634cd89afac9a13fd19004
-
-commit a98d5ba31e5e7e01317352f85fa63b846a960f8c
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Mon Apr 20 04:43:57 2020 +0000
-
- upstream: fix a bug I introduced in r1.406: when printing private key
-
- fingerprint of old-format key, key comments were not being displayed. Spotted
- by loic AT venez.fr, ok dtucker
-
- OpenBSD-Commit-ID: 2d98e4f9eb168eea733d17e141e1ead9fe26e533
-
-commit 32f2d0aad42c15e19bd3b07496076ca891573a58
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 07:16:07 2020 +0000
-
- upstream: repair private key fingerprint printing to also print
-
- comment after regression caused by my recent pubkey loading refactor.
- Reported by loic AT venez.fr, ok dtucker@
-
- OpenBSD-Commit-ID: f8db49acbee6a6ccb2a4259135693b3cceedb89e
-
-commit 094dd513f4b42e6a3cebefd18d1837eb709b4d99
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 07:15:11 2020 +0000
-
- upstream: refactor out some duplicate private key loading code;
-
- based on patch from loic AT venez.fr, ok dtucker@
-
- OpenBSD-Commit-ID: 5eff2476b0d8d0614924c55e350fb7bb9c84f45e
-
-commit 4e04f46f248f1708e39b900b76c9693c820eff68
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Fri Apr 17 06:12:41 2020 +0000
-
- upstream: add space beteen macro arg and punctuation;
-
- OpenBSD-Commit-ID: c93a6cbb4bf9468fc4c13e64bc1fd4efee201a44
-
-commit 44ae009a0112081d0d541aeaa90088bedb6f21ce
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 04:27:03 2020 +0000
-
- upstream: auth2-pubkey r1.89 changed the order of operations to
-
- checking AuthorizedKeysFile first and falling back to AuthorizedKeysCommand
- if no key was found in a file. Document this order here; bz3134
-
- OpenBSD-Commit-ID: afce0872cbfcfc1d4910ad7722e50f792a1dce12
-
-commit f96f17f920f38ceea6f3c5cb0b075c46b8929fdc
-Author: Damien Miller <djm@mindrot.org>
-Date: Fri Apr 17 14:07:15 2020 +1000
-
- sys/sysctl.h is only used on OpenBSD
-
- so change the preprocessor test used to include it to check
- __OpenBSD__, matching the code that uses the symbols it declares.
-
-commit 54688e937a69c7aebef8a3d50cbd4c6345bab2ca
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 03:38:47 2020 +0000
-
- upstream: fix reversed test that caused IdentitiesOnly=yes to not
-
- apply to keys loaded from a PKCS11Provider; bz3141, ok dtucker@
-
- OpenBSD-Commit-ID: e3dd6424b94685671fe84c9b9dbe352fb659f677
-
-commit 267cbc87b5b6e78973ac4d3c7a6f807ed226928c
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 03:34:42 2020 +0000
-
- upstream: mention that /etc/hosts.equiv and /etc/shosts.equiv are
-
- not considered for HostbasedAuthentication when the target user is root;
- bz3148
-
- OpenBSD-Commit-ID: fe4c1256929e53f23af17068fbef47852f4bd752
-
-commit c90f72d29e84b4a2709078bf5546a72c29a65177
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 03:30:05 2020 +0000
-
- upstream: make IgnoreRhosts a tri-state option: "yes" ignore
-
- rhosts/shosts, "no" allow rhosts/shosts or (new) "shosts-only" to allow
- .shosts files but not .rhosts. ok dtucker@
-
- OpenBSD-Commit-ID: d08d6930ed06377a80cf53923c1955e9589342e9
-
-commit 321c7147079270f3a154f91b59e66219aac3d514
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Fri Apr 17 03:23:13 2020 +0000
-
- upstream: allow the IgnoreRhosts directive to appear anywhere in a
-
- sshd_config, not just before any Match blocks; bz3148, ok dtucker@
-
- OpenBSD-Commit-ID: e042467d703bce640b1f42c5d1a62bf3825736e8
-
-commit ca5403b085a735055ec7b7cdcd5b91f2662df94c
-Author: jmc@openbsd.org <jmc@openbsd.org>
-Date: Sat Apr 11 20:20:09 2020 +0000
-
- upstream: add space between macro arg and punctuation;
-
- OpenBSD-Commit-ID: e579e4d95eef13059c30931ea1f09ed8296b819c
-
-commit 8af0244d7b4a65eed2e62f9c89141c7c8e63f09d
-Author: Darren Tucker <dtucker@dtucker.net>
-Date: Wed Apr 15 10:58:02 2020 +1000
-
- Add sys/syscall.h for syscall numbers.
-
- In some architecture/libc configurations we need to explicitly include
- sys/syscall.h for the syscall number (__NR_xxx) definitions. bz#3085,
- patch from blowfist at xroutine.net.
-
-commit 3779b50ee952078018a5d9e1df20977f4355df17
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Sat Apr 11 10:16:11 2020 +0000
-
- upstream: Refactor private key parsing. Eliminates a fair bit of
-
- duplicated code and fixes oss-fuzz#20074 (NULL deref) caused by a missing key
- type check in the ECDSA_CERT parsing path.
-
- feedback and ok markus@
-
- OpenBSD-Commit-ID: 4711981d88afb7196d228f7baad9be1d3b20f9c9
-
-commit b6a4013647db67ec622c144a9e05dd768f1966b3
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Apr 10 00:54:03 2020 +0000
-
- upstream: Add tests for TOKEN expansion of LocalForward and
-
- RemoteForward.
-
- OpenBSD-Regress-ID: 90fcbc60d510eb114a2b6eaf4a06ff87ecd80a89
-
-commit abc3e0a5179c13c0469a1b11fe17d832abc39999
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Mon Apr 6 09:43:55 2020 +0000
-
- upstream: Add utf8.c for asmprintf used by krl.c
-
- OpenBSD-Regress-ID: 433708d11165afdb189fe635151d21659dd37a37
-
-commit 990687a0336098566c3a854d23cce74a31ec6fe2
-Author: dtucker@openbsd.org <dtucker@openbsd.org>
-Date: Fri Apr 10 00:52:07 2020 +0000
-
- upstream: Add TOKEN percent expansion to LocalFoward and RemoteForward
-
- when used for Unix domain socket forwarding. Factor out the code for the
- config keywords that use the most common subset of TOKENS into its own
- function. bz#3014, ok jmc@ (man page bits) djm@
-
- OpenBSD-Commit-ID: bffc9f7e7b5cf420309a057408bef55171fd0b97
-
-commit 2b13d3934d5803703c04803ca3a93078ecb5b715
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:10:37 2020 +0000
-
- upstream: let sshkey_try_load_public() load public keys from the
-
- unencrypted envelope of private key files if not sidecar public key file is
- present.
-
- ok markus@
-
- OpenBSD-Commit-ID: 252a0a580e10b9a6311632530d63b5ac76592040
-
-commit d01f39304eaab0352793b490a25e1ab5f59a5366
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:09:24 2020 +0000
-
- upstream: simplify sshkey_try_load_public()
-
- ok markus@
-
- OpenBSD-Commit-ID: 05a5d46562aafcd70736c792208b1856064f40ad
-
-commit f290ab0833e44355fc006e4e67b92446c14673ef
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:08:46 2020 +0000
-
- upstream: add sshkey_parse_pubkey_from_private_fileblob_type()
-
- Extracts a public key from the unencrypted envelope of a new-style
- OpenSSH private key.
-
- ok markus@
-
- OpenBSD-Commit-ID: 44d7ab446e5e8c686aee96d5897b26b3939939aa
-
-commit 8d514eea4ae089626a55e11c7bc1745c8d9683e4
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:07:19 2020 +0000
-
- upstream: simplify sshkey_parse_private_fileblob_type()
-
- Try new format parser for all key types first, fall back to PEM
- parser only for invalid format errors.
-
- ok markus@
-
- OpenBSD-Commit-ID: 0173bbb3a5cface77b0679d4dca0e15eb5600b77
-
-commit 421169d0e758351b105eabfcebf42378ebf17217
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:05:59 2020 +0000
-
- upstream: check private key type against requested key type in
-
- new-style private decoding; ok markus@
-
- OpenBSD-Commit-ID: 04d44b3a34ce12ce5187fb6f6e441a88c8c51662
-
-commit 6aabfb6d22b36d07f584cba97f4cdc4363a829da
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:04:32 2020 +0000
-
- upstream: check that pubkey in private key envelope matches actual
-
- private key
-
- (this public key is currently unusued)
-
- ok markus@
-
- OpenBSD-Commit-ID: 634a60b5e135d75f48249ccdf042f3555112049c
-
-commit c0f5b2294796451001fd328c44f0d00f1114eddf
-Author: djm@openbsd.org <djm@openbsd.org>
-Date: Wed Apr 8 00:01:52 2020 +0000
-
- upstream: refactor private key parsing a little
-
- Split out the base64 decoding and private section decryption steps in
- to separate functions. This will make the decryption step easier to fuzz
- as well as making it easier to write a "load public key from new-format
- private key" function.
-
- ok markus@
-
- OpenBSD-Commit-ID: 7de31d80fb9062aa01901ddf040c286b64ff904e
diff --git a/INSTALL b/INSTALL
index b6e53ab6c088..c605182b9959 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,9 +1,10 @@
1. Prerequisites
----------------
-A C compiler. Any C89 or better compiler should work. Where supported,
-configure will attempt to enable the compiler's run-time integrity checking
-options. Some notes about specific compilers:
+A C compiler. Any C89 or better compiler that supports variadic macros
+should work. Where supported, configure will attempt to enable the
+compiler's run-time integrity checking options. Some notes about
+specific compilers:
- clang: -ftrapv and -sanitize=integer require the compiler-rt runtime
(CC=clang LDFLAGS=--rtlib=compiler-rt ./configure)
diff --git a/LICENCE b/LICENCE
index 77ef57699712..4b0db548a1b5 100644
--- a/LICENCE
+++ b/LICENCE
@@ -231,6 +231,7 @@ OpenSSH contains no GPL code.
Eric P. Allman
The Regents of the University of California
Constantin S. Svintsoff
+ Kungliga Tekniska Högskolan
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/Makefile.in b/Makefile.in
index 7250d3f315e1..5dde2baa079c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -49,6 +49,7 @@ CFLAGS_NOPIE=@CFLAGS_NOPIE@
CPPFLAGS=-I. -I$(srcdir) @CPPFLAGS@ $(PATHS) @DEFS@
PICFLAG=@PICFLAG@
LIBS=@LIBS@
+CHANNELLIBS=@CHANNELLIBS@
K5LIBS=@K5LIBS@
GSSLIBS=@GSSLIBS@
SSHDLIBS=@SSHDLIBS@
@@ -94,7 +95,7 @@ LIBOPENSSH_OBJS=\
LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
authfd.o authfile.o \
canohost.o channels.o cipher.o cipher-aes.o cipher-aesctr.o \
- cipher-ctr.o cleanup.o \
+ cleanup.o \
compat.o fatal.o hostfile.o \
log.o match.o moduli.o nchan.o packet.o \
readpass.o ttymodes.o xmalloc.o addr.o addrmatch.o \
@@ -123,7 +124,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \
auth.o auth2.o auth-options.o session.o \
auth2-chall.o groupaccess.o \
auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \
- auth2-none.o auth2-passwd.o auth2-pubkey.o \
+ auth2-none.o auth2-passwd.o auth2-pubkey.o auth2-pubkeyfile.o \
monitor.o monitor_wrap.o auth-krb5.o \
auth2-gss.o gss-serv.o gss-serv-krb5.o \
loginrec.o auth-pam.o auth-shadow.o auth-sia.o \
@@ -152,7 +153,7 @@ SSHKEYSCAN_OBJS=ssh-keyscan.o $(SKOBJS)
SFTPSERVER_OBJS=sftp-common.o sftp-server.o sftp-server-main.o
-SFTP_OBJS= sftp.o progressmeter.o $(SFTP_CLIENT_OBJS)
+SFTP_OBJS= sftp.o sftp-usergroup.o progressmeter.o $(SFTP_CLIENT_OBJS)
MANPAGES = moduli.5.out scp.1.out ssh-add.1.out ssh-agent.1.out ssh-keygen.1.out ssh-keyscan.1.out ssh.1.out sshd.8.out sftp-server.8.out sftp.1.out ssh-keysign.8.out ssh-pkcs11-helper.8.out ssh-sk-helper.8.out sshd_config.5.out ssh_config.5.out
MANPAGES_IN = moduli.5 scp.1 ssh-add.1 ssh-agent.1 ssh-keygen.1 ssh-keyscan.1 ssh.1 sshd.8 sftp-server.8 sftp.1 ssh-keysign.8 ssh-pkcs11-helper.8 ssh-sk-helper.8 sshd_config.5 ssh_config.5
@@ -184,16 +185,11 @@ FIXPATHSCMD = $(SED) $(PATHSUBS)
FIXALGORITHMSCMD= $(SHELL) $(srcdir)/fixalgorithms $(SED) \
@UNSUPPORTED_ALGORITHMS@
-all: configure-check $(CONFIGFILES) $(MANPAGES) $(TARGETS)
+all: $(CONFIGFILES) $(MANPAGES) $(TARGETS)
$(LIBSSH_OBJS): Makefile.in config.h
$(SSHOBJS): Makefile.in config.h
$(SSHDOBJS): Makefile.in config.h
-configure-check: $(srcdir)/configure
-
-$(srcdir)/configure: configure.ac $(srcdir)/m4/*.m4
- @echo "ERROR: configure is out of date; please run ${AUTORECONF} (and configure)" 1>&2
- @exit 1
.c.o:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
@@ -208,34 +204,34 @@ libssh.a: $(LIBSSH_OBJS)
$(RANLIB) $@
ssh$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHOBJS)
- $(LD) -o $@ $(SSHOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(GSSLIBS)
+ $(LD) -o $@ $(SSHOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(GSSLIBS) $(CHANNELLIBS)
sshd$(EXEEXT): libssh.a $(LIBCOMPAT) $(SSHDOBJS)
- $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS)
+ $(LD) -o $@ $(SSHDOBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(SSHDLIBS) $(LIBS) $(GSSLIBS) $(K5LIBS) $(CHANNELLIBS)
scp$(EXEEXT): $(LIBCOMPAT) libssh.a $(SCP_OBJS)
$(LD) -o $@ $(SCP_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
ssh-add$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHADD_OBJS)
- $(LD) -o $@ $(SSHADD_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+ $(LD) -o $@ $(SSHADD_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
ssh-agent$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHAGENT_OBJS)
- $(LD) -o $@ $(SSHAGENT_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+ $(LD) -o $@ $(SSHAGENT_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
ssh-keygen$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHKEYGEN_OBJS)
- $(LD) -o $@ $(SSHKEYGEN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+ $(LD) -o $@ $(SSHKEYGEN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
ssh-keysign$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHKEYSIGN_OBJS)
- $(LD) -o $@ $(SSHKEYSIGN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+ $(LD) -o $@ $(SSHKEYSIGN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
ssh-pkcs11-helper$(EXEEXT): $(LIBCOMPAT) libssh.a $(P11HELPER_OBJS)
- $(LD) -o $@ $(P11HELPER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ $(LD) -o $@ $(P11HELPER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) $(CHANNELLIBS)
ssh-sk-helper$(EXEEXT): $(LIBCOMPAT) libssh.a $(SKHELPER_OBJS)
- $(LD) -o $@ $(SKHELPER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) $(LIBFIDO2)
+ $(LD) -o $@ $(SKHELPER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS) $(LIBFIDO2) $(CHANNELLIBS)
ssh-keyscan$(EXEEXT): $(LIBCOMPAT) libssh.a $(SSHKEYSCAN_OBJS)
- $(LD) -o $@ $(SSHKEYSCAN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS)
+ $(LD) -o $@ $(SSHKEYSCAN_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS) $(CHANNELLIBS)
sftp-server$(EXEEXT): $(LIBCOMPAT) libssh.a $(SFTPSERVER_OBJS)
$(LD) -o $@ $(SFTPSERVER_OBJS) $(LDFLAGS) -lssh -lopenbsd-compat -lssh $(LIBS)
@@ -515,26 +511,27 @@ regress-prep:
ln -s `cd $(srcdir) && pwd`/regress/Makefile `pwd`/regress/Makefile
REGRESSLIBS=libssh.a $(LIBCOMPAT)
+TESTLIBS=$(LIBS) $(CHANNELLIBS)
regress/modpipe$(EXEEXT): $(srcdir)/regress/modpipe.c $(REGRESSLIBS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/modpipe.c \
- $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
regress/setuid-allowed$(EXEEXT): $(srcdir)/regress/setuid-allowed.c $(REGRESSLIBS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/setuid-allowed.c \
- $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
regress/netcat$(EXEEXT): $(srcdir)/regress/netcat.c $(REGRESSLIBS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/netcat.c \
- $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
regress/check-perm$(EXEEXT): $(srcdir)/regress/check-perm.c $(REGRESSLIBS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/check-perm.c \
- $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
regress/mkdtemp$(EXEEXT): $(srcdir)/regress/mkdtemp.c $(REGRESSLIBS)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(srcdir)/regress/mkdtemp.c \
- $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ $(LDFLAGS) -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_HELPER_OBJS=\
regress/unittests/test_helper/test_helper.o \
@@ -558,7 +555,7 @@ regress/unittests/sshbuf/test_sshbuf$(EXEEXT): ${UNITTESTS_TEST_SSHBUF_OBJS} \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHBUF_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_SSHKEY_OBJS=\
regress/unittests/sshkey/test_fuzz.o \
@@ -572,7 +569,7 @@ regress/unittests/sshkey/test_sshkey$(EXEEXT): ${UNITTESTS_TEST_SSHKEY_OBJS} \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHKEY_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_SSHSIG_OBJS=\
sshsig.o \
@@ -583,7 +580,7 @@ regress/unittests/sshsig/test_sshsig$(EXEEXT): ${UNITTESTS_TEST_SSHSIG_OBJS} \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHSIG_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_BITMAP_OBJS=\
regress/unittests/bitmap/tests.o
@@ -592,7 +589,7 @@ regress/unittests/bitmap/test_bitmap$(EXEEXT): ${UNITTESTS_TEST_BITMAP_OBJS} \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_BITMAP_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_AUTHOPT_OBJS=\
regress/unittests/authopt/tests.o \
@@ -604,7 +601,7 @@ regress/unittests/authopt/test_authopt$(EXEEXT): \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_AUTHOPT_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_CONVERSION_OBJS=\
regress/unittests/conversion/tests.o
@@ -614,7 +611,7 @@ regress/unittests/conversion/test_conversion$(EXEEXT): \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_CONVERSION_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_KEX_OBJS=\
regress/unittests/kex/tests.o \
@@ -625,7 +622,7 @@ regress/unittests/kex/test_kex$(EXEEXT): ${UNITTESTS_TEST_KEX_OBJS} \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_KEX_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_HOSTKEYS_OBJS=\
regress/unittests/hostkeys/tests.o \
@@ -637,7 +634,7 @@ regress/unittests/hostkeys/test_hostkeys$(EXEEXT): \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_HOSTKEYS_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_MATCH_OBJS=\
regress/unittests/match/tests.o
@@ -647,7 +644,7 @@ regress/unittests/match/test_match$(EXEEXT): \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_MATCH_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_MISC_OBJS=\
regress/unittests/misc/tests.o \
@@ -663,7 +660,7 @@ regress/unittests/misc/test_misc$(EXEEXT): \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_MISC_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
UNITTESTS_TEST_UTF8_OBJS=\
regress/unittests/utf8/tests.o
@@ -673,7 +670,7 @@ regress/unittests/utf8/test_utf8$(EXEEXT): \
regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_UTF8_OBJS) \
regress/unittests/test_helper/libtest_helper.a \
- -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
# These all need to be compiled -fPIC, so they are treated differently.
SK_DUMMY_OBJS=\
@@ -688,7 +685,7 @@ SK_DUMMY_LIBRARY=@SK_DUMMY_LIBRARY@
regress/misc/sk-dummy/sk-dummy.so: $(SK_DUMMY_OBJS)
$(CC) $(CFLAGS) $(CPPFLAGS) $(PICFLAG) -shared -o $@ $(SK_DUMMY_OBJS) \
- -L. -Lopenbsd-compat -lopenbsd-compat $(LDFLAGS_NOPIE) $(LIBS)
+ -L. -Lopenbsd-compat -lopenbsd-compat $(LDFLAGS_NOPIE) $(TESTLIBS)
regress-binaries: regress-prep $(LIBCOMPAT) \
regress/modpipe$(EXEEXT) \
diff --git a/PROTOCOL b/PROTOCOL
index 2d50b5cb0528..685f90fa8569 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -102,6 +102,8 @@ OpenSSH supports the use of ECDH in Curve25519 for key exchange as
described at:
http://git.libssh.org/users/aris/libssh.git/plain/doc/curve25519-sha256@libssh.org.txt?h=curve25519
+This is identical to curve25519-sha256 as later published in RFC8731.
+
2. Connection protocol changes
2.1. connection: Channel write close extension "eow@openssh.com"
@@ -613,6 +615,67 @@ This request is identical to the "copy-data" request documented in:
https://tools.ietf.org/html/draft-ietf-secsh-filexfer-extensions-00#section-7
+4.11. sftp: Extension request "home-directory"
+
+This request asks the server to expand the specified user's home directory.
+An empty username implies the current user. This can be used by the client
+to expand ~/ type paths locally.
+
+ byte SSH_FXP_EXTENDED
+ uint32 id
+ string "home-directory"
+ string username
+
+This extension is advertised in the SSH_FXP_VERSION hello with version
+"1".
+
+This provides similar information as the "expand-path@openssh.com" extension.
+
+This request is identical to the "home-directory" request documented in:
+
+https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-extensions-00#section-5
+
+4.12. sftp: Extension request "users-groups-by-id@openssh.com"
+
+This request asks the server to returns user and/or group names that
+correspond to one or more IDs (e.g. as returned from a SSH_FXP_STAT
+request). This may be used by the client to provide usernames in
+directory listings.
+
+ byte SSH_FXP_EXTENDED
+ uint32 id
+ string "users-groups-by-id@openssh.com"
+ string uids
+ string gids
+
+Where "uids" and "gids" consists of one or more integer user or group
+identifiers:
+
+ uint32 id-0
+ ...
+
+The server will reply with a SSH_FXP_EXTENDED_REPLY:
+
+ byte SSH_FXP_EXTENDED_REPLY
+ string usernames
+ string groupnames
+
+Where "username" and "groupnames" consists of names in identical request
+order to "uids" and "gids" respectively:
+
+ string name-0
+ ...
+
+If a name cannot be identified for a given user or group ID, an empty
+string will be returned in its place.
+
+It is acceptable for either "uids" or "gids" to be an empty set, in
+which case the respective "usernames" or "groupnames" list will also
+be empty.
+
+This extension is advertised in the SSH_FXP_VERSION hello with version
+"1".
+
5. Miscellaneous changes
5.1 Public key format
@@ -649,4 +712,4 @@ master instance and later clients.
OpenSSH extends the usual agent protocol. These changes are documented
in the PROTOCOL.agent file.
-$OpenBSD: PROTOCOL,v 1.44 2022/03/31 03:05:49 djm Exp $
+$OpenBSD: PROTOCOL,v 1.47 2022/09/19 10:40:52 djm Exp $
diff --git a/PROTOCOL.agent b/PROTOCOL.agent
index 67302c34495e..dba76b0c014b 100644
--- a/PROTOCOL.agent
+++ b/PROTOCOL.agent
@@ -1,7 +1,7 @@
The SSH agent protocol is described in
https://tools.ietf.org/html/draft-miller-ssh-agent-04
-This file document's OpenSSH's extensions to the agent protocol.
+This file documents OpenSSH's extensions to the agent protocol.
1. session-bind@openssh.com extension
@@ -54,7 +54,7 @@ Where a constraint consists of:
string to_hostname
keyspec[] to_hostkeys
-An a keyspec consists of:
+And a keyspec consists of:
string keyblob
bool is_ca
@@ -81,4 +81,4 @@ the constraint is:
This option is only valid for XMSS keys.
-$OpenBSD: PROTOCOL.agent,v 1.16 2022/01/01 01:55:30 jsg Exp $
+$OpenBSD: PROTOCOL.agent,v 1.18 2022/09/21 22:26:50 dtucker Exp $
diff --git a/PROTOCOL.key b/PROTOCOL.key
index 38df268b6536..cbf7a70272bf 100644
--- a/PROTOCOL.key
+++ b/PROTOCOL.key
@@ -11,7 +11,7 @@ an encrypted list of matching private keys.
string ciphername
string kdfname
string kdfoptions
- int number of keys N
+ uint32 number of keys N
string publickey1
string publickey2
...
@@ -42,11 +42,11 @@ of the cipher block size.
...
string privatekeyN
string commentN
- char 1
- char 2
- char 3
+ byte 1
+ byte 2
+ byte 3
...
- char padlen % 255
+ byte padlen % 255
where each private key is encoded using the same rules as used for
SSH agent.
@@ -68,4 +68,4 @@ For unencrypted keys the cipher "none" and the KDF "none"
are used with empty passphrases. The options if the KDF "none"
are the empty string.
-$OpenBSD: PROTOCOL.key,v 1.2 2021/05/07 02:29:40 djm Exp $
+$OpenBSD: PROTOCOL.key,v 1.3 2022/07/01 04:45:50 djm Exp $
diff --git a/README b/README
index 70a8f814caa9..0d3416f573c5 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-See https://www.openssh.com/releasenotes.html#9.0p1 for the release notes.
+See https://www.openssh.com/releasenotes.html#9.1p1 for the release notes.
Please read https://www.openssh.com/report.html for bug reporting
instructions and note that we do not use Github for bug reporting or
diff --git a/README.md b/README.md
index de4717737eac..04e3a5198a91 100644
--- a/README.md
+++ b/README.md
@@ -30,11 +30,13 @@ Stable release tarballs are available from a number of [download mirrors](https:
Portable OpenSSH is built using autoconf and make. It requires a working C compiler, standard library and headers.
-``libcrypto`` from either [LibreSSL](https://www.libressl.org/) or [OpenSSL](https://www.openssl.org) may also be used, but OpenSSH may be built without it supporting a subset of crypto algorithms.
+``libcrypto`` from either [LibreSSL](https://www.libressl.org/) or [OpenSSL](https://www.openssl.org) may also be used. OpenSSH may be built without either of these, but the resulting binaries will have only a subset of the cryptographic algorithms normally available.
[zlib](https://www.zlib.net/) is optional; without it transport compression is not supported.
-FIDO security token support needs [libfido2](https://github.com/Yubico/libfido2) and its dependencies. Also, certain platforms and build-time options may require additional dependencies; see README.platform for details.
+FIDO security token support needs [libfido2](https://github.com/Yubico/libfido2) and its dependencies.
+
+In addition, certain platforms and build-time options may require additional dependencies; see README.platform for details about your platform.
### Building a release
@@ -65,7 +67,7 @@ make && make tests
There are many build-time customisation options available. All Autoconf destination path flags (e.g. ``--prefix``) are supported (and are usually required if you want to install OpenSSH).
-For a full list of available flags, run ``configure --help`` but a few of the more frequently-used ones are described below. Some of these flags will require additional libraries and/or headers be installed.
+For a full list of available flags, run ``./configure --help`` but a few of the more frequently-used ones are described below. Some of these flags will require additional libraries and/or headers be installed.
Flag | Meaning
--- | ---
diff --git a/addr.c b/addr.c
index 1ad10ae0fdf7..abf3e3d97818 100644
--- a/addr.c
+++ b/addr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: addr.c,v 1.4 2021/10/22 10:51:57 dtucker Exp $ */
+/* $OpenBSD: addr.c,v 1.5 2022/04/29 04:55:07 djm Exp $ */
/*
* Copyright (c) 2004-2008 Damien Miller <djm@mindrot.org>
@@ -397,7 +397,7 @@ addr_pton_cidr(const char *p, struct xaddr *n, u_int *l)
*mp = '\0';
mp++;
masklen = strtoul(mp, &cp, 10);
- if (*mp == '\0' || *cp != '\0' || masklen > 128)
+ if (*mp < '0' || *mp > '9' || *cp != '\0' || masklen > 128)
return -1;
}
diff --git a/auth.c b/auth.c
index 58754c070010..13e8d7998a98 100644
--- a/auth.c
+++ b/auth.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth.c,v 1.154 2022/02/23 11:17:10 djm Exp $ */
+/* $OpenBSD: auth.c,v 1.158 2022/06/03 04:47:21 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
*
@@ -460,62 +460,6 @@ check_key_in_hostfiles(struct passwd *pw, struct sshkey *key, const char *host,
return host_status;
}
-static FILE *
-auth_openfile(const char *file, struct passwd *pw, int strict_modes,
- int log_missing, char *file_type)
-{
- char line[1024];
- struct stat st;
- int fd;
- FILE *f;
-
- if ((fd = open(file, O_RDONLY|O_NONBLOCK)) == -1) {
- if (log_missing || errno != ENOENT)
- debug("Could not open %s '%s': %s", file_type, file,
- strerror(errno));
- return NULL;
- }
-
- if (fstat(fd, &st) == -1) {
- close(fd);
- return NULL;
- }
- if (!S_ISREG(st.st_mode)) {
- logit("User %s %s %s is not a regular file",
- pw->pw_name, file_type, file);
- close(fd);
- return NULL;
- }
- unset_nonblock(fd);
- if ((f = fdopen(fd, "r")) == NULL) {
- close(fd);
- return NULL;
- }
- if (strict_modes &&
- safe_path_fd(fileno(f), file, pw, line, sizeof(line)) != 0) {
- fclose(f);
- logit("Authentication refused: %s", line);
- auth_debug_add("Ignored %s: %s", file_type, line);
- return NULL;
- }
-
- return f;
-}
-
-
-FILE *
-auth_openkeyfile(const char *file, struct passwd *pw, int strict_modes)
-{
- return auth_openfile(file, pw, strict_modes, 1, "authorized keys");
-}
-
-FILE *
-auth_openprincipals(const char *file, struct passwd *pw, int strict_modes)
-{
- return auth_openfile(file, pw, strict_modes, 0,
- "authorized principals");
-}
-
struct passwd *
getpwnamallow(struct ssh *ssh, const char *user)
{
@@ -903,7 +847,8 @@ auth_restrict_session(struct ssh *ssh)
debug_f("restricting session");
/* A blank sshauthopt defaults to permitting nothing */
- restricted = sshauthopt_new();
+ if ((restricted = sshauthopt_new()) == NULL)
+ fatal_f("sshauthopt_new failed");
restricted->permit_pty_flag = 1;
restricted->restricted = 1;
@@ -911,97 +856,3 @@ auth_restrict_session(struct ssh *ssh)
fatal_f("failed to restrict session");
sshauthopt_free(restricted);
}
-
-int
-auth_authorise_keyopts(struct ssh *ssh, struct passwd *pw,
- struct sshauthopt *opts, int allow_cert_authority, const char *loc)
-{
- const char *remote_ip = ssh_remote_ipaddr(ssh);
- const char *remote_host = auth_get_canonical_hostname(ssh,
- options.use_dns);
- time_t now = time(NULL);
- char buf[64];
-
- /*
- * Check keys/principals file expiry time.
- * NB. validity interval in certificate is handled elsewhere.
- */
- if (opts->valid_before && now > 0 &&
- opts->valid_before < (uint64_t)now) {
- format_absolute_time(opts->valid_before, buf, sizeof(buf));
- debug("%s: entry expired at %s", loc, buf);
- auth_debug_add("%s: entry expired at %s", loc, buf);
- return -1;
- }
- /* Consistency checks */
- if (opts->cert_principals != NULL && !opts->cert_authority) {
- debug("%s: principals on non-CA key", loc);
- auth_debug_add("%s: principals on non-CA key", loc);
- /* deny access */
- return -1;
- }
- /* cert-authority flag isn't valid in authorized_principals files */
- if (!allow_cert_authority && opts->cert_authority) {
- debug("%s: cert-authority flag invalid here", loc);
- auth_debug_add("%s: cert-authority flag invalid here", loc);
- /* deny access */
- return -1;
- }
-
- /* Perform from= checks */
- if (opts->required_from_host_keys != NULL) {
- switch (match_host_and_ip(remote_host, remote_ip,
- opts->required_from_host_keys )) {
- case 1:
- /* Host name matches. */
- break;
- case -1:
- default:
- debug("%s: invalid from criteria", loc);
- auth_debug_add("%s: invalid from criteria", loc);
- /* FALLTHROUGH */
- case 0:
- logit("%s: Authentication tried for %.100s with "
- "correct key but not from a permitted "
- "host (host=%.200s, ip=%.200s, required=%.200s).",
- loc, pw->pw_name, remote_host, remote_ip,
- opts->required_from_host_keys);
- auth_debug_add("%s: Your host '%.200s' is not "
- "permitted to use this key for login.",
- loc, remote_host);
- /* deny access */
- return -1;
- }
- }
- /* Check source-address restriction from certificate */
- if (opts->required_from_host_cert != NULL) {
- switch (addr_match_cidr_list(remote_ip,
- opts->required_from_host_cert)) {
- case 1:
- /* accepted */
- break;
- case -1:
- default:
- /* invalid */
- error("%s: Certificate source-address invalid", loc);
- /* FALLTHROUGH */
- case 0:
- logit("%s: Authentication tried for %.100s with valid "
- "certificate but not from a permitted source "
- "address (%.200s).", loc, pw->pw_name, remote_ip);
- auth_debug_add("%s: Your address '%.200s' is not "
- "permitted to use this certificate for login.",
- loc, remote_ip);
- return -1;
- }
- }
- /*
- *
- * XXX this is spammy. We should report remotely only for keys
- * that are successful in actual auth attempts, and not PK_OK
- * tests.
- */
- auth_log_authopts(loc, opts, 1);
-
- return 0;
-}
diff --git a/auth.h b/auth.h
index a65d8fd02d38..6d2d3976234e 100644
--- a/auth.h
+++ b/auth.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth.h,v 1.102 2021/12/19 22:12:07 djm Exp $ */
+/* $OpenBSD: auth.h,v 1.106 2022/06/15 16:08:25 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -29,6 +29,7 @@
#define AUTH_H
#include <signal.h>
+#include <stdio.h>
#ifdef HAVE_LOGIN_CAP
#include <login_cap.h>
@@ -44,6 +45,7 @@ struct passwd;
struct ssh;
struct sshbuf;
struct sshkey;
+struct sshkey_cert;
struct sshauthopt;
typedef struct Authctxt Authctxt;
@@ -133,8 +135,8 @@ int auth_password(struct ssh *, const char *);
int hostbased_key_allowed(struct ssh *, struct passwd *,
const char *, char *, struct sshkey *);
-int user_key_allowed(struct ssh *, struct passwd *, struct sshkey *, int,
- struct sshauthopt **);
+int user_key_allowed(struct ssh *ssh, struct passwd *, struct sshkey *,
+ int, struct sshauthopt **);
int auth2_key_already_used(Authctxt *, const struct sshkey *);
/*
@@ -191,8 +193,6 @@ struct passwd * getpwnamallow(struct ssh *, const char *user);
char *expand_authorized_keys(const char *, struct passwd *pw);
char *authorized_principals_file(struct passwd *);
-FILE *auth_openkeyfile(const char *, struct passwd *, int);
-FILE *auth_openprincipals(const char *, struct passwd *, int);
int auth_key_is_revoked(struct sshkey *);
const char *auth_get_canonical_hostname(struct ssh *, int);
@@ -214,8 +214,6 @@ int sshd_hostkey_sign(struct ssh *, struct sshkey *, struct sshkey *,
const struct sshauthopt *auth_options(struct ssh *);
int auth_activate_options(struct ssh *, struct sshauthopt *);
void auth_restrict_session(struct ssh *);
-int auth_authorise_keyopts(struct ssh *, struct passwd *pw,
- struct sshauthopt *, int, const char *);
void auth_log_authopts(const char *, const struct sshauthopt *, int);
/* debug messages during authentication */
@@ -226,6 +224,20 @@ void auth_debug_reset(void);
struct passwd *fakepw(void);
+/* auth2-pubkeyfile.c */
+int auth_authorise_keyopts(struct passwd *, struct sshauthopt *, int,
+ const char *, const char *, const char *);
+int auth_check_principals_line(char *, const struct sshkey_cert *,
+ const char *, struct sshauthopt **);
+int auth_process_principals(FILE *, const char *,
+ const struct sshkey_cert *, struct sshauthopt **);
+int auth_check_authkey_line(struct passwd *, struct sshkey *,
+ char *, const char *, const char *, const char *, struct sshauthopt **);
+int auth_check_authkeys_file(struct passwd *, FILE *, char *,
+ struct sshkey *, const char *, const char *, struct sshauthopt **);
+FILE *auth_openkeyfile(const char *, struct passwd *, int);
+FILE *auth_openprincipals(const char *, struct passwd *, int);
+
int sys_auth_passwd(struct ssh *, const char *);
#if defined(KRB5) && !defined(HEIMDAL)
diff --git a/auth2-hostbased.c b/auth2-hostbased.c
index 36b9d2f5b0e5..6b517db411df 100644
--- a/auth2-hostbased.c
+++ b/auth2-hostbased.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2-hostbased.c,v 1.49 2022/01/06 22:01:14 djm Exp $ */
+/* $OpenBSD: auth2-hostbased.c,v 1.50 2022/09/17 10:34:29 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
*
@@ -119,6 +119,11 @@ userauth_hostbased(struct ssh *ssh, const char *method)
"(null)" : key->cert->signature_type);
goto done;
}
+ if ((r = sshkey_check_rsa_length(key,
+ options.required_rsa_size)) != 0) {
+ logit_r(r, "refusing %s key", sshkey_type(key));
+ goto done;
+ }
if (!authctxt->valid || authctxt->user == NULL) {
debug2_f("disabled because of invalid user");
diff --git a/auth2-passwd.c b/auth2-passwd.c
index f8a6dbc19395..cc12cfbc1f1a 100644
--- a/auth2-passwd.c
+++ b/auth2-passwd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2-passwd.c,v 1.20 2021/12/19 22:12:07 djm Exp $ */
+/* $OpenBSD: auth2-passwd.c,v 1.21 2022/05/27 04:29:40 dtucker Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
*
@@ -51,16 +51,18 @@ extern ServerOptions options;
static int
userauth_passwd(struct ssh *ssh, const char *method)
{
- char *password;
+ char *password = NULL;
int authenticated = 0, r;
u_char change;
- size_t len;
+ size_t len = 0;
if ((r = sshpkt_get_u8(ssh, &change)) != 0 ||
(r = sshpkt_get_cstring(ssh, &password, &len)) != 0 ||
(change && (r = sshpkt_get_cstring(ssh, NULL, NULL)) != 0) ||
- (r = sshpkt_get_end(ssh)) != 0)
+ (r = sshpkt_get_end(ssh)) != 0) {
+ freezero(password, len);
fatal_fr(r, "parse packet");
+ }
if (change)
logit("password change not supported");
diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index d297a5c3d975..5d59febc3aef 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -1,6 +1,7 @@
-/* $OpenBSD: auth2-pubkey.c,v 1.113 2022/02/27 01:33:59 naddy Exp $ */
+/* $OpenBSD: auth2-pubkey.c,v 1.117 2022/09/17 10:34:29 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
+ * Copyright (c) 2010 Damien Miller. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,11 +27,9 @@
#include "includes.h"
#include <sys/types.h>
-#include <sys/stat.h>
#include <stdlib.h>
#include <errno.h>
-#include <fcntl.h>
#ifdef HAVE_PATHS_H
# include <paths.h>
#endif
@@ -67,7 +66,6 @@
#include "authfile.h"
#include "match.h"
#include "ssherr.h"
-#include "kex.h"
#include "channels.h" /* XXX for session.h */
#include "session.h" /* XXX for child_set_env(); refactor? */
#include "sk-api.h"
@@ -177,6 +175,11 @@ userauth_pubkey(struct ssh *ssh, const char *method)
"(null)" : key->cert->signature_type);
goto done;
}
+ if ((r = sshkey_check_rsa_length(key,
+ options.required_rsa_size)) != 0) {
+ logit_r(r, "refusing %s key", sshkey_type(key));
+ goto done;
+ }
key_s = format_key(key);
if (sshkey_is_cert(key))
ca_s = format_key(key->cert->signature_key);
@@ -317,121 +320,7 @@ done:
}
static int
-match_principals_option(const char *principal_list, struct sshkey_cert *cert)
-{
- char *result;
- u_int i;
-
- /* XXX percent_expand() sequences for authorized_principals? */
-
- for (i = 0; i < cert->nprincipals; i++) {
- if ((result = match_list(cert->principals[i],
- principal_list, NULL)) != NULL) {
- debug3("matched principal from key options \"%.100s\"",
- result);
- free(result);
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * Process a single authorized_principals format line. Returns 0 and sets
- * authoptsp is principal is authorised, -1 otherwise. "loc" is used as a
- * log preamble for file/line information.
- */
-static int
-check_principals_line(struct ssh *ssh, char *cp, const struct sshkey_cert *cert,
- const char *loc, struct sshauthopt **authoptsp)
-{
- u_int i, found = 0;
- char *ep, *line_opts;
- const char *reason = NULL;
- struct sshauthopt *opts = NULL;
-
- if (authoptsp != NULL)
- *authoptsp = NULL;
-
- /* Trim trailing whitespace. */
- ep = cp + strlen(cp) - 1;
- while (ep > cp && (*ep == '\n' || *ep == ' ' || *ep == '\t'))
- *ep-- = '\0';
-
- /*
- * If the line has internal whitespace then assume it has
- * key options.
- */
- line_opts = NULL;
- if ((ep = strrchr(cp, ' ')) != NULL ||
- (ep = strrchr(cp, '\t')) != NULL) {
- for (; *ep == ' ' || *ep == '\t'; ep++)
- ;
- line_opts = cp;
- cp = ep;
- }
- if ((opts = sshauthopt_parse(line_opts, &reason)) == NULL) {
- debug("%s: bad principals options: %s", loc, reason);
- auth_debug_add("%s: bad principals options: %s", loc, reason);
- return -1;
- }
- /* Check principals in cert against those on line */
- for (i = 0; i < cert->nprincipals; i++) {
- if (strcmp(cp, cert->principals[i]) != 0)
- continue;
- debug3("%s: matched principal \"%.100s\"",
- loc, cert->principals[i]);
- found = 1;
- }
- if (found && authoptsp != NULL) {
- *authoptsp = opts;
- opts = NULL;
- }
- sshauthopt_free(opts);
- return found ? 0 : -1;
-}
-
-static int
-process_principals(struct ssh *ssh, FILE *f, const char *file,
- const struct sshkey_cert *cert, struct sshauthopt **authoptsp)
-{
- char loc[256], *line = NULL, *cp, *ep;
- size_t linesize = 0;
- u_long linenum = 0, nonblank = 0;
- u_int found_principal = 0;
-
- if (authoptsp != NULL)
- *authoptsp = NULL;
-
- while (getline(&line, &linesize, f) != -1) {
- linenum++;
- /* Always consume entire input */
- if (found_principal)
- continue;
-
- /* Skip leading whitespace. */
- for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
- ;
- /* Skip blank and comment lines. */
- if ((ep = strchr(cp, '#')) != NULL)
- *ep = '\0';
- if (!*cp || *cp == '\n')
- continue;
-
- nonblank++;
- snprintf(loc, sizeof(loc), "%.200s:%lu", file, linenum);
- if (check_principals_line(ssh, cp, cert, loc, authoptsp) == 0)
- found_principal = 1;
- }
- debug2_f("%s: processed %lu/%lu lines", file, nonblank, linenum);
- free(line);
- return found_principal;
-}
-
-/* XXX remove pw args here and elsewhere once ssh->authctxt is guaranteed */
-
-static int
-match_principals_file(struct ssh *ssh, struct passwd *pw, char *file,
+match_principals_file(struct passwd *pw, char *file,
struct sshkey_cert *cert, struct sshauthopt **authoptsp)
{
FILE *f;
@@ -446,7 +335,7 @@ match_principals_file(struct ssh *ssh, struct passwd *pw, char *file,
restore_uid();
return 0;
}
- success = process_principals(ssh, f, file, cert, authoptsp);
+ success = auth_process_principals(f, file, cert, authoptsp);
fclose(f);
restore_uid();
return success;
@@ -457,7 +346,7 @@ match_principals_file(struct ssh *ssh, struct passwd *pw, char *file,
* returns 1 if the principal is allowed or 0 otherwise.
*/
static int
-match_principals_command(struct ssh *ssh, struct passwd *user_pw,
+match_principals_command(struct passwd *user_pw,
const struct sshkey *key, struct sshauthopt **authoptsp)
{
struct passwd *runas_pw = NULL;
@@ -562,7 +451,7 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw,
uid_swapped = 1;
temporarily_use_uid(runas_pw);
- ok = process_principals(ssh, f, "(command)", cert, authoptsp);
+ ok = auth_process_principals(f, "(command)", cert, authoptsp);
fclose(f);
f = NULL;
@@ -590,188 +479,10 @@ match_principals_command(struct ssh *ssh, struct passwd *user_pw,
return found_principal;
}
-/*
- * Check a single line of an authorized_keys-format file. Returns 0 if key
- * matches, -1 otherwise. Will return key/cert options via *authoptsp
- * on success. "loc" is used as file/line location in log messages.
- */
-static int
-check_authkey_line(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
- char *cp, const char *loc, struct sshauthopt **authoptsp)
-{
- int want_keytype = sshkey_is_cert(key) ? KEY_UNSPEC : key->type;
- struct sshkey *found = NULL;
- struct sshauthopt *keyopts = NULL, *certopts = NULL, *finalopts = NULL;
- char *key_options = NULL, *fp = NULL;
- const char *reason = NULL;
- int ret = -1;
-
- if (authoptsp != NULL)
- *authoptsp = NULL;
-
- if ((found = sshkey_new(want_keytype)) == NULL) {
- debug3_f("keytype %d failed", want_keytype);
- goto out;
- }
-
- /* XXX djm: peek at key type in line and skip if unwanted */
-
- if (sshkey_read(found, &cp) != 0) {
- /* no key? check for options */
- debug2("%s: check options: '%s'", loc, cp);
- key_options = cp;
- if (sshkey_advance_past_options(&cp) != 0) {
- reason = "invalid key option string";
- goto fail_reason;
- }
- skip_space(&cp);
- if (sshkey_read(found, &cp) != 0) {
- /* still no key? advance to next line*/
- debug2("%s: advance: '%s'", loc, cp);
- goto out;
- }
- }
- /* Parse key options now; we need to know if this is a CA key */
- if ((keyopts = sshauthopt_parse(key_options, &reason)) == NULL) {
- debug("%s: bad key options: %s", loc, reason);
- auth_debug_add("%s: bad key options: %s", loc, reason);
- goto out;
- }
- /* Ignore keys that don't match or incorrectly marked as CAs */
- if (sshkey_is_cert(key)) {
- /* Certificate; check signature key against CA */
- if (!sshkey_equal(found, key->cert->signature_key) ||
- !keyopts->cert_authority)
- goto out;
- } else {
- /* Plain key: check it against key found in file */
- if (!sshkey_equal(found, key) || keyopts->cert_authority)
- goto out;
- }
-
- /* We have a candidate key, perform authorisation checks */
- if ((fp = sshkey_fingerprint(found,
- options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL)
- fatal_f("fingerprint failed");
-
- debug("%s: matching %s found: %s %s", loc,
- sshkey_is_cert(key) ? "CA" : "key", sshkey_type(found), fp);
-
- if (auth_authorise_keyopts(ssh, pw, keyopts,
- sshkey_is_cert(key), loc) != 0) {
- reason = "Refused by key options";
- goto fail_reason;
- }
- /* That's all we need for plain keys. */
- if (!sshkey_is_cert(key)) {
- verbose("Accepted key %s %s found at %s",
- sshkey_type(found), fp, loc);
- finalopts = keyopts;
- keyopts = NULL;
- goto success;
- }
-
- /*
- * Additional authorisation for certificates.
- */
-
- /* Parse and check options present in certificate */
- if ((certopts = sshauthopt_from_cert(key)) == NULL) {
- reason = "Invalid certificate options";
- goto fail_reason;
- }
- if (auth_authorise_keyopts(ssh, pw, certopts, 0, loc) != 0) {
- reason = "Refused by certificate options";
- goto fail_reason;
- }
- if ((finalopts = sshauthopt_merge(keyopts, certopts, &reason)) == NULL)
- goto fail_reason;
-
- /*
- * If the user has specified a list of principals as
- * a key option, then prefer that list to matching
- * their username in the certificate principals list.
- */
- if (keyopts->cert_principals != NULL &&
- !match_principals_option(keyopts->cert_principals, key->cert)) {
- reason = "Certificate does not contain an authorized principal";
- goto fail_reason;
- }
- if (sshkey_cert_check_authority_now(key, 0, 0, 0,
- keyopts->cert_principals == NULL ? pw->pw_name : NULL,
- &reason) != 0)
- goto fail_reason;
-
- verbose("Accepted certificate ID \"%s\" (serial %llu) "
- "signed by CA %s %s found at %s",
- key->cert->key_id,
- (unsigned long long)key->cert->serial,
- sshkey_type(found), fp, loc);
-
- success:
- if (finalopts == NULL)
- fatal_f("internal error: missing options");
- if (authoptsp != NULL) {
- *authoptsp = finalopts;
- finalopts = NULL;
- }
- /* success */
- ret = 0;
- goto out;
-
- fail_reason:
- error("%s", reason);
- auth_debug_add("%s", reason);
- out:
- free(fp);
- sshauthopt_free(keyopts);
- sshauthopt_free(certopts);
- sshauthopt_free(finalopts);
- sshkey_free(found);
- return ret;
-}
-
-/*
- * Checks whether key is allowed in authorized_keys-format file,
- * returns 1 if the key is allowed or 0 otherwise.
- */
-static int
-check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f,
- char *file, struct sshkey *key, struct sshauthopt **authoptsp)
-{
- char *cp, *line = NULL, loc[256];
- size_t linesize = 0;
- int found_key = 0;
- u_long linenum = 0, nonblank = 0;
-
- if (authoptsp != NULL)
- *authoptsp = NULL;
-
- while (getline(&line, &linesize, f) != -1) {
- linenum++;
- /* Always consume entire file */
- if (found_key)
- continue;
-
- /* Skip leading whitespace, empty and comment lines. */
- cp = line;
- skip_space(&cp);
- if (!*cp || *cp == '\n' || *cp == '#')
- continue;
-
- nonblank++;
- snprintf(loc, sizeof(loc), "%.200s:%lu", file, linenum);
- if (check_authkey_line(ssh, pw, key, cp, loc, authoptsp) == 0)
- found_key = 1;
- }
- free(line);
- debug2_f("%s: processed %lu/%lu lines", file, nonblank, linenum);
- return found_key;
-}
-
/* Authenticate a certificate key against TrustedUserCAKeys */
static int
-user_cert_trusted_ca(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
+user_cert_trusted_ca(struct passwd *pw, struct sshkey *key,
+ const char *remote_ip, const char *remote_host,
struct sshauthopt **authoptsp)
{
char *ca_fp, *principals_file = NULL;
@@ -803,12 +514,12 @@ user_cert_trusted_ca(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
* against the username.
*/
if ((principals_file = authorized_principals_file(pw)) != NULL) {
- if (match_principals_file(ssh, pw, principals_file,
+ if (match_principals_file(pw, principals_file,
key->cert, &principals_opts))
found_principal = 1;
}
/* Try querying command if specified */
- if (!found_principal && match_principals_command(ssh, pw, key,
+ if (!found_principal && match_principals_command(pw, key,
&principals_opts))
found_principal = 1;
/* If principals file or command is specified, then require a match */
@@ -829,7 +540,8 @@ user_cert_trusted_ca(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
reason = "Invalid certificate options";
goto fail_reason;
}
- if (auth_authorise_keyopts(ssh, pw, cert_opts, 0, "cert") != 0) {
+ if (auth_authorise_keyopts(pw, cert_opts, 0,
+ remote_ip, remote_host, "cert") != 0) {
reason = "Refused by certificate options";
goto fail_reason;
}
@@ -837,8 +549,8 @@ user_cert_trusted_ca(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
final_opts = cert_opts;
cert_opts = NULL;
} else {
- if (auth_authorise_keyopts(ssh, pw, principals_opts, 0,
- "principals") != 0) {
+ if (auth_authorise_keyopts(pw, principals_opts, 0,
+ remote_ip, remote_host, "principals") != 0) {
reason = "Refused by certificate principals options";
goto fail_reason;
}
@@ -876,8 +588,9 @@ user_cert_trusted_ca(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
* returns 1 if the key is allowed or 0 otherwise.
*/
static int
-user_key_allowed2(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
- char *file, struct sshauthopt **authoptsp)
+user_key_allowed2(struct passwd *pw, struct sshkey *key,
+ char *file, const char *remote_ip, const char *remote_host,
+ struct sshauthopt **authoptsp)
{
FILE *f;
int found_key = 0;
@@ -890,8 +603,8 @@ user_key_allowed2(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
debug("trying public key file %s", file);
if ((f = auth_openkeyfile(file, pw, options.strict_modes)) != NULL) {
- found_key = check_authkeys_file(ssh, pw, f, file,
- key, authoptsp);
+ found_key = auth_check_authkeys_file(pw, f, file,
+ key, remote_ip, remote_host, authoptsp);
fclose(f);
}
@@ -904,8 +617,9 @@ user_key_allowed2(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
* returns 1 if the key is allowed or 0 otherwise.
*/
static int
-user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw,
- struct sshkey *key, struct sshauthopt **authoptsp)
+user_key_command_allowed2(struct passwd *user_pw, struct sshkey *key,
+ const char *remote_ip, const char *remote_host,
+ struct sshauthopt **authoptsp)
{
struct passwd *runas_pw = NULL;
FILE *f = NULL;
@@ -1005,8 +719,9 @@ user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw,
uid_swapped = 1;
temporarily_use_uid(runas_pw);
- ok = check_authkeys_file(ssh, user_pw, f,
- options.authorized_keys_command, key, authoptsp);
+ ok = auth_check_authkeys_file(user_pw, f,
+ options.authorized_keys_command, key, remote_ip,
+ remote_host, authoptsp);
fclose(f);
f = NULL;
@@ -1042,6 +757,9 @@ user_key_allowed(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
u_int success = 0, i;
char *file;
struct sshauthopt *opts = NULL;
+ const char *remote_ip = ssh_remote_ipaddr(ssh);
+ const char *remote_host = auth_get_canonical_hostname(ssh,
+ options.use_dns);
if (authoptsp != NULL)
*authoptsp = NULL;
@@ -1057,7 +775,8 @@ user_key_allowed(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
continue;
file = expand_authorized_keys(
options.authorized_keys_files[i], pw);
- success = user_key_allowed2(ssh, pw, key, file, &opts);
+ success = user_key_allowed2(pw, key, file,
+ remote_ip, remote_host, &opts);
free(file);
if (!success) {
sshauthopt_free(opts);
@@ -1067,12 +786,14 @@ user_key_allowed(struct ssh *ssh, struct passwd *pw, struct sshkey *key,
if (success)
goto out;
- if ((success = user_cert_trusted_ca(ssh, pw, key, &opts)) != 0)
+ if ((success = user_cert_trusted_ca(pw, key, remote_ip, remote_host,
+ &opts)) != 0)
goto out;
sshauthopt_free(opts);
opts = NULL;
- if ((success = user_key_command_allowed2(ssh, pw, key, &opts)) != 0)
+ if ((success = user_key_command_allowed2(pw, key, remote_ip,
+ remote_host, &opts)) != 0)
goto out;
sshauthopt_free(opts);
opts = NULL;
diff --git a/auth2-pubkeyfile.c b/auth2-pubkeyfile.c
new file mode 100644
index 000000000000..0cfacac353c0
--- /dev/null
+++ b/auth2-pubkeyfile.c
@@ -0,0 +1,501 @@
+/* $OpenBSD: auth2-pubkeyfile.c,v 1.3 2022/07/01 03:52:57 djm Exp $ */
+/*
+ * Copyright (c) 2000 Markus Friedl. All rights reserved.
+ * Copyright (c) 2010 Damien Miller. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "includes.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <stdlib.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <pwd.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "ssh.h"
+#include "log.h"
+#include "misc.h"
+#include "compat.h"
+#include "sshkey.h"
+#include "digest.h"
+#include "hostfile.h"
+#include "auth.h"
+#include "auth-options.h"
+#include "authfile.h"
+#include "match.h"
+#include "ssherr.h"
+
+int
+auth_authorise_keyopts(struct passwd *pw, struct sshauthopt *opts,
+ int allow_cert_authority, const char *remote_ip, const char *remote_host,
+ const char *loc)
+{
+ time_t now = time(NULL);
+ char buf[64];
+
+ /*
+ * Check keys/principals file expiry time.
+ * NB. validity interval in certificate is handled elsewhere.
+ */
+ if (opts->valid_before && now > 0 &&
+ opts->valid_before < (uint64_t)now) {
+ format_absolute_time(opts->valid_before, buf, sizeof(buf));
+ debug("%s: entry expired at %s", loc, buf);
+ auth_debug_add("%s: entry expired at %s", loc, buf);
+ return -1;
+ }
+ /* Consistency checks */
+ if (opts->cert_principals != NULL && !opts->cert_authority) {
+ debug("%s: principals on non-CA key", loc);
+ auth_debug_add("%s: principals on non-CA key", loc);
+ /* deny access */
+ return -1;
+ }
+ /* cert-authority flag isn't valid in authorized_principals files */
+ if (!allow_cert_authority && opts->cert_authority) {
+ debug("%s: cert-authority flag invalid here", loc);
+ auth_debug_add("%s: cert-authority flag invalid here", loc);
+ /* deny access */
+ return -1;
+ }
+
+ /* Perform from= checks */
+ if (opts->required_from_host_keys != NULL) {
+ switch (match_host_and_ip(remote_host, remote_ip,
+ opts->required_from_host_keys )) {
+ case 1:
+ /* Host name matches. */
+ break;
+ case -1:
+ default:
+ debug("%s: invalid from criteria", loc);
+ auth_debug_add("%s: invalid from criteria", loc);
+ /* FALLTHROUGH */
+ case 0:
+ logit("%s: Authentication tried for %.100s with "
+ "correct key but not from a permitted "
+ "host (host=%.200s, ip=%.200s, required=%.200s).",
+ loc, pw->pw_name, remote_host, remote_ip,
+ opts->required_from_host_keys);
+ auth_debug_add("%s: Your host '%.200s' is not "
+ "permitted to use this key for login.",
+ loc, remote_host);
+ /* deny access */
+ return -1;
+ }
+ }
+ /* Check source-address restriction from certificate */
+ if (opts->required_from_host_cert != NULL) {
+ switch (addr_match_cidr_list(remote_ip,
+ opts->required_from_host_cert)) {
+ case 1:
+ /* accepted */
+ break;
+ case -1:
+ default:
+ /* invalid */
+ error("%s: Certificate source-address invalid", loc);
+ /* FALLTHROUGH */
+ case 0:
+ logit("%s: Authentication tried for %.100s with valid "
+ "certificate but not from a permitted source "
+ "address (%.200s).", loc, pw->pw_name, remote_ip);
+ auth_debug_add("%s: Your address '%.200s' is not "
+ "permitted to use this certificate for login.",
+ loc, remote_ip);
+ return -1;
+ }
+ }
+ /*
+ *
+ * XXX this is spammy. We should report remotely only for keys
+ * that are successful in actual auth attempts, and not PK_OK
+ * tests.
+ */
+ auth_log_authopts(loc, opts, 1);
+
+ return 0;
+}
+
+static int
+match_principals_option(const char *principal_list, struct sshkey_cert *cert)
+{
+ char *result;
+ u_int i;
+
+ /* XXX percent_expand() sequences for authorized_principals? */
+
+ for (i = 0; i < cert->nprincipals; i++) {
+ if ((result = match_list(cert->principals[i],
+ principal_list, NULL)) != NULL) {
+ debug3("matched principal from key options \"%.100s\"",
+ result);
+ free(result);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/*
+ * Process a single authorized_principals format line. Returns 0 and sets
+ * authoptsp is principal is authorised, -1 otherwise. "loc" is used as a
+ * log preamble for file/line information.
+ */
+int
+auth_check_principals_line(char *cp, const struct sshkey_cert *cert,
+ const char *loc, struct sshauthopt **authoptsp)
+{
+ u_int i, found = 0;
+ char *ep, *line_opts;
+ const char *reason = NULL;
+ struct sshauthopt *opts = NULL;
+
+ if (authoptsp != NULL)
+ *authoptsp = NULL;
+
+ /* Trim trailing whitespace. */
+ ep = cp + strlen(cp) - 1;
+ while (ep > cp && (*ep == '\n' || *ep == ' ' || *ep == '\t'))
+ *ep-- = '\0';
+
+ /*
+ * If the line has internal whitespace then assume it has
+ * key options.
+ */
+ line_opts = NULL;
+ if ((ep = strrchr(cp, ' ')) != NULL ||
+ (ep = strrchr(cp, '\t')) != NULL) {
+ for (; *ep == ' ' || *ep == '\t'; ep++)
+ ;
+ line_opts = cp;
+ cp = ep;
+ }
+ if ((opts = sshauthopt_parse(line_opts, &reason)) == NULL) {
+ debug("%s: bad principals options: %s", loc, reason);
+ auth_debug_add("%s: bad principals options: %s", loc, reason);
+ return -1;
+ }
+ /* Check principals in cert against those on line */
+ for (i = 0; i < cert->nprincipals; i++) {
+ if (strcmp(cp, cert->principals[i]) != 0)
+ continue;
+ debug3("%s: matched principal \"%.100s\"",
+ loc, cert->principals[i]);
+ found = 1;
+ }
+ if (found && authoptsp != NULL) {
+ *authoptsp = opts;
+ opts = NULL;
+ }
+ sshauthopt_free(opts);
+ return found ? 0 : -1;
+}
+
+int
+auth_process_principals(FILE *f, const char *file,
+ const struct sshkey_cert *cert, struct sshauthopt **authoptsp)
+{
+ char loc[256], *line = NULL, *cp, *ep;
+ size_t linesize = 0;
+ u_long linenum = 0, nonblank = 0;
+ u_int found_principal = 0;
+
+ if (authoptsp != NULL)
+ *authoptsp = NULL;
+
+ while (getline(&line, &linesize, f) != -1) {
+ linenum++;
+ /* Always consume entire input */
+ if (found_principal)
+ continue;
+
+ /* Skip leading whitespace. */
+ for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
+ ;
+ /* Skip blank and comment lines. */
+ if ((ep = strchr(cp, '#')) != NULL)
+ *ep = '\0';
+ if (!*cp || *cp == '\n')
+ continue;
+
+ nonblank++;
+ snprintf(loc, sizeof(loc), "%.200s:%lu", file, linenum);
+ if (auth_check_principals_line(cp, cert, loc, authoptsp) == 0)
+ found_principal = 1;
+ }
+ debug2_f("%s: processed %lu/%lu lines", file, nonblank, linenum);
+ free(line);
+ return found_principal;
+}
+
+/*
+ * Check a single line of an authorized_keys-format file. Returns 0 if key
+ * matches, -1 otherwise. Will return key/cert options via *authoptsp
+ * on success. "loc" is used as file/line location in log messages.
+ */
+int
+auth_check_authkey_line(struct passwd *pw, struct sshkey *key,
+ char *cp, const char *remote_ip, const char *remote_host, const char *loc,
+ struct sshauthopt **authoptsp)
+{
+ int want_keytype = sshkey_is_cert(key) ? KEY_UNSPEC : key->type;
+ struct sshkey *found = NULL;
+ struct sshauthopt *keyopts = NULL, *certopts = NULL, *finalopts = NULL;
+ char *key_options = NULL, *fp = NULL;
+ const char *reason = NULL;
+ int ret = -1;
+
+ if (authoptsp != NULL)
+ *authoptsp = NULL;
+
+ if ((found = sshkey_new(want_keytype)) == NULL) {
+ debug3_f("keytype %d failed", want_keytype);
+ goto out;
+ }
+
+ /* XXX djm: peek at key type in line and skip if unwanted */
+
+ if (sshkey_read(found, &cp) != 0) {
+ /* no key? check for options */
+ debug2("%s: check options: '%s'", loc, cp);
+ key_options = cp;
+ if (sshkey_advance_past_options(&cp) != 0) {
+ reason = "invalid key option string";
+ goto fail_reason;
+ }
+ skip_space(&cp);
+ if (sshkey_read(found, &cp) != 0) {
+ /* still no key? advance to next line*/
+ debug2("%s: advance: '%s'", loc, cp);
+ goto out;
+ }
+ }
+ /* Parse key options now; we need to know if this is a CA key */
+ if ((keyopts = sshauthopt_parse(key_options, &reason)) == NULL) {
+ debug("%s: bad key options: %s", loc, reason);
+ auth_debug_add("%s: bad key options: %s", loc, reason);
+ goto out;
+ }
+ /* Ignore keys that don't match or incorrectly marked as CAs */
+ if (sshkey_is_cert(key)) {
+ /* Certificate; check signature key against CA */
+ if (!sshkey_equal(found, key->cert->signature_key) ||
+ !keyopts->cert_authority)
+ goto out;
+ } else {
+ /* Plain key: check it against key found in file */
+ if (!sshkey_equal(found, key) || keyopts->cert_authority)
+ goto out;
+ }
+
+ /* We have a candidate key, perform authorisation checks */
+ if ((fp = sshkey_fingerprint(found,
+ SSH_FP_HASH_DEFAULT, SSH_FP_DEFAULT)) == NULL)
+ fatal_f("fingerprint failed");
+
+ debug("%s: matching %s found: %s %s", loc,
+ sshkey_is_cert(key) ? "CA" : "key", sshkey_type(found), fp);
+
+ if (auth_authorise_keyopts(pw, keyopts,
+ sshkey_is_cert(key), remote_ip, remote_host, loc) != 0) {
+ reason = "Refused by key options";
+ goto fail_reason;
+ }
+ /* That's all we need for plain keys. */
+ if (!sshkey_is_cert(key)) {
+ verbose("Accepted key %s %s found at %s",
+ sshkey_type(found), fp, loc);
+ finalopts = keyopts;
+ keyopts = NULL;
+ goto success;
+ }
+
+ /*
+ * Additional authorisation for certificates.
+ */
+
+ /* Parse and check options present in certificate */
+ if ((certopts = sshauthopt_from_cert(key)) == NULL) {
+ reason = "Invalid certificate options";
+ goto fail_reason;
+ }
+ if (auth_authorise_keyopts(pw, certopts, 0,
+ remote_ip, remote_host, loc) != 0) {
+ reason = "Refused by certificate options";
+ goto fail_reason;
+ }
+ if ((finalopts = sshauthopt_merge(keyopts, certopts, &reason)) == NULL)
+ goto fail_reason;
+
+ /*
+ * If the user has specified a list of principals as
+ * a key option, then prefer that list to matching
+ * their username in the certificate principals list.
+ */
+ if (keyopts->cert_principals != NULL &&
+ !match_principals_option(keyopts->cert_principals, key->cert)) {
+ reason = "Certificate does not contain an authorized principal";
+ goto fail_reason;
+ }
+ if (sshkey_cert_check_authority_now(key, 0, 0, 0,
+ keyopts->cert_principals == NULL ? pw->pw_name : NULL,
+ &reason) != 0)
+ goto fail_reason;
+
+ verbose("Accepted certificate ID \"%s\" (serial %llu) "
+ "signed by CA %s %s found at %s",
+ key->cert->key_id,
+ (unsigned long long)key->cert->serial,
+ sshkey_type(found), fp, loc);
+
+ success:
+ if (finalopts == NULL)
+ fatal_f("internal error: missing options");
+ if (authoptsp != NULL) {
+ *authoptsp = finalopts;
+ finalopts = NULL;
+ }
+ /* success */
+ ret = 0;
+ goto out;
+
+ fail_reason:
+ error("%s", reason);
+ auth_debug_add("%s", reason);
+ out:
+ free(fp);
+ sshauthopt_free(keyopts);
+ sshauthopt_free(certopts);
+ sshauthopt_free(finalopts);
+ sshkey_free(found);
+ return ret;
+}
+
+/*
+ * Checks whether key is allowed in authorized_keys-format file,
+ * returns 1 if the key is allowed or 0 otherwise.
+ */
+int
+auth_check_authkeys_file(struct passwd *pw, FILE *f, char *file,
+ struct sshkey *key, const char *remote_ip,
+ const char *remote_host, struct sshauthopt **authoptsp)
+{
+ char *cp, *line = NULL, loc[256];
+ size_t linesize = 0;
+ int found_key = 0;
+ u_long linenum = 0, nonblank = 0;
+
+ if (authoptsp != NULL)
+ *authoptsp = NULL;
+
+ while (getline(&line, &linesize, f) != -1) {
+ linenum++;
+ /* Always consume entire file */
+ if (found_key)
+ continue;
+
+ /* Skip leading whitespace, empty and comment lines. */
+ cp = line;
+ skip_space(&cp);
+ if (!*cp || *cp == '\n' || *cp == '#')
+ continue;
+
+ nonblank++;
+ snprintf(loc, sizeof(loc), "%.200s:%lu", file, linenum);
+ if (auth_check_authkey_line(pw, key, cp,
+ remote_ip, remote_host, loc, authoptsp) == 0)
+ found_key = 1;
+ }
+ free(line);
+ debug2_f("%s: processed %lu/%lu lines", file, nonblank, linenum);
+ return found_key;
+}
+
+static FILE *
+auth_openfile(const char *file, struct passwd *pw, int strict_modes,
+ int log_missing, char *file_type)
+{
+ char line[1024];
+ struct stat st;
+ int fd;
+ FILE *f;
+
+ if ((fd = open(file, O_RDONLY|O_NONBLOCK)) == -1) {
+ if (errno != ENOENT) {
+ logit("Could not open user '%s' %s '%s': %s",
+ pw->pw_name, file_type, file, strerror(errno));
+ } else if (log_missing) {
+ debug("Could not open user '%s' %s '%s': %s",
+ pw->pw_name, file_type, file, strerror(errno));
+ }
+ return NULL;
+ }
+
+ if (fstat(fd, &st) == -1) {
+ close(fd);
+ return NULL;
+ }
+ if (!S_ISREG(st.st_mode)) {
+ logit("User '%s' %s '%s' is not a regular file",
+ pw->pw_name, file_type, file);
+ close(fd);
+ return NULL;
+ }
+ unset_nonblock(fd);
+ if ((f = fdopen(fd, "r")) == NULL) {
+ close(fd);
+ return NULL;
+ }
+ if (strict_modes &&
+ safe_path_fd(fileno(f), file, pw, line, sizeof(line)) != 0) {
+ fclose(f);
+ logit("Authentication refused: %s", line);
+ auth_debug_add("Ignored %s: %s", file_type, line);
+ return NULL;
+ }
+
+ return f;
+}
+
+
+FILE *
+auth_openkeyfile(const char *file, struct passwd *pw, int strict_modes)
+{
+ return auth_openfile(file, pw, strict_modes, 1, "authorized keys");
+}
+
+FILE *
+auth_openprincipals(const char *file, struct passwd *pw, int strict_modes)
+{
+ return auth_openfile(file, pw, strict_modes, 0,
+ "authorized principals");
+}
+
diff --git a/authfd.c b/authfd.c
index 76e48aab779e..b633e35eaf8b 100644
--- a/authfd.c
+++ b/authfd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: authfd.c,v 1.129 2021/12/19 22:10:24 djm Exp $ */
+/* $OpenBSD: authfd.c,v 1.130 2022/04/27 11:08:55 dtucker Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -92,6 +92,7 @@ ssh_get_authentication_socket_path(const char *authsocket, int *fdp)
int sock, oerrno;
struct sockaddr_un sunaddr;
+ debug3_f("path '%s'", authsocket);
memset(&sunaddr, 0, sizeof(sunaddr));
sunaddr.sun_family = AF_UNIX;
strlcpy(sunaddr.sun_path, authsocket, sizeof(sunaddr.sun_path));
diff --git a/authfile.c b/authfile.c
index a399efc3e738..9ed4f4c3a30d 100644
--- a/authfile.c
+++ b/authfile.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: authfile.c,v 1.142 2022/01/01 01:55:30 jsg Exp $ */
+/* $OpenBSD: authfile.c,v 1.143 2022/06/21 14:52:13 tobhe Exp $ */
/*
* Copyright (c) 2000, 2013 Markus Friedl. All rights reserved.
*
@@ -501,20 +501,25 @@ sshkey_save_public(const struct sshkey *key, const char *path,
return SSH_ERR_SYSTEM_ERROR;
if ((f = fdopen(fd, "w")) == NULL) {
r = SSH_ERR_SYSTEM_ERROR;
+ close(fd);
goto fail;
}
if ((r = sshkey_write(key, f)) != 0)
goto fail;
fprintf(f, " %s\n", comment);
- if (ferror(f) || fclose(f) != 0) {
+ if (ferror(f)) {
r = SSH_ERR_SYSTEM_ERROR;
+ goto fail;
+ }
+ if (fclose(f) != 0) {
+ r = SSH_ERR_SYSTEM_ERROR;
+ f = NULL;
fail:
- oerrno = errno;
- if (f != NULL)
+ if (f != NULL) {
+ oerrno = errno;
fclose(f);
- else
- close(fd);
- errno = oerrno;
+ errno = oerrno;
+ }
return r;
}
return 0;
diff --git a/channels.c b/channels.c
index ee3c787922fb..e75a0cf9b509 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.415 2022/03/30 21:10:25 djm Exp $ */
+/* $OpenBSD: channels.c,v 1.420 2022/09/19 08:49:50 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -304,6 +304,8 @@ static void
channel_register_fds(struct ssh *ssh, Channel *c, int rfd, int wfd, int efd,
int extusage, int nonblock, int is_tty)
{
+ int val;
+
if (rfd != -1)
fcntl(rfd, F_SETFD, FD_CLOEXEC);
if (wfd != -1 && wfd != rfd)
@@ -333,15 +335,18 @@ channel_register_fds(struct ssh *ssh, Channel *c, int rfd, int wfd, int efd,
* restore their blocking state on exit to avoid interfering
* with other programs that follow.
*/
- if (rfd != -1 && !isatty(rfd) && fcntl(rfd, F_GETFL) == 0) {
+ if (rfd != -1 && !isatty(rfd) &&
+ (val = fcntl(rfd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
c->restore_block |= CHANNEL_RESTORE_RFD;
set_nonblock(rfd);
}
- if (wfd != -1 && !isatty(wfd) && fcntl(wfd, F_GETFL) == 0) {
+ if (wfd != -1 && !isatty(wfd) &&
+ (val = fcntl(wfd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
c->restore_block |= CHANNEL_RESTORE_WFD;
set_nonblock(wfd);
}
- if (efd != -1 && !isatty(efd) && fcntl(efd, F_GETFL) == 0) {
+ if (efd != -1 && !isatty(efd) &&
+ (val = fcntl(efd, F_GETFL)) != -1 && !(val & O_NONBLOCK)) {
c->restore_block |= CHANNEL_RESTORE_EFD;
set_nonblock(efd);
}
@@ -356,15 +361,15 @@ channel_register_fds(struct ssh *ssh, Channel *c, int rfd, int wfd, int efd,
}
/*
- * Allocate a new channel object and set its type and socket. This will cause
- * remote_name to be freed.
+ * Allocate a new channel object and set its type and socket.
*/
Channel *
channel_new(struct ssh *ssh, char *ctype, int type, int rfd, int wfd, int efd,
- u_int window, u_int maxpack, int extusage, char *remote_name, int nonblock)
+ u_int window, u_int maxpack, int extusage, const char *remote_name,
+ int nonblock)
{
struct ssh_channels *sc = ssh->chanctxt;
- u_int i, found;
+ u_int i, found = 0;
Channel *c;
int r;
@@ -2420,6 +2425,9 @@ channel_handler(struct ssh *ssh, int table, time_t *unpause_secs)
c = sc->channels[i];
if (c == NULL)
continue;
+ /* Try to keep IO going while rekeying */
+ if (ssh_packet_is_rekeying(ssh) && c->type != SSH_CHANNEL_OPEN)
+ continue;
if (c->delayed) {
if (table == CHAN_PRE)
c->delayed = 0;
@@ -2601,21 +2609,22 @@ channel_prepare_poll(struct ssh *ssh, struct pollfd **pfdp, u_int *npfd_allocp,
u_int i, oalloc, p, npfd = npfd_reserved;
channel_before_prepare_io(ssh); /* might create a new channel */
-
+ /* clear out I/O flags from last poll */
+ for (i = 0; i < sc->channels_alloc; i++) {
+ if (sc->channels[i] == NULL)
+ continue;
+ sc->channels[i]->io_want = sc->channels[i]->io_ready = 0;
+ }
/* Allocate 4x pollfd for each channel (rfd, wfd, efd, sock) */
if (sc->channels_alloc >= (INT_MAX / 4) - npfd_reserved)
fatal_f("too many channels"); /* shouldn't happen */
- if (!ssh_packet_is_rekeying(ssh))
- npfd += sc->channels_alloc * 4;
+ npfd += sc->channels_alloc * 4;
if (npfd > *npfd_allocp) {
*pfdp = xrecallocarray(*pfdp, *npfd_allocp,
npfd, sizeof(**pfdp));
*npfd_allocp = npfd;
}
*npfd_activep = npfd_reserved;
- if (ssh_packet_is_rekeying(ssh))
- return;
-
oalloc = sc->channels_alloc;
channel_handler(ssh, CHAN_PRE, minwait_secs);
@@ -4394,13 +4403,15 @@ connect_next(struct channel_connect *cctx)
if (getnameinfo(cctx->ai->ai_addr, cctx->ai->ai_addrlen,
ntop, sizeof(ntop), strport, sizeof(strport),
NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
- error("connect_next: getnameinfo failed");
+ error_f("getnameinfo failed");
continue;
}
break;
default:
continue;
}
+ debug_f("start for host %.100s ([%.100s]:%s)",
+ cctx->host, ntop, strport);
if ((sock = socket(cctx->ai->ai_family, cctx->ai->ai_socktype,
cctx->ai->ai_protocol)) == -1) {
if (cctx->ai->ai_next == NULL)
@@ -4413,9 +4424,8 @@ connect_next(struct channel_connect *cctx)
fatal_f("set_nonblock(%d)", sock);
if (connect(sock, cctx->ai->ai_addr,
cctx->ai->ai_addrlen) == -1 && errno != EINPROGRESS) {
- debug("connect_next: host %.100s ([%.100s]:%s): "
- "%.100s", cctx->host, ntop, strport,
- strerror(errno));
+ debug_f("host %.100s ([%.100s]:%s): %.100s",
+ cctx->host, ntop, strport, strerror(errno));
saved_errno = errno;
close(sock);
errno = saved_errno;
@@ -4423,8 +4433,8 @@ connect_next(struct channel_connect *cctx)
}
if (cctx->ai->ai_family != AF_UNIX)
set_nodelay(sock);
- debug("connect_next: host %.100s ([%.100s]:%s) "
- "in progress, fd=%d", cctx->host, ntop, strport, sock);
+ debug_f("connect host %.100s ([%.100s]:%s) in progress, fd=%d",
+ cctx->host, ntop, strport, sock);
cctx->ai = cctx->ai->ai_next;
return sock;
}
diff --git a/channels.h b/channels.h
index dfb82f8ce262..828c1b61b443 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.h,v 1.142 2022/03/30 21:10:25 djm Exp $ */
+/* $OpenBSD: channels.h,v 1.143 2022/05/05 00:56:58 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -275,7 +275,7 @@ Channel *channel_by_id(struct ssh *, int);
Channel *channel_by_remote_id(struct ssh *, u_int);
Channel *channel_lookup(struct ssh *, int);
Channel *channel_new(struct ssh *, char *, int, int, int, int,
- u_int, u_int, int, char *, int);
+ u_int, u_int, int, const char *, int);
void channel_set_fds(struct ssh *, int, int, int, int, int,
int, int, u_int);
void channel_free(struct ssh *, Channel *);
diff --git a/cipher-ctr.c b/cipher-ctr.c
deleted file mode 100644
index 32771f28743b..000000000000
--- a/cipher-ctr.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* $OpenBSD: cipher-ctr.c,v 1.11 2010/10/01 23:05:32 djm Exp $ */
-/*
- * Copyright (c) 2003 Markus Friedl <markus@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-#include "includes.h"
-
-#if defined(WITH_OPENSSL) && !defined(OPENSSL_HAVE_EVPCTR)
-#include <sys/types.h>
-
-#include <stdarg.h>
-#include <string.h>
-
-#include <openssl/evp.h>
-
-#include "xmalloc.h"
-#include "log.h"
-
-/* compatibility with old or broken OpenSSL versions */
-#include "openbsd-compat/openssl-compat.h"
-
-#ifndef USE_BUILTIN_RIJNDAEL
-#include <openssl/aes.h>
-#endif
-
-struct ssh_aes_ctr_ctx
-{
- AES_KEY aes_ctx;
- u_char aes_counter[AES_BLOCK_SIZE];
-};
-
-/*
- * increment counter 'ctr',
- * the counter is of size 'len' bytes and stored in network-byte-order.
- * (LSB at ctr[len-1], MSB at ctr[0])
- */
-static void
-ssh_ctr_inc(u_char *ctr, size_t len)
-{
- int i;
-
- for (i = len - 1; i >= 0; i--)
- if (++ctr[i]) /* continue on overflow */
- return;
-}
-
-static int
-ssh_aes_ctr(EVP_CIPHER_CTX *ctx, u_char *dest, const u_char *src,
- LIBCRYPTO_EVP_INL_TYPE len)
-{
- struct ssh_aes_ctr_ctx *c;
- size_t n = 0;
- u_char buf[AES_BLOCK_SIZE];
-
- if (len == 0)
- return (1);
- if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) == NULL)
- return (0);
-
- while ((len--) > 0) {
- if (n == 0) {
- AES_encrypt(c->aes_counter, buf, &c->aes_ctx);
- ssh_ctr_inc(c->aes_counter, AES_BLOCK_SIZE);
- }
- *(dest++) = *(src++) ^ buf[n];
- n = (n + 1) % AES_BLOCK_SIZE;
- }
- return (1);
-}
-
-static int
-ssh_aes_ctr_init(EVP_CIPHER_CTX *ctx, const u_char *key, const u_char *iv,
- int enc)
-{
- struct ssh_aes_ctr_ctx *c;
-
- if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) == NULL) {
- c = xmalloc(sizeof(*c));
- EVP_CIPHER_CTX_set_app_data(ctx, c);
- }
- if (key != NULL)
- AES_set_encrypt_key(key, EVP_CIPHER_CTX_key_length(ctx) * 8,
- &c->aes_ctx);
- if (iv != NULL)
- memcpy(c->aes_counter, iv, AES_BLOCK_SIZE);
- return (1);
-}
-
-static int
-ssh_aes_ctr_cleanup(EVP_CIPHER_CTX *ctx)
-{
- struct ssh_aes_ctr_ctx *c;
-
- if ((c = EVP_CIPHER_CTX_get_app_data(ctx)) != NULL) {
- memset(c, 0, sizeof(*c));
- free(c);
- EVP_CIPHER_CTX_set_app_data(ctx, NULL);
- }
- return (1);
-}
-
-void
-ssh_aes_ctr_iv(EVP_CIPHER_CTX *evp, int doset, u_char * iv, size_t len)
-{
- struct ssh_aes_ctr_ctx *c;
-
- if ((c = EVP_CIPHER_CTX_get_app_data(evp)) == NULL)
- fatal("ssh_aes_ctr_iv: no context");
- if (doset)
- memcpy(c->aes_counter, iv, len);
- else
- memcpy(iv, c->aes_counter, len);
-}
-
-const EVP_CIPHER *
-evp_aes_128_ctr(void)
-{
- static EVP_CIPHER aes_ctr;
-
- memset(&aes_ctr, 0, sizeof(EVP_CIPHER));
- aes_ctr.nid = NID_undef;
- aes_ctr.block_size = AES_BLOCK_SIZE;
- aes_ctr.iv_len = AES_BLOCK_SIZE;
- aes_ctr.key_len = 16;
- aes_ctr.init = ssh_aes_ctr_init;
- aes_ctr.cleanup = ssh_aes_ctr_cleanup;
- aes_ctr.do_cipher = ssh_aes_ctr;
-#ifndef SSH_OLD_EVP
- aes_ctr.flags = EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH |
- EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CUSTOM_IV;
-#endif
- return (&aes_ctr);
-}
-
-#endif /* defined(WITH_OPENSSL) && !defined(OPENSSL_HAVE_EVPCTR) */
diff --git a/cipher.c b/cipher.c
index 5b3a86d69219..02aea4089ff9 100644
--- a/cipher.c
+++ b/cipher.c
@@ -94,12 +94,10 @@ static const struct sshcipher ciphers[] = {
{ "aes128-ctr", 16, 16, 0, 0, 0, EVP_aes_128_ctr },
{ "aes192-ctr", 16, 24, 0, 0, 0, EVP_aes_192_ctr },
{ "aes256-ctr", 16, 32, 0, 0, 0, EVP_aes_256_ctr },
-# ifdef OPENSSL_HAVE_EVPGCM
{ "aes128-gcm@openssh.com",
16, 16, 12, 16, 0, EVP_aes_128_gcm },
{ "aes256-gcm@openssh.com",
16, 32, 12, 16, 0, EVP_aes_256_gcm },
-# endif /* OPENSSL_HAVE_EVPGCM */
#else
{ "aes128-ctr", 16, 16, 0, 0, CFLAG_AESCTR, NULL },
{ "aes192-ctr", 16, 24, 0, 0, CFLAG_AESCTR, NULL },
@@ -487,11 +485,6 @@ cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, size_t len)
return SSH_ERR_LIBCRYPTO_ERROR;
if ((size_t)evplen != len)
return SSH_ERR_INVALID_ARGUMENT;
-#ifndef OPENSSL_HAVE_EVPCTR
- if (c->evptype == evp_aes_128_ctr)
- ssh_aes_ctr_iv(cc->evp, 0, iv, len);
- else
-#endif
if (cipher_authlen(c)) {
if (!EVP_CIPHER_CTX_ctrl(cc->evp, EVP_CTRL_GCM_IV_GEN,
len, iv))
@@ -521,12 +514,6 @@ cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv, size_t len)
return SSH_ERR_LIBCRYPTO_ERROR;
if ((size_t)evplen != len)
return SSH_ERR_INVALID_ARGUMENT;
-#ifndef OPENSSL_HAVE_EVPCTR
- /* XXX iv arg is const, but ssh_aes_ctr_iv isn't */
- if (c->evptype == evp_aes_128_ctr)
- ssh_aes_ctr_iv(cc->evp, 1, (u_char *)iv, evplen);
- else
-#endif
if (cipher_authlen(c)) {
/* XXX iv arg is const, but EVP_CIPHER_CTX_ctrl isn't */
if (!EVP_CIPHER_CTX_ctrl(cc->evp,
diff --git a/clientloop.c b/clientloop.c
index f8350e67224b..0050f3eb6faa 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.378 2022/01/22 00:49:34 djm Exp $ */
+/* $OpenBSD: clientloop.c,v 1.380 2022/06/03 04:30:46 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1348,9 +1348,8 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg,
if (quit_pending)
break;
- /* Do channel operations unless rekeying in progress. */
- if (!ssh_packet_is_rekeying(ssh))
- channel_after_poll(ssh, pfd, npfd_active);
+ /* Do channel operations. */
+ channel_after_poll(ssh, pfd, npfd_active);
/* Buffer input from the connection. */
if (conn_in_ready)
@@ -2468,7 +2467,8 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem,
const char *term, struct termios *tiop, int in_fd, struct sshbuf *cmd,
char **env)
{
- int i, j, matched, len, r;
+ size_t i, j, len;
+ int matched, r;
char *name, *val;
Channel *c = NULL;
@@ -2551,13 +2551,13 @@ client_session2_setup(struct ssh *ssh, int id, int want_tty, int want_subsystem,
len = 900;
if (want_subsystem) {
debug("Sending subsystem: %.*s",
- len, (const u_char*)sshbuf_ptr(cmd));
+ (int)len, (const u_char*)sshbuf_ptr(cmd));
channel_request_start(ssh, id, "subsystem", 1);
client_expect_confirm(ssh, id, "subsystem",
CONFIRM_CLOSE);
} else {
debug("Sending command: %.*s",
- len, (const u_char*)sshbuf_ptr(cmd));
+ (int)len, (const u_char*)sshbuf_ptr(cmd));
channel_request_start(ssh, id, "exec", 1);
client_expect_confirm(ssh, id, "exec", CONFIRM_CLOSE);
}
diff --git a/compat.c b/compat.c
index 0dbea68c625f..46dfe3a9c2e7 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: compat.c,v 1.119 2021/09/10 05:46:09 djm Exp $ */
+/* $OpenBSD: compat.c,v 1.120 2022/07/01 03:35:45 dtucker Exp $ */
/*
* Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
*
@@ -156,11 +156,12 @@ compat_banner(struct ssh *ssh, const char *version)
debug_f("no match: %s", version);
}
+/* Always returns pointer to allocated memory, caller must free. */
char *
compat_cipher_proposal(struct ssh *ssh, char *cipher_prop)
{
if (!(ssh->compat & SSH_BUG_BIGENDIANAES))
- return cipher_prop;
+ return xstrdup(cipher_prop);
debug2_f("original cipher proposal: %s", cipher_prop);
if ((cipher_prop = match_filter_denylist(cipher_prop, "aes*")) == NULL)
fatal("match_filter_denylist failed");
@@ -170,11 +171,12 @@ compat_cipher_proposal(struct ssh *ssh, char *cipher_prop)
return cipher_prop;
}
+/* Always returns pointer to allocated memory, caller must free. */
char *
compat_pkalg_proposal(struct ssh *ssh, char *pkalg_prop)
{
if (!(ssh->compat & SSH_BUG_RSASIGMD5))
- return pkalg_prop;
+ return xstrdup(pkalg_prop);
debug2_f("original public key proposal: %s", pkalg_prop);
if ((pkalg_prop = match_filter_denylist(pkalg_prop, "ssh-rsa")) == NULL)
fatal("match_filter_denylist failed");
@@ -184,21 +186,26 @@ compat_pkalg_proposal(struct ssh *ssh, char *pkalg_prop)
return pkalg_prop;
}
+/* Always returns pointer to allocated memory, caller must free. */
char *
compat_kex_proposal(struct ssh *ssh, char *p)
{
+ char *cp = NULL;
+
if ((ssh->compat & (SSH_BUG_CURVE25519PAD|SSH_OLD_DHGEX)) == 0)
- return p;
+ return xstrdup(p);
debug2_f("original KEX proposal: %s", p);
if ((ssh->compat & SSH_BUG_CURVE25519PAD) != 0)
if ((p = match_filter_denylist(p,
"curve25519-sha256@libssh.org")) == NULL)
fatal("match_filter_denylist failed");
if ((ssh->compat & SSH_OLD_DHGEX) != 0) {
+ cp = p;
if ((p = match_filter_denylist(p,
"diffie-hellman-group-exchange-sha256,"
"diffie-hellman-group-exchange-sha1")) == NULL)
fatal("match_filter_denylist failed");
+ free(cp);
}
debug2_f("compat KEX proposal: %s", p);
if (*p == '\0')
diff --git a/config.h.in b/config.h.in
index 8d2a3bc65b56..d08cf41add37 100644
--- a/config.h.in
+++ b/config.h.in
@@ -276,6 +276,12 @@
/* calloc(0, x) returns NULL */
#undef HAVE_CALLOC
+/* Define if you have caph_cache_tzdata */
+#undef HAVE_CAPH_CACHE_TZDATA
+
+/* Define to 1 if you have the <capsicum_helpers.h> header file. */
+#undef HAVE_CAPSICUM_HELPERS_H
+
/* Define to 1 if you have the `cap_rights_limit' function. */
#undef HAVE_CAP_RIGHTS_LIMIT
@@ -331,6 +337,10 @@
don't. */
#undef HAVE_DECL_FTRUNCATE
+/* Define to 1 if you have the declaration of `getentropy', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETENTROPY
+
/* Define to 1 if you have the declaration of `getpeereid', and to 0 if you
don't. */
#undef HAVE_DECL_GETPEEREID
@@ -511,9 +521,6 @@
/* Define to 1 if you have the `EVP_chacha20' function. */
#undef HAVE_EVP_CHACHA20
-/* Define to 1 if you have the `EVP_CIPHER_CTX_ctrl' function. */
-#undef HAVE_EVP_CIPHER_CTX_CTRL
-
/* Define to 1 if you have the `EVP_CIPHER_CTX_get_iv' function. */
#undef HAVE_EVP_CIPHER_CTX_GET_IV
@@ -613,6 +620,9 @@
/* Define to 1 if you have the `fido_dev_get_touch_status' function. */
#undef HAVE_FIDO_DEV_GET_TOUCH_STATUS
+/* Define to 1 if you have the `fido_dev_is_winhello' function. */
+#undef HAVE_FIDO_DEV_IS_WINHELLO
+
/* Define to 1 if you have the `fido_dev_supports_cred_prot' function. */
#undef HAVE_FIDO_DEV_SUPPORTS_CRED_PROT
@@ -667,6 +677,9 @@
/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD
+/* Define to 1 if you have the `getentropy' function. */
+#undef HAVE_GETENTROPY
+
/* Define to 1 if you have the `getgrouplist' function. */
#undef HAVE_GETGROUPLIST
@@ -871,9 +884,6 @@
/* Define to 1 if you have the `bsm' library (-lbsm). */
#undef HAVE_LIBBSM
-/* Define to 1 if you have the `crypt' library (-lcrypt). */
-#undef HAVE_LIBCRYPT
-
/* Define to 1 if you have the `dl' library (-ldl). */
#undef HAVE_LIBDL
@@ -974,9 +984,6 @@
/* Define to 1 if you have the `memmove' function. */
#undef HAVE_MEMMOVE
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
/* Define to 1 if you have the `memset_s' function. */
#undef HAVE_MEMSET_S
@@ -1348,6 +1355,9 @@
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -1585,6 +1595,9 @@
/* Define to 1 if you have the `time' function. */
#undef HAVE_TIME
+/* Define to 1 if you have the `timegm' function. */
+#undef HAVE_TIMEGM
+
/* Define to 1 if you have the <time.h> header file. */
#undef HAVE_TIME_H
@@ -1823,12 +1836,6 @@
/* libcrypto has NID_secp521r1 */
#undef OPENSSL_HAS_NISTP521
-/* libcrypto has EVP AES CTR */
-#undef OPENSSL_HAVE_EVPCTR
-
-/* libcrypto has EVP AES GCM */
-#undef OPENSSL_HAVE_EVPGCM
-
/* libcrypto is missing AES 192 and 256 bit functions */
#undef OPENSSL_LOBOTOMISED_AES
@@ -1969,7 +1976,9 @@
/* Prepend the address family to IP tunnel traffic */
#undef SSH_TUN_PREPEND_AF
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#undef STDC_HEADERS
/* Define if you want a different $PATH for the superuser */
@@ -2069,11 +2078,6 @@
/* Define if xauth is found in your path */
#undef XAUTH_PATH
-/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
diff --git a/configure b/configure
index 8a31d27c27bb..ba87c9bb2c37 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,12 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for OpenSSH Portable.
+# Generated by GNU Autoconf 2.71 for OpenSSH Portable.
#
# Report bugs to <openssh-unix-dev@mindrot.org>.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -16,14 +17,16 @@
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -33,46 +36,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -96,8 +92,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -109,30 +109,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
@@ -154,20 +134,22 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
@@ -187,42 +169,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
@@ -230,14 +223,21 @@ fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
@@ -255,18 +255,19 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
$0: openssh-unix-dev@mindrot.org about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
@@ -294,6 +295,7 @@ as_fn_unset ()
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -311,6 +313,14 @@ as_fn_exit ()
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
@@ -325,7 +335,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -334,7 +344,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -373,12 +383,13 @@ as_fn_executable_p ()
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -390,18 +401,27 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
@@ -413,9 +433,9 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -442,7 +462,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -486,7 +506,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
@@ -500,6 +520,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -513,6 +537,13 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -588,40 +619,36 @@ PACKAGE_URL=''
ac_unique_file="ssh.c"
# Factoring default headers for most tests.
ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
+ac_header_c_list=
ac_subst_vars='LTLIBOBJS
CFLAGS_NOPIE
LDFLAGS_NOPIE
@@ -638,6 +665,7 @@ XAUTH_PATH
STRIP_OPT
xauth_path
PRIVSEP_PATH
+CHANNELLIBS
K5LIBS
GSSLIBS
KRB5CONF
@@ -647,7 +675,6 @@ LIBFIDO2
SK_DUMMY_LIBRARY
PICFLAG
LIBEDIT
-PKGCONFIG
LDNSCONFIG
LIBOBJS
LD
@@ -658,6 +685,7 @@ PATH_USERADD_PROG
PATH_GROUPADD_PROG
MANFMT
TEST_SHELL
+PKGCONFIG
MANDOC
NROFF
GROFF
@@ -669,14 +697,14 @@ CAT
ac_ct_AR
AR
MKDIR_P
+EGREP
+GREP
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
RANLIB
-AWK
-EGREP
-GREP
CPP
+AWK
host_os
host_vendor
host_cpu
@@ -870,8 +898,6 @@ do
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
@@ -912,9 +938,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -938,9 +964,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1151,9 +1177,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1167,9 +1193,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1213,9 +1239,9 @@ Try \`$0 --help' for more information"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
@@ -1231,7 +1257,7 @@ if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1295,7 +1321,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1518,9 +1544,9 @@ if test "$ac_init_help" = "recursive"; then
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1548,7 +1574,8 @@ esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1556,7 +1583,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1566,9 +1593,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
OpenSSH configure Portable
-generated by GNU Autoconf 2.69
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1585,14 +1612,14 @@ fi
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1600,14 +1627,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1619,8 +1647,8 @@ fi
# ac_fn_c_try_run LINENO
# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
ac_fn_c_try_run ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1630,25 +1658,26 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
{ { case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=$ac_status
@@ -1659,6 +1688,39 @@ fi
} # ac_fn_c_try_run
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$3=yes"
+else $as_nop
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
# ac_fn_c_try_cpp LINENO
# ----------------------
# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -1671,7 +1733,7 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1679,14 +1741,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1696,56 +1759,28 @@ fi
} # ac_fn_c_try_cpp
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
@@ -1759,19 +1794,22 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
# ac_fn_c_try_link LINENO
# -----------------------
@@ -1779,14 +1817,14 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1794,17 +1832,18 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1819,108 +1858,18 @@ fi
} # ac_fn_c_try_link
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------------- ##
-## Report this to openssh-unix-dev@mindrot.org ##
-## ------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
@@ -1928,16 +1877,9 @@ else
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#undef $2
/* Override any GCC internal prototype to avoid an error.
@@ -1955,24 +1897,25 @@ choke me
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
@@ -1984,17 +1927,18 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
@@ -2002,12 +1946,13 @@ if (sizeof ($2))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
@@ -2015,18 +1960,19 @@ if (sizeof (($2)))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
@@ -2038,16 +1984,17 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (ac_aggr.$3)
@@ -2056,14 +2003,15 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
@@ -2072,18 +2020,19 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
eval "$4=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
@@ -2102,7 +2051,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= 0)];
test_array [0] = 0;
@@ -2112,14 +2061,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=0 ac_mid=0
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2129,9 +2079,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid; break
-else
+else $as_nop
as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
@@ -2139,14 +2090,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0;
@@ -2156,14 +2107,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=-1 ac_mid=-1
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0;
@@ -2173,9 +2125,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=$ac_mid; break
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
@@ -2183,14 +2136,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
ac_lo= ac_hi=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
@@ -2198,7 +2151,7 @@ while test "x$ac_lo" != "x$ac_hi"; do
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2208,12 +2161,13 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case $ac_lo in #((
?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
@@ -2223,12 +2177,12 @@ esac
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
#include <stdio.h>
#include <stdlib.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
@@ -2256,9 +2210,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
ac_retval=1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -2270,14 +2225,34 @@ rm -f conftest.val
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by OpenSSH $as_me Portable, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
@@ -2310,8 +2285,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -2346,7 +2325,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2381,11 +2360,13 @@ done
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
@@ -2396,8 +2377,8 @@ trap 'exit_status=$?
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -2421,7 +2402,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
@@ -2429,14 +2410,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
@@ -2444,15 +2425,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
@@ -2460,8 +2441,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2475,63 +2456,48 @@ ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -2541,19 +2507,434 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="install-sh config.guess config.sub"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -2564,12 +2945,12 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
@@ -2578,24 +2959,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -2605,11 +2986,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -2624,6 +3006,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+# Check for stale configure as early as possible.
+for i in $srcdir/configure.ac $srcdir/m4/*.m4; do
+ if test "$i" -nt "$srcdir/configure"; then
+ as_fn_error $? "$i newer than configure, run autoreconf" "$LINENO" 5
+ fi
+done
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2633,6 +3023,15 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+
+
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2643,11 +3042,12 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -2655,11 +3055,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2670,11 +3074,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2687,11 +3091,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -2699,11 +3104,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -2714,11 +3123,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -2730,8 +3139,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -2739,23 +3148,23 @@ esac
fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -2765,7 +3174,7 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -2773,7 +3182,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -2785,9 +3194,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -2808,11 +3217,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -2829,7 +3239,7 @@ do
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
@@ -2845,44 +3255,46 @@ do
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2896,15 +3308,15 @@ for ac_file in conftest.exe conftest conftest.*; do
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
@@ -2913,7 +3325,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
@@ -2925,8 +3337,8 @@ _ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
@@ -2934,10 +3346,10 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
@@ -2945,39 +3357,40 @@ $as_echo "$ac_try_echo"; } >&5
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -2991,11 +3404,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
@@ -3004,31 +3418,32 @@ $as_echo "$ac_try_echo"; } >&5
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -3038,29 +3453,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
@@ -3069,57 +3488,60 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
@@ -3134,94 +3556,144 @@ else
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
@@ -3232,8 +3704,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# XXX relax this after reimplementing logit() etc.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports C99-style variadic macros" >&5
-$as_echo_n "checking if $CC supports C99-style variadic macros... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports C99-style variadic macros" >&5
+printf %s "checking if $CC supports C99-style variadic macros... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -3242,71 +3714,47 @@ int f(int a, int b, int c) { return a + b + c; }
#define F(a, ...) f(a, __VA_ARGS__)
int
-main ()
+main (void)
{
return F(1, 2, -3);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
as_fn_error $? "*** OpenSSH requires support for C99-style variadic macros" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+ # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
@@ -3325,21 +3773,22 @@ IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
@@ -3358,408 +3807,41 @@ IFS=$ac_save_IFS
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
+done
-fi
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-fi
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
fi
-
-done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+printf %s "checking whether byte ordering is bigendian... " >&6; }
+if test ${ac_cv_c_bigendian+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_bigendian=unknown
# See if we're dealing with a universal compiler.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3770,7 +3852,8 @@ else
typedef int dummy;
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# Check for potential -arch flags. It is not universal unless
# there are at least two -arch flags with different values.
@@ -3794,7 +3877,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
fi
done
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test $ac_cv_c_bigendian = unknown; then
# See if sys/param.h defines the BYTE_ORDER macro.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -3803,7 +3886,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#include <sys/param.h>
int
-main ()
+main (void)
{
#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
&& defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
@@ -3815,7 +3898,8 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# It does; now see whether it defined to BIG_ENDIAN or not.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -3823,7 +3907,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
#include <sys/param.h>
int
-main ()
+main (void)
{
#if BYTE_ORDER != BIG_ENDIAN
not big endian
@@ -3833,14 +3917,15 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_bigendian=yes
-else
+else $as_nop
ac_cv_c_bigendian=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $ac_cv_c_bigendian = unknown; then
# See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
@@ -3849,7 +3934,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#include <limits.h>
int
-main ()
+main (void)
{
#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
bogus endian macros
@@ -3859,14 +3944,15 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# It does; now see whether it defined to _BIG_ENDIAN or not.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
int
-main ()
+main (void)
{
#ifndef _BIG_ENDIAN
not big endian
@@ -3876,31 +3962,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_bigendian=yes
-else
+else $as_nop
ac_cv_c_bigendian=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $ac_cv_c_bigendian = unknown; then
# Compile a test program.
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
# Try to guess by grepping values from an object file.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-short int ascii_mm[] =
+unsigned short int ascii_mm[] =
{ 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
+ unsigned short int ascii_ii[] =
{ 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
int use_ascii (int i) {
return ascii_mm[i] + ascii_ii[i];
}
- short int ebcdic_ii[] =
+ unsigned short int ebcdic_ii[] =
{ 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
+ unsigned short int ebcdic_mm[] =
{ 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
int use_ebcdic (int i) {
return ebcdic_mm[i] + ebcdic_ii[i];
@@ -3908,14 +3996,15 @@ short int ascii_mm[] =
extern int foo;
int
-main ()
+main (void)
{
return use_ascii (foo) == use_ebcdic (foo);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
ac_cv_c_bigendian=yes
fi
@@ -3928,13 +4017,13 @@ if ac_fn_c_try_compile "$LINENO"; then :
fi
fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
/* Are we little or big endian? From Harbison&Steele. */
@@ -3950,9 +4039,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_c_bigendian=no
-else
+else $as_nop
ac_cv_c_bigendian=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -3961,17 +4051,17 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+printf "%s\n" "$ac_cv_c_bigendian" >&6; }
case $ac_cv_c_bigendian in #(
yes)
- $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+ printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h
;; #(
no)
;; #(
universal)
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
;; #(
*)
@@ -3985,11 +4075,12 @@ for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
@@ -3997,11 +4088,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4012,11 +4107,11 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4028,40 +4123,36 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
@@ -4073,10 +4164,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
@@ -4086,7 +4178,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
break
fi
@@ -4098,29 +4191,24 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
@@ -4132,10 +4220,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
@@ -4145,11 +4234,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -4163,11 +4253,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
@@ -4175,11 +4266,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4190,11 +4285,11 @@ fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4203,11 +4298,12 @@ if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
@@ -4215,11 +4311,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4230,11 +4330,11 @@ fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
@@ -4242,8 +4342,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
@@ -4252,7 +4352,8 @@ else
RANLIB="$ac_cv_prog_RANLIB"
fi
-# Find a good install program. We prefer a C program (faster),
+
+ # Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
@@ -4266,20 +4367,25 @@ fi
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
@@ -4289,13 +4395,13 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
@@ -4303,12 +4409,12 @@ case $as_dir/ in #((
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
break 3
fi
fi
@@ -4324,7 +4430,7 @@ IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
- if test "${ac_cv_path_install+set}" = set; then
+ if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
@@ -4334,8 +4440,8 @@ fi
INSTALL=$ac_install_sh
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
@@ -4345,11 +4451,81 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
then ac_cv_path_EGREP="$GREP -E"
else
@@ -4360,10 +4536,15 @@ else
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
@@ -4372,13 +4553,13 @@ case `"$ac_path_EGREP" --version 2>&1` in
ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
"$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -4407,30 +4588,36 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_path_mkdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir ('*'coreutils) '* | \
+ 'BusyBox '* | \
'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
esac
done
@@ -4441,7 +4628,7 @@ IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
+ if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
@@ -4451,19 +4638,20 @@ fi
MKDIR_P="$ac_install_sh -d"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf "%s\n" "$MKDIR_P" >&6; }
if test -n "$ac_tool_prefix"; then
for ac_prog in ar
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
@@ -4471,11 +4659,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4486,11 +4678,11 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4503,11 +4695,12 @@ if test -z "$AR"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
@@ -4515,11 +4708,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4530,11 +4727,11 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -4546,8 +4743,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
@@ -4556,11 +4753,12 @@ fi
# Extract the first word of "cat", so it can be a program name with args.
set dummy cat; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_CAT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_CAT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $CAT in
[\\/]* | ?:[\\/]*)
ac_cv_path_CAT="$CAT" # Let the user override the test with a path.
@@ -4570,11 +4768,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_CAT="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4586,21 +4788,22 @@ esac
fi
CAT=$ac_cv_path_CAT
if test -n "$CAT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5
-$as_echo "$CAT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5
+printf "%s\n" "$CAT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "kill", so it can be a program name with args.
set dummy kill; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_KILL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_KILL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $KILL in
[\\/]* | ?:[\\/]*)
ac_cv_path_KILL="$KILL" # Let the user override the test with a path.
@@ -4610,11 +4813,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KILL="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_KILL="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4626,21 +4833,22 @@ esac
fi
KILL=$ac_cv_path_KILL
if test -n "$KILL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KILL" >&5
-$as_echo "$KILL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $KILL" >&5
+printf "%s\n" "$KILL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "sed", so it can be a program name with args.
set dummy sed; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $SED in
[\\/]* | ?:[\\/]*)
ac_cv_path_SED="$SED" # Let the user override the test with a path.
@@ -4650,11 +4858,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_SED="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4666,21 +4878,22 @@ esac
fi
SED=$ac_cv_path_SED
if test -n "$SED"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5
-$as_echo "$SED" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5
+printf "%s\n" "$SED" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_TEST_MINUS_S_SH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_TEST_MINUS_S_SH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $TEST_MINUS_S_SH in
[\\/]* | ?:[\\/]*)
ac_cv_path_TEST_MINUS_S_SH="$TEST_MINUS_S_SH" # Let the user override the test with a path.
@@ -4690,11 +4903,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_TEST_MINUS_S_SH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4706,21 +4923,22 @@ esac
fi
TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH
if test -n "$TEST_MINUS_S_SH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
-$as_echo "$TEST_MINUS_S_SH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
+printf "%s\n" "$TEST_MINUS_S_SH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_TEST_MINUS_S_SH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_TEST_MINUS_S_SH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $TEST_MINUS_S_SH in
[\\/]* | ?:[\\/]*)
ac_cv_path_TEST_MINUS_S_SH="$TEST_MINUS_S_SH" # Let the user override the test with a path.
@@ -4730,11 +4948,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_TEST_MINUS_S_SH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4746,21 +4968,22 @@ esac
fi
TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH
if test -n "$TEST_MINUS_S_SH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
-$as_echo "$TEST_MINUS_S_SH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
+printf "%s\n" "$TEST_MINUS_S_SH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "sh", so it can be a program name with args.
set dummy sh; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_TEST_MINUS_S_SH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_TEST_MINUS_S_SH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $TEST_MINUS_S_SH in
[\\/]* | ?:[\\/]*)
ac_cv_path_TEST_MINUS_S_SH="$TEST_MINUS_S_SH" # Let the user override the test with a path.
@@ -4770,11 +4993,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_TEST_MINUS_S_SH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_TEST_MINUS_S_SH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4786,21 +5013,22 @@ esac
fi
TEST_MINUS_S_SH=$ac_cv_path_TEST_MINUS_S_SH
if test -n "$TEST_MINUS_S_SH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
-$as_echo "$TEST_MINUS_S_SH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEST_MINUS_S_SH" >&5
+printf "%s\n" "$TEST_MINUS_S_SH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $SH in
[\\/]* | ?:[\\/]*)
ac_cv_path_SH="$SH" # Let the user override the test with a path.
@@ -4810,11 +5038,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_SH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4826,21 +5058,22 @@ esac
fi
SH=$ac_cv_path_SH
if test -n "$SH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
-$as_echo "$SH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
+printf "%s\n" "$SH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $SH in
[\\/]* | ?:[\\/]*)
ac_cv_path_SH="$SH" # Let the user override the test with a path.
@@ -4850,11 +5083,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_SH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4866,21 +5103,22 @@ esac
fi
SH=$ac_cv_path_SH
if test -n "$SH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
-$as_echo "$SH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
+printf "%s\n" "$SH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "sh", so it can be a program name with args.
set dummy sh; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SH+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $SH in
[\\/]* | ?:[\\/]*)
ac_cv_path_SH="$SH" # Let the user override the test with a path.
@@ -4890,11 +5128,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_SH="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4906,21 +5148,22 @@ esac
fi
SH=$ac_cv_path_SH
if test -n "$SH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
-$as_echo "$SH" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
+printf "%s\n" "$SH" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "groff", so it can be a program name with args.
set dummy groff; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GROFF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_GROFF+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $GROFF in
[\\/]* | ?:[\\/]*)
ac_cv_path_GROFF="$GROFF" # Let the user override the test with a path.
@@ -4930,11 +5173,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GROFF="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_GROFF="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4946,21 +5193,22 @@ esac
fi
GROFF=$ac_cv_path_GROFF
if test -n "$GROFF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
-$as_echo "$GROFF" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GROFF" >&5
+printf "%s\n" "$GROFF" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "nroff awf", so it can be a program name with args.
set dummy nroff awf; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_NROFF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_NROFF+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $NROFF in
[\\/]* | ?:[\\/]*)
ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path.
@@ -4970,11 +5218,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_NROFF="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_NROFF="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -4986,21 +5238,22 @@ esac
fi
NROFF=$ac_cv_path_NROFF
if test -n "$NROFF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5
-$as_echo "$NROFF" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5
+printf "%s\n" "$NROFF" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "mandoc", so it can be a program name with args.
set dummy mandoc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MANDOC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MANDOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MANDOC in
[\\/]* | ?:[\\/]*)
ac_cv_path_MANDOC="$MANDOC" # Let the user override the test with a path.
@@ -5010,11 +5263,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_MANDOC="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_MANDOC="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5026,14 +5283,122 @@ esac
fi
MANDOC=$ac_cv_path_MANDOC
if test -n "$MANDOC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANDOC" >&5
-$as_echo "$MANDOC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANDOC" >&5
+printf "%s\n" "$MANDOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+ ac_pt_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $ac_pt_PKGCONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_pt_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
TEST_SHELL=sh
@@ -5044,19 +5409,20 @@ elif test "x$NROFF" != "x" ; then
elif test "x$GROFF" != "x" ; then
MANFMT="$GROFF -mandoc -Tascii"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no manpage formatter found" >&5
-$as_echo "$as_me: WARNING: no manpage formatter found" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no manpage formatter found" >&5
+printf "%s\n" "$as_me: WARNING: no manpage formatter found" >&2;}
MANFMT="false"
fi
# Extract the first word of "groupadd", so it can be a program name with args.
set dummy groupadd; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PATH_GROUPADD_PROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PATH_GROUPADD_PROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PATH_GROUPADD_PROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PATH_GROUPADD_PROG="$PATH_GROUPADD_PROG" # Let the user override the test with a path.
@@ -5066,11 +5432,15 @@ else
for as_dir in /usr/sbin${PATH_SEPARATOR}/etc
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PATH_GROUPADD_PROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATH_GROUPADD_PROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5083,21 +5453,22 @@ esac
fi
PATH_GROUPADD_PROG=$ac_cv_path_PATH_GROUPADD_PROG
if test -n "$PATH_GROUPADD_PROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_GROUPADD_PROG" >&5
-$as_echo "$PATH_GROUPADD_PROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PATH_GROUPADD_PROG" >&5
+printf "%s\n" "$PATH_GROUPADD_PROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "useradd", so it can be a program name with args.
set dummy useradd; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PATH_USERADD_PROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PATH_USERADD_PROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PATH_USERADD_PROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PATH_USERADD_PROG="$PATH_USERADD_PROG" # Let the user override the test with a path.
@@ -5107,11 +5478,15 @@ else
for as_dir in /usr/sbin${PATH_SEPARATOR}/etc
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PATH_USERADD_PROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATH_USERADD_PROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5124,21 +5499,22 @@ esac
fi
PATH_USERADD_PROG=$ac_cv_path_PATH_USERADD_PROG
if test -n "$PATH_USERADD_PROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_USERADD_PROG" >&5
-$as_echo "$PATH_USERADD_PROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PATH_USERADD_PROG" >&5
+printf "%s\n" "$PATH_USERADD_PROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "pkgmk", so it can be a program name with args.
set dummy pkgmk; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MAKE_PACKAGE_SUPPORTED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MAKE_PACKAGE_SUPPORTED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$MAKE_PACKAGE_SUPPORTED"; then
ac_cv_prog_MAKE_PACKAGE_SUPPORTED="$MAKE_PACKAGE_SUPPORTED" # Let the user override the test.
else
@@ -5146,11 +5522,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_MAKE_PACKAGE_SUPPORTED="yes"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5162,11 +5542,11 @@ fi
fi
MAKE_PACKAGE_SUPPORTED=$ac_cv_prog_MAKE_PACKAGE_SUPPORTED
if test -n "$MAKE_PACKAGE_SUPPORTED"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE_PACKAGE_SUPPORTED" >&5
-$as_echo "$MAKE_PACKAGE_SUPPORTED" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKE_PACKAGE_SUPPORTED" >&5
+printf "%s\n" "$MAKE_PACKAGE_SUPPORTED" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5180,17 +5560,19 @@ fi
# System features
# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
enableval=$enable_largefile;
fi
if test "$enable_largefile" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
ac_save_CC=$CC
@@ -5204,44 +5586,47 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_largefile_CC=' -n32'; break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
break
done
CC=$ac_save_CC
rm -f conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -5250,22 +5635,23 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _FILE_OFFSET_BITS 64
@@ -5274,43 +5660,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=64; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_file_offset_bits=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
case $ac_cv_sys_file_offset_bits in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
;;
esac
rm -rf conftest*
if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -5319,22 +5705,23 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _LARGE_FILES 1
@@ -5343,40 +5730,37 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=1; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_large_files=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
case $ac_cv_sys_large_files in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
;;
esac
rm -rf conftest*
fi
-
-
fi
@@ -5386,11 +5770,12 @@ fi
# Extract the first word of "passwd", so it can be a program name with args.
set dummy passwd; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PATH_PASSWD_PROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PATH_PASSWD_PROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PATH_PASSWD_PROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PATH_PASSWD_PROG="$PATH_PASSWD_PROG" # Let the user override the test with a path.
@@ -5400,11 +5785,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PATH_PASSWD_PROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATH_PASSWD_PROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5416,51 +5805,51 @@ esac
fi
PATH_PASSWD_PROG=$ac_cv_path_PATH_PASSWD_PROG
if test -n "$PATH_PASSWD_PROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATH_PASSWD_PROG" >&5
-$as_echo "$PATH_PASSWD_PROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PATH_PASSWD_PROG" >&5
+printf "%s\n" "$PATH_PASSWD_PROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test ! -z "$PATH_PASSWD_PROG" ; then
-cat >>confdefs.h <<_ACEOF
-#define _PATH_PASSWD_PROG "$PATH_PASSWD_PROG"
-_ACEOF
+printf "%s\n" "#define _PATH_PASSWD_PROG \"$PATH_PASSWD_PROG\"" >>confdefs.h
fi
LD="$CC"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __cplusplus
typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_inline=$ac_kw
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test "$ac_cv_c_inline" != no && break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
case $ac_cv_c_inline in
inline | yes) ;;
@@ -5478,53 +5867,134 @@ _ACEOF
esac
-ac_fn_c_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "#include <limits.h>
-"
-if test "x$ac_cv_have_decl_LLONG_MAX" = xyes; then :
- have_llong_max=1
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
-ac_fn_c_check_decl "$LINENO" "LONG_LONG_MAX" "ac_cv_have_decl_LONG_LONG_MAX" "#include <limits.h>
-"
-if test "x$ac_cv_have_decl_LONG_LONG_MAX" = xyes; then :
+ac_fn_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "#include <limits.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_LLONG_MAX" = xyes
+then :
+ have_llong_max=1
+fi
+ac_fn_check_decl "$LINENO" "LONG_LONG_MAX" "ac_cv_have_decl_LONG_LONG_MAX" "#include <limits.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_LONG_LONG_MAX" = xyes
+then :
have_long_long_max=1
fi
-
-ac_fn_c_check_decl "$LINENO" "SYSTR_POLICY_KILL" "ac_cv_have_decl_SYSTR_POLICY_KILL" "
+ac_fn_check_decl "$LINENO" "SYSTR_POLICY_KILL" "ac_cv_have_decl_SYSTR_POLICY_KILL" "
#include <sys/types.h>
#include <sys/param.h>
#include <dev/systrace.h>
-"
-if test "x$ac_cv_have_decl_SYSTR_POLICY_KILL" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SYSTR_POLICY_KILL" = xyes
+then :
have_systr_policy_kill=1
fi
-
-ac_fn_c_check_decl "$LINENO" "RLIMIT_NPROC" "ac_cv_have_decl_RLIMIT_NPROC" "
+ac_fn_check_decl "$LINENO" "RLIMIT_NPROC" "ac_cv_have_decl_RLIMIT_NPROC" "
#include <sys/types.h>
#include <sys/resource.h>
-"
-if test "x$ac_cv_have_decl_RLIMIT_NPROC" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_RLIMIT_NPROC" = xyes
+then :
-$as_echo "#define HAVE_RLIMIT_NPROC /**/" >>confdefs.h
+printf "%s\n" "#define HAVE_RLIMIT_NPROC /**/" >>confdefs.h
fi
-
-ac_fn_c_check_decl "$LINENO" "PR_SET_NO_NEW_PRIVS" "ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" "
+ac_fn_check_decl "$LINENO" "PR_SET_NO_NEW_PRIVS" "ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" "
#include <sys/types.h>
#include <linux/prctl.h>
-"
-if test "x$ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_PR_SET_NO_NEW_PRIVS" = xyes
+then :
have_linux_no_new_privs=1
fi
-
openssl=yes
# Check whether --with-openssl was given.
-if test "${with_openssl+set}" = set; then :
+if test ${with_openssl+y}
+then :
withval=$with_openssl; if test "x$withval" = "xno" ; then
openssl=no
fi
@@ -5532,26 +6002,25 @@ if test "${with_openssl+set}" = set; then :
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL will be used for cryptography" >&5
-$as_echo_n "checking whether OpenSSL will be used for cryptography... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL will be used for cryptography" >&5
+printf %s "checking whether OpenSSL will be used for cryptography... " >&6; }
if test "x$openssl" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define WITH_OPENSSL 1
-_ACEOF
+printf "%s\n" "#define WITH_OPENSSL 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
use_stack_protector=1
use_toolchain_hardening=1
# Check whether --with-stackprotect was given.
-if test "${with_stackprotect+set}" = set; then :
+if test ${with_stackprotect+y}
+then :
withval=$with_stackprotect;
if test "x$withval" = "xno"; then
use_stack_protector=0
@@ -5560,7 +6029,8 @@ fi
# Check whether --with-hardening was given.
-if test "${with_hardening+set}" = set; then :
+if test ${with_hardening+y}
+then :
withval=$with_hardening;
if test "x$withval" = "xno"; then
use_toolchain_hardening=0
@@ -5570,31 +6040,32 @@ fi
# We use -Werror for the tests only so that we catch warnings like "this is
# on by default" for things like -fPIE.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror" >&5
-$as_echo_n "checking if $CC supports -Werror... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror" >&5
+printf %s "checking if $CC supports -Werror... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int main(void) { return 0; }
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
WERROR="-Werror"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
WERROR=""
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$saved_CFLAGS"
if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -pipe" >&5
-$as_echo_n "checking if $CC supports compile flag -pipe... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -pipe" >&5
+printf %s "checking if $CC supports compile flag -pipe... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -pipe"
_define_flag=""
@@ -5629,29 +6100,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunknown-warning-option" >&5
-$as_echo_n "checking if $CC supports compile flag -Wunknown-warning-option... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunknown-warning-option" >&5
+printf %s "checking if $CC supports compile flag -Wunknown-warning-option... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wunknown-warning-option"
_define_flag=""
@@ -5686,29 +6158,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wno-error=format-truncation" >&5
-$as_echo_n "checking if $CC supports compile flag -Wno-error=format-truncation... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wno-error=format-truncation" >&5
+printf %s "checking if $CC supports compile flag -Wno-error=format-truncation... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wno-error=format-truncation"
_define_flag=""
@@ -5743,29 +6216,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Qunused-arguments" >&5
-$as_echo_n "checking if $CC supports compile flag -Qunused-arguments... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Qunused-arguments" >&5
+printf %s "checking if $CC supports compile flag -Qunused-arguments... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Qunused-arguments"
_define_flag=""
@@ -5800,29 +6274,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wall" >&5
-$as_echo_n "checking if $CC supports compile flag -Wall... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wall" >&5
+printf %s "checking if $CC supports compile flag -Wall... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wall"
_define_flag=""
@@ -5857,29 +6332,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wextra" >&5
-$as_echo_n "checking if $CC supports compile flag -Wextra... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wextra" >&5
+printf %s "checking if $CC supports compile flag -Wextra... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wextra"
_define_flag=""
@@ -5914,29 +6390,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wpointer-arith" >&5
-$as_echo_n "checking if $CC supports compile flag -Wpointer-arith... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wpointer-arith" >&5
+printf %s "checking if $CC supports compile flag -Wpointer-arith... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wpointer-arith"
_define_flag=""
@@ -5971,29 +6448,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wuninitialized" >&5
-$as_echo_n "checking if $CC supports compile flag -Wuninitialized... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wuninitialized" >&5
+printf %s "checking if $CC supports compile flag -Wuninitialized... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wuninitialized"
_define_flag=""
@@ -6028,29 +6506,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wsign-compare" >&5
-$as_echo_n "checking if $CC supports compile flag -Wsign-compare... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wsign-compare" >&5
+printf %s "checking if $CC supports compile flag -Wsign-compare... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wsign-compare"
_define_flag=""
@@ -6085,29 +6564,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wformat-security" >&5
-$as_echo_n "checking if $CC supports compile flag -Wformat-security... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wformat-security" >&5
+printf %s "checking if $CC supports compile flag -Wformat-security... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wformat-security"
_define_flag=""
@@ -6142,29 +6622,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wsizeof-pointer-memaccess" >&5
-$as_echo_n "checking if $CC supports compile flag -Wsizeof-pointer-memaccess... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wsizeof-pointer-memaccess" >&5
+printf %s "checking if $CC supports compile flag -Wsizeof-pointer-memaccess... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wsizeof-pointer-memaccess"
_define_flag=""
@@ -6199,29 +6680,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wpointer-sign" >&5
-$as_echo_n "checking if $CC supports compile flag -Wpointer-sign... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wpointer-sign" >&5
+printf %s "checking if $CC supports compile flag -Wpointer-sign... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wpointer-sign"
_define_flag="-Wno-pointer-sign"
@@ -6256,29 +6738,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunused-parameter" >&5
-$as_echo_n "checking if $CC supports compile flag -Wunused-parameter... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunused-parameter" >&5
+printf %s "checking if $CC supports compile flag -Wunused-parameter... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wunused-parameter"
_define_flag="-Wno-unused-parameter"
@@ -6313,29 +6796,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunused-result" >&5
-$as_echo_n "checking if $CC supports compile flag -Wunused-result... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wunused-result" >&5
+printf %s "checking if $CC supports compile flag -Wunused-result... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wunused-result"
_define_flag="-Wno-unused-result"
@@ -6370,29 +6854,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wimplicit-fallthrough" >&5
-$as_echo_n "checking if $CC supports compile flag -Wimplicit-fallthrough... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wimplicit-fallthrough" >&5
+printf %s "checking if $CC supports compile flag -Wimplicit-fallthrough... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wimplicit-fallthrough"
_define_flag=""
@@ -6427,29 +6912,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wmisleading-indentation" >&5
-$as_echo_n "checking if $CC supports compile flag -Wmisleading-indentation... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wmisleading-indentation" >&5
+printf %s "checking if $CC supports compile flag -Wmisleading-indentation... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wmisleading-indentation"
_define_flag=""
@@ -6484,29 +6970,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wbitwise-instead-of-logical" >&5
-$as_echo_n "checking if $CC supports compile flag -Wbitwise-instead-of-logical... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wbitwise-instead-of-logical" >&5
+printf %s "checking if $CC supports compile flag -Wbitwise-instead-of-logical... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wbitwise-instead-of-logical"
_define_flag=""
@@ -6541,29 +7028,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fno-strict-aliasing" >&5
-$as_echo_n "checking if $CC supports compile flag -fno-strict-aliasing... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fno-strict-aliasing" >&5
+printf %s "checking if $CC supports compile flag -fno-strict-aliasing... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -fno-strict-aliasing"
_define_flag=""
@@ -6598,30 +7086,31 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
if test "x$use_toolchain_hardening" = "x1"; then
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5
-$as_echo_n "checking if $CC supports compile flag -mretpoline... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5
+printf %s "checking if $CC supports compile flag -mretpoline... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -mretpoline"
_define_flag=""
@@ -6656,29 +7145,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
} # clang
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,retpolineplt" >&5
-$as_echo_n "checking if $LD supports link flag -Wl,-z,retpolineplt... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,retpolineplt" >&5
+printf %s "checking if $LD supports link flag -Wl,-z,retpolineplt... " >&6; }
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $WERROR -Wl,-z,retpolineplt"
_define_flag=""
@@ -6701,30 +7191,31 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
LDFLAGS="$saved_LDFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5
-$as_echo_n "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5
+printf %s "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -D_FORTIFY_SOURCE=2"
_define_flag=""
@@ -6759,29 +7250,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,relro" >&5
-$as_echo_n "checking if $LD supports link flag -Wl,-z,relro... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,relro" >&5
+printf %s "checking if $LD supports link flag -Wl,-z,relro... " >&6; }
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $WERROR -Wl,-z,relro"
_define_flag=""
@@ -6804,30 +7296,31 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
LDFLAGS="$saved_LDFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,now" >&5
-$as_echo_n "checking if $LD supports link flag -Wl,-z,now... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,now" >&5
+printf %s "checking if $LD supports link flag -Wl,-z,now... " >&6; }
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $WERROR -Wl,-z,now"
_define_flag=""
@@ -6850,30 +7343,31 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
LDFLAGS="$saved_LDFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,noexecstack" >&5
-$as_echo_n "checking if $LD supports link flag -Wl,-z,noexecstack... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,noexecstack" >&5
+printf %s "checking if $LD supports link flag -Wl,-z,noexecstack... " >&6; }
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $WERROR -Wl,-z,noexecstack"
_define_flag=""
@@ -6896,25 +7390,26 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
LDFLAGS="$saved_LDFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
}
# NB. -ftrapv expects certain support functions to be present in
@@ -6923,8 +7418,8 @@ rm -f core conftest.err conftest.$ac_objext \
# actually links. The test program compiled/linked includes a number
# of integer operations that should exercise this.
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrapv and linking succeeds" >&5
-$as_echo_n "checking if $CC supports compile flag -ftrapv and linking succeeds... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrapv and linking succeeds" >&5
+printf %s "checking if $CC supports compile flag -ftrapv and linking succeeds... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -ftrapv"
_define_flag=""
@@ -6947,30 +7442,31 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fzero-call-used-regs=all" >&5
-$as_echo_n "checking if $CC supports compile flag -fzero-call-used-regs=all... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fzero-call-used-regs=all" >&5
+printf %s "checking if $CC supports compile flag -fzero-call-used-regs=all... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -fzero-call-used-regs=all"
_define_flag=""
@@ -7005,29 +7501,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrivial-auto-var-init=zero" >&5
-$as_echo_n "checking if $CC supports compile flag -ftrivial-auto-var-init=zero... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -ftrivial-auto-var-init=zero" >&5
+printf %s "checking if $CC supports compile flag -ftrivial-auto-var-init=zero... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -ftrivial-auto-var-init=zero"
_define_flag=""
@@ -7062,29 +7559,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5
-$as_echo_n "checking gcc version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5
+printf %s "checking gcc version... " >&6; }
GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
case $GCC_VER in
1.*) no_attrib_nonnull=1 ;;
@@ -7094,34 +7592,35 @@ $as_echo_n "checking gcc version... " >&6; }
2.*) no_attrib_nonnull=1 ;;
*) ;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_VER" >&5
-$as_echo "$GCC_VER" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GCC_VER" >&5
+printf "%s\n" "$GCC_VER" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-builtin-memset" >&5
-$as_echo_n "checking if $CC accepts -fno-builtin-memset... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-builtin-memset" >&5
+printf %s "checking if $CC accepts -fno-builtin-memset... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fno-builtin-memset"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <string.h>
int
-main ()
+main (void)
{
char b[10]; memset(b, 0, sizeof(b));
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
# -fstack-protector-all doesn't always work for some GCC versions
@@ -7130,8 +7629,8 @@ rm -f core conftest.err conftest.$ac_objext \
if test "x$use_stack_protector" = "x1"; then
for t in -fstack-protector-strong -fstack-protector-all \
-fstack-protector; do
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports $t" >&5
-$as_echo_n "checking if $CC supports $t... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports $t" >&5
+printf %s "checking if $CC supports $t... " >&6; }
saved_CFLAGS="$CFLAGS"
saved_LDFLAGS="$LDFLAGS"
CFLAGS="$CFLAGS $t -Werror"
@@ -7143,7 +7642,7 @@ $as_echo_n "checking if $CC supports $t... " >&6; }
int func (int t) {char b[100]; snprintf(b,sizeof b,"%d",t); return t;}
int
-main ()
+main (void)
{
char x[256];
@@ -7153,19 +7652,21 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $t"
LDFLAGS="$saved_LDFLAGS $t"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $t works" >&5
-$as_echo_n "checking if $t works... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: cannot test" >&5
-$as_echo "$as_me: WARNING: cross compiling: cannot test" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $t works" >&5
+printf %s "checking if $t works... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: cannot test" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: cannot test" >&2;}
break
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7173,7 +7674,7 @@ else
int func (int t) {char b[100]; snprintf(b,sizeof b,"%d",t); return t;}
int
-main ()
+main (void)
{
char x[256];
@@ -7183,25 +7684,26 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
break
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$saved_CFLAGS"
LDFLAGS="$saved_LDFLAGS"
@@ -7213,135 +7715,140 @@ rm -f core conftest.err conftest.$ac_objext \
unset ac_cv_have_decl_LLONG_MAX
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -std=gnu99"
- ac_fn_c_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "#include <limits.h>
+ ac_fn_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "#include <limits.h>
-"
-if test "x$ac_cv_have_decl_LLONG_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_LLONG_MAX" = xyes
+then :
have_llong_max=1
-else
+else $as_nop
CFLAGS="$saved_CFLAGS"
fi
-
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows __attribute__ on return types" >&5
-$as_echo_n "checking if compiler allows __attribute__ on return types... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler allows __attribute__ on return types" >&5
+printf %s "checking if compiler allows __attribute__ on return types... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
__attribute__((__unused__)) static void foo(void){return;}
int
-main ()
+main (void)
{
exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define NO_ATTRIBUTE_ON_RETURN_TYPE 1" >>confdefs.h
+printf "%s\n" "#define NO_ATTRIBUTE_ON_RETURN_TYPE 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows __attribute__ prototype args" >&5
-$as_echo_n "checking if compiler allows __attribute__ prototype args... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler allows __attribute__ prototype args" >&5
+printf %s "checking if compiler allows __attribute__ prototype args... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
typedef void foo(const char *, ...) __attribute__((format(printf, 1, 2)));
int
-main ()
+main (void)
{
exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define NO_ATTRIBUTE_ON_PROTOTYPE_ARGS 1" >>confdefs.h
+printf "%s\n" "#define NO_ATTRIBUTE_ON_PROTOTYPE_ARGS 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports variable length arrays" >&5
-$as_echo_n "checking if compiler supports variable length arrays... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler supports variable length arrays" >&5
+printf %s "checking if compiler supports variable length arrays... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
int
-main ()
+main (void)
{
int i; for (i=0; i<3; i++){int a[i]; a[i-1]=0;} exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define VARIABLE_LENGTH_ARRAYS 1" >>confdefs.h
+printf "%s\n" "#define VARIABLE_LENGTH_ARRAYS 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts variable declarations after code" >&5
-$as_echo_n "checking if compiler accepts variable declarations after code... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts variable declarations after code" >&5
+printf %s "checking if compiler accepts variable declarations after code... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
int
-main ()
+main (void)
{
int a; a = 1; int b = 1; exit(a-b);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define VARIABLE_DECLARATION_AFTER_CODE 1" >>confdefs.h
+printf "%s\n" "#define VARIABLE_DECLARATION_AFTER_CODE 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test "x$no_attrib_nonnull" != "x1" ; then
-$as_echo "#define HAVE_ATTRIBUTE__NONNULL__ 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTRIBUTE__NONNULL__ 1" >>confdefs.h
fi
# Check whether --with-rpath was given.
-if test "${with_rpath+set}" = set; then :
+if test ${with_rpath+y}
+then :
withval=$with_rpath;
if test "x$withval" = "xno" ; then
rpath_opt=""
@@ -7358,7 +7865,8 @@ fi
# Allow user to specify flags
# Check whether --with-cflags was given.
-if test "${with_cflags+set}" = set; then :
+if test ${with_cflags+y}
+then :
withval=$with_cflags;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -7371,7 +7879,8 @@ fi
# Check whether --with-cflags-after was given.
-if test "${with_cflags_after+set}" = set; then :
+if test ${with_cflags_after+y}
+then :
withval=$with_cflags_after;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -7383,7 +7892,8 @@ fi
# Check whether --with-cppflags was given.
-if test "${with_cppflags+set}" = set; then :
+if test ${with_cppflags+y}
+then :
withval=$with_cppflags;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -7395,7 +7905,8 @@ fi
# Check whether --with-ldflags was given.
-if test "${with_ldflags+set}" = set; then :
+if test ${with_ldflags+y}
+then :
withval=$with_ldflags;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -7407,7 +7918,8 @@ fi
# Check whether --with-ldflags-after was given.
-if test "${with_ldflags_after+set}" = set; then :
+if test ${with_ldflags_after+y}
+then :
withval=$with_ldflags_after;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -7419,7 +7931,8 @@ fi
# Check whether --with-libs was given.
-if test "${with_libs+set}" = set; then :
+if test ${with_libs+y}
+then :
withval=$with_libs;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -7431,7 +7944,8 @@ fi
# Check whether --with-Werror was given.
-if test "${with_Werror+set}" = set; then :
+if test ${with_Werror+y}
+then :
withval=$with_Werror;
if test -n "$withval" && test "x$withval" != "xno"; then
werror_flags="-Werror"
@@ -7444,104 +7958,479 @@ if test "${with_Werror+set}" = set; then :
fi
-for ac_header in \
- blf.h \
- bstring.h \
- crypt.h \
- crypto/sha2.h \
- dirent.h \
- endian.h \
- elf.h \
- err.h \
- features.h \
- fcntl.h \
- floatingpoint.h \
- fnmatch.h \
- getopt.h \
- glob.h \
- ia.h \
- iaf.h \
- ifaddrs.h \
- inttypes.h \
- langinfo.h \
- limits.h \
- locale.h \
- login.h \
- maillock.h \
- ndir.h \
- net/if_tun.h \
- netdb.h \
- netgroup.h \
- pam/pam_appl.h \
- paths.h \
- poll.h \
- pty.h \
- readpassphrase.h \
- rpc/types.h \
- security/pam_appl.h \
- sha2.h \
- shadow.h \
- stddef.h \
- stdint.h \
- string.h \
- strings.h \
- sys/bitypes.h \
- sys/byteorder.h \
- sys/bsdtty.h \
- sys/cdefs.h \
- sys/dir.h \
- sys/file.h \
- sys/mman.h \
- sys/label.h \
- sys/ndir.h \
- sys/param.h \
- sys/poll.h \
- sys/prctl.h \
- sys/procctl.h \
- sys/pstat.h \
- sys/ptrace.h \
- sys/random.h \
- sys/select.h \
- sys/stat.h \
- sys/stream.h \
- sys/stropts.h \
- sys/strtio.h \
- sys/statvfs.h \
- sys/sysmacros.h \
- sys/time.h \
- sys/timers.h \
- sys/vfs.h \
- time.h \
- tmpdir.h \
- ttyent.h \
- ucred.h \
- unistd.h \
- usersec.h \
- util.h \
- utime.h \
- utmp.h \
- utmpx.h \
- vis.h \
- wchar.h \
+ac_fn_c_check_header_compile "$LINENO" "blf.h" "ac_cv_header_blf_h" "$ac_includes_default"
+if test "x$ac_cv_header_blf_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLF_H 1" >>confdefs.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "bstring.h" "ac_cv_header_bstring_h" "$ac_includes_default"
+if test "x$ac_cv_header_bstring_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BSTRING_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default"
+if test "x$ac_cv_header_crypt_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "crypto/sha2.h" "ac_cv_header_crypto_sha2_h" "$ac_includes_default"
+if test "x$ac_cv_header_crypto_sha2_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_CRYPTO_SHA2_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "dirent.h" "ac_cv_header_dirent_h" "$ac_includes_default"
+if test "x$ac_cv_header_dirent_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DIRENT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default"
+if test "x$ac_cv_header_endian_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ENDIAN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default"
+if test "x$ac_cv_header_elf_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ELF_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "err.h" "ac_cv_header_err_h" "$ac_includes_default"
+if test "x$ac_cv_header_err_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ERR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default"
+if test "x$ac_cv_header_features_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FEATURES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default"
+if test "x$ac_cv_header_fcntl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "floatingpoint.h" "ac_cv_header_floatingpoint_h" "$ac_includes_default"
+if test "x$ac_cv_header_floatingpoint_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FLOATINGPOINT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "fnmatch.h" "ac_cv_header_fnmatch_h" "$ac_includes_default"
+if test "x$ac_cv_header_fnmatch_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FNMATCH_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default"
+if test "x$ac_cv_header_getopt_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETOPT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "glob.h" "ac_cv_header_glob_h" "$ac_includes_default"
+if test "x$ac_cv_header_glob_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GLOB_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "ia.h" "ac_cv_header_ia_h" "$ac_includes_default"
+if test "x$ac_cv_header_ia_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_IA_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "iaf.h" "ac_cv_header_iaf_h" "$ac_includes_default"
+if test "x$ac_cv_header_iaf_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_IAF_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$ac_includes_default"
+if test "x$ac_cv_header_ifaddrs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_IFADDRS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_langinfo_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "login.h" "ac_cv_header_login_h" "$ac_includes_default"
+if test "x$ac_cv_header_login_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGIN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "maillock.h" "ac_cv_header_maillock_h" "$ac_includes_default"
+if test "x$ac_cv_header_maillock_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MAILLOCK_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "ndir.h" "ac_cv_header_ndir_h" "$ac_includes_default"
+if test "x$ac_cv_header_ndir_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NDIR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "net/if_tun.h" "ac_cv_header_net_if_tun_h" "$ac_includes_default"
+if test "x$ac_cv_header_net_if_tun_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NET_IF_TUN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default"
+if test "x$ac_cv_header_netdb_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "netgroup.h" "ac_cv_header_netgroup_h" "$ac_includes_default"
+if test "x$ac_cv_header_netgroup_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETGROUP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "pam/pam_appl.h" "ac_cv_header_pam_pam_appl_h" "$ac_includes_default"
+if test "x$ac_cv_header_pam_pam_appl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PAM_PAM_APPL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "paths.h" "ac_cv_header_paths_h" "$ac_includes_default"
+if test "x$ac_cv_header_paths_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PATHS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_poll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "pty.h" "ac_cv_header_pty_h" "$ac_includes_default"
+if test "x$ac_cv_header_pty_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTY_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "readpassphrase.h" "ac_cv_header_readpassphrase_h" "$ac_includes_default"
+if test "x$ac_cv_header_readpassphrase_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_READPASSPHRASE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "rpc/types.h" "ac_cv_header_rpc_types_h" "$ac_includes_default"
+if test "x$ac_cv_header_rpc_types_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_RPC_TYPES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "security/pam_appl.h" "ac_cv_header_security_pam_appl_h" "$ac_includes_default"
+if test "x$ac_cv_header_security_pam_appl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SECURITY_PAM_APPL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sha2.h" "ac_cv_header_sha2_h" "$ac_includes_default"
+if test "x$ac_cv_header_sha2_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA2_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "shadow.h" "ac_cv_header_shadow_h" "$ac_includes_default"
+if test "x$ac_cv_header_shadow_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHADOW_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default"
+if test "x$ac_cv_header_stddef_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default"
+if test "x$ac_cv_header_strings_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/bitypes.h" "ac_cv_header_sys_bitypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_bitypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_BITYPES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/byteorder.h" "ac_cv_header_sys_byteorder_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_byteorder_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_BYTEORDER_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/bsdtty.h" "ac_cv_header_sys_bsdtty_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_bsdtty_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_BSDTTY_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/cdefs.h" "ac_cv_header_sys_cdefs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_cdefs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_CDEFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/dir.h" "ac_cv_header_sys_dir_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_dir_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_DIR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_file_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mman_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/label.h" "ac_cv_header_sys_label_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_label_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_LABEL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ndir.h" "ac_cv_header_sys_ndir_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ndir_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_NDIR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_poll_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/prctl.h" "ac_cv_header_sys_prctl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_prctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PRCTL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/procctl.h" "ac_cv_header_sys_procctl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_procctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PROCCTL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/pstat.h" "ac_cv_header_sys_pstat_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_pstat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PSTAT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ptrace.h" "ac_cv_header_sys_ptrace_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ptrace_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PTRACE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_random_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stream.h" "ac_cv_header_sys_stream_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stream_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STREAM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stropts.h" "ac_cv_header_sys_stropts_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stropts_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STROPTS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/strtio.h" "ac_cv_header_sys_strtio_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_strtio_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STRTIO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/statvfs.h" "ac_cv_header_sys_statvfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_statvfs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STATVFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYSMACROS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_time_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/timers.h" "ac_cv_header_sys_timers_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_timers_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIMERS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/vfs.h" "ac_cv_header_sys_vfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_vfs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_VFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_time_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "tmpdir.h" "ac_cv_header_tmpdir_h" "$ac_includes_default"
+if test "x$ac_cv_header_tmpdir_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TMPDIR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "ttyent.h" "ac_cv_header_ttyent_h" "$ac_includes_default"
+if test "x$ac_cv_header_ttyent_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TTYENT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "ucred.h" "ac_cv_header_ucred_h" "$ac_includes_default"
+if test "x$ac_cv_header_ucred_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UCRED_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "usersec.h" "ac_cv_header_usersec_h" "$ac_includes_default"
+if test "x$ac_cv_header_usersec_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_USERSEC_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "util.h" "ac_cv_header_util_h" "$ac_includes_default"
+if test "x$ac_cv_header_util_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default"
+if test "x$ac_cv_header_utime_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default"
+if test "x$ac_cv_header_utmp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utmpx.h" "ac_cv_header_utmpx_h" "$ac_includes_default"
+if test "x$ac_cv_header_utmpx_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTMPX_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "vis.h" "ac_cv_header_vis_h" "$ac_includes_default"
+if test "x$ac_cv_header_vis_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_VIS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_wchar_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h
+
+fi
# On some platforms (eg SunOS4) sys/audit.h requires sys/[time|types|label.h]
# to be included first.
-for ac_header in sys/audit.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "sys/audit.h" "ac_cv_header_sys_audit_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/audit.h" "ac_cv_header_sys_audit_h" "
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
@@ -7553,41 +8442,71 @@ do :
#endif
"
-if test "x$ac_cv_header_sys_audit_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_AUDIT_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_audit_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_AUDIT_H 1" >>confdefs.h
fi
-done
-
# sys/capsicum.h requires sys/types.h
-for ac_header in sys/capsicum.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "sys/capsicum.h" "ac_cv_header_sys_capsicum_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/capsicum.h" "ac_cv_header_sys_capsicum_h" "
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
"
-if test "x$ac_cv_header_sys_capsicum_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_CAPSICUM_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_capsicum_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_CAPSICUM_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "capsicum_helpers.h" "ac_cv_header_capsicum_helpers_h" "
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
-done
+"
+if test "x$ac_cv_header_capsicum_helpers_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_CAPSICUM_HELPERS_H 1" >>confdefs.h
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for caph_cache_tzdata" >&5
+printf %s "checking for caph_cache_tzdata... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+ #include <capsicum_helpers.h>
+int
+main (void)
+{
+caph_cache_tzdata();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+printf "%s\n" "#define HAVE_CAPH_CACHE_TZDATA 1" >>confdefs.h
+
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+
# net/route.h requires sys/socket.h and sys/types.h.
# sys/sysctl.h also requires sys/param.h
-for ac_header in net/route.h sys/sysctl.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+ac_fn_c_check_header_compile "$LINENO" "net/route.h" "ac_cv_header_net_route_h" "
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
@@ -7595,105 +8514,90 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
#include <sys/socket.h>
"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$ac_cv_header_net_route_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NET_ROUTE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sysctl.h" "ac_cv_header_sys_sysctl_h" "
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <sys/param.h>
+#include <sys/socket.h>
-done
+"
+if test "x$ac_cv_header_sys_sysctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYSCTL_H 1" >>confdefs.h
+
+fi
# lastlog.h requires sys/time.h to be included first on Solaris
-for ac_header in lastlog.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "lastlog.h" "ac_cv_header_lastlog_h" "
+ac_fn_c_check_header_compile "$LINENO" "lastlog.h" "ac_cv_header_lastlog_h" "
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
"
-if test "x$ac_cv_header_lastlog_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LASTLOG_H 1
-_ACEOF
+if test "x$ac_cv_header_lastlog_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LASTLOG_H 1" >>confdefs.h
fi
-done
-
# sys/ptms.h requires sys/stream.h to be included first on Solaris
-for ac_header in sys/ptms.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "sys/ptms.h" "ac_cv_header_sys_ptms_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/ptms.h" "ac_cv_header_sys_ptms_h" "
#ifdef HAVE_SYS_STREAM_H
# include <sys/stream.h>
#endif
"
-if test "x$ac_cv_header_sys_ptms_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_PTMS_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_ptms_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PTMS_H 1" >>confdefs.h
fi
-done
-
# login_cap.h requires sys/types.h on NetBSD
-for ac_header in login_cap.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "login_cap.h" "ac_cv_header_login_cap_h" "
+ac_fn_c_check_header_compile "$LINENO" "login_cap.h" "ac_cv_header_login_cap_h" "
#include <sys/types.h>
"
-if test "x$ac_cv_header_login_cap_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOGIN_CAP_H 1
-_ACEOF
+if test "x$ac_cv_header_login_cap_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGIN_CAP_H 1" >>confdefs.h
fi
-done
-
# older BSDs need sys/param.h before sys/mount.h
-for ac_header in sys/mount.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/mount.h" "ac_cv_header_sys_mount_h" "
#include <sys/param.h>
"
-if test "x$ac_cv_header_sys_mount_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_MOUNT_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_mount_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MOUNT_H 1" >>confdefs.h
fi
-done
-
# Android requires sys/socket.h to be included before sys/un.h
-for ac_header in sys/un.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" "
#include <sys/types.h>
#include <sys/socket.h>
"
-if test "x$ac_cv_header_sys_un_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_UN_H 1
-_ACEOF
+if test "x$ac_cv_header_sys_un_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h
fi
-done
-
# Messages for features tested for in target-specific section
SIA_MSG="no"
@@ -7713,37 +8617,38 @@ case "$host" in
# particularly with older versions of vac or xlc.
# It also throws errors about null macro arguments, but these are
# not fatal.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows macro redefinitions" >&5
-$as_echo_n "checking if compiler allows macro redefinitions... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler allows macro redefinitions" >&5
+printf %s "checking if compiler allows macro redefinitions... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define testmacro foo
#define testmacro bar
int
-main ()
+main (void)
{
exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to specify blibpath for linker ($LD)" >&5
-$as_echo_n "checking how to specify blibpath for linker ($LD)... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to specify blibpath for linker ($LD)" >&5
+printf %s "checking how to specify blibpath for linker ($LD)... " >&6; }
if (test -z "$blibpath"); then
blibpath="/usr/lib:/lib"
fi
@@ -7760,40 +8665,43 @@ $as_echo_n "checking how to specify blibpath for linker ($LD)... " >&6; }
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
blibflags=$tryflags
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
done
if (test -z "$blibflags"); then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
as_fn_error $? "*** must be able to specify blibpath on AIX - check config.log" "$LINENO" 5
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $blibflags" >&5
-$as_echo "$blibflags" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $blibflags" >&5
+printf "%s\n" "$blibflags" >&6; }
fi
LDFLAGS="$saved_LDFLAGS"
ac_fn_c_check_func "$LINENO" "authenticate" "ac_cv_func_authenticate"
-if test "x$ac_cv_func_authenticate" = xyes; then :
-
-$as_echo "#define WITH_AIXAUTHENTICATE 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for authenticate in -ls" >&5
-$as_echo_n "checking for authenticate in -ls... " >&6; }
-if ${ac_cv_lib_s_authenticate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_authenticate" = xyes
+then :
+
+printf "%s\n" "#define WITH_AIXAUTHENTICATE 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for authenticate in -ls" >&5
+printf %s "checking for authenticate in -ls... " >&6; }
+if test ${ac_cv_lib_s_authenticate+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ls $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7802,31 +8710,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char authenticate ();
int
-main ()
+main (void)
{
return authenticate ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_s_authenticate=yes
-else
+else $as_nop
ac_cv_lib_s_authenticate=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_s_authenticate" >&5
-$as_echo "$ac_cv_lib_s_authenticate" >&6; }
-if test "x$ac_cv_lib_s_authenticate" = xyes; then :
- $as_echo "#define WITH_AIXAUTHENTICATE 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_s_authenticate" >&5
+printf "%s\n" "$ac_cv_lib_s_authenticate" >&6; }
+if test "x$ac_cv_lib_s_authenticate" = xyes
+then :
+ printf "%s\n" "#define WITH_AIXAUTHENTICATE 1" >>confdefs.h
LIBS="$LIBS -ls"
@@ -7835,199 +8742,189 @@ fi
fi
- ac_fn_c_check_decl "$LINENO" "authenticate" "ac_cv_have_decl_authenticate" "#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_authenticate" = xyes; then :
+ ac_fn_check_decl "$LINENO" "authenticate" "ac_cv_have_decl_authenticate" "#include <usersec.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_authenticate" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AUTHENTICATE $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "loginrestrictions" "ac_cv_have_decl_loginrestrictions" "#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_loginrestrictions" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_AUTHENTICATE $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "loginrestrictions" "ac_cv_have_decl_loginrestrictions" "#include <usersec.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_loginrestrictions" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LOGINRESTRICTIONS $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "loginsuccess" "ac_cv_have_decl_loginsuccess" "#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_loginsuccess" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_LOGINRESTRICTIONS $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "loginsuccess" "ac_cv_have_decl_loginsuccess" "#include <usersec.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_loginsuccess" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LOGINSUCCESS $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "passwdexpired" "ac_cv_have_decl_passwdexpired" "#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_passwdexpired" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_LOGINSUCCESS $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "passwdexpired" "ac_cv_have_decl_passwdexpired" "#include <usersec.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_passwdexpired" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PASSWDEXPIRED $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "setauthdb" "ac_cv_have_decl_setauthdb" "#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_setauthdb" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_PASSWDEXPIRED $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "setauthdb" "ac_cv_have_decl_setauthdb" "#include <usersec.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_setauthdb" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_SETAUTHDB $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SETAUTHDB $ac_have_decl
-_ACEOF
-
- ac_fn_c_check_decl "$LINENO" "loginfailed" "ac_cv_have_decl_loginfailed" "#include <usersec.h>
+ ac_fn_check_decl "$LINENO" "loginfailed" "ac_cv_have_decl_loginfailed" "#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_loginfailed" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_loginfailed" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LOGINFAILED $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if loginfailed takes 4 arguments" >&5
-$as_echo_n "checking if loginfailed takes 4 arguments... " >&6; }
+printf "%s\n" "#define HAVE_DECL_LOGINFAILED $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if loginfailed takes 4 arguments" >&5
+printf %s "checking if loginfailed takes 4 arguments... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <usersec.h>
int
-main ()
+main (void)
{
(void)loginfailed("user","host","tty",0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define AIX_LOGINFAILED_4ARG 1" >>confdefs.h
+printf "%s\n" "#define AIX_LOGINFAILED_4ARG 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- for ac_func in getgrset setauthdb
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getgrset" "ac_cv_func_getgrset"
+if test "x$ac_cv_func_getgrset" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setauthdb" "ac_cv_func_setauthdb"
+if test "x$ac_cv_func_setauthdb" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETAUTHDB 1" >>confdefs.h
fi
-done
- ac_fn_c_check_decl "$LINENO" "F_CLOSEM" "ac_cv_have_decl_F_CLOSEM" " #include <limits.h>
+ ac_fn_check_decl "$LINENO" "F_CLOSEM" "ac_cv_have_decl_F_CLOSEM" " #include <limits.h>
#include <fcntl.h>
-"
-if test "x$ac_cv_have_decl_F_CLOSEM" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_F_CLOSEM" = xyes
+then :
-$as_echo "#define HAVE_FCNTL_CLOSEM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FCNTL_CLOSEM 1" >>confdefs.h
fi
-
check_for_aix_broken_getaddrinfo=1
-$as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
-$as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
-$as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
-$as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_LASTLOG 1" >>confdefs.h
-$as_echo "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
-$as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
+printf "%s\n" "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
-$as_echo "#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1" >>confdefs.h
+printf "%s\n" "#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1" >>confdefs.h
-$as_echo "#define PTY_ZEROREAD 1" >>confdefs.h
+printf "%s\n" "#define PTY_ZEROREAD 1" >>confdefs.h
-$as_echo "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h
+printf "%s\n" "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h
-$as_echo "#define BROKEN_STRNDUP 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_STRNDUP 1" >>confdefs.h
-$as_echo "#define BROKEN_STRNLEN 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_STRNLEN 1" >>confdefs.h
;;
*-*-android*)
-$as_echo "#define DISABLE_UTMP 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_UTMP 1" >>confdefs.h
-$as_echo "#define DISABLE_WTMP 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_WTMP 1" >>confdefs.h
;;
*-*-cygwin*)
- check_for_libcrypt_later=1
LIBS="$LIBS /usr/lib/textreadmode.o"
-$as_echo "#define HAVE_CYGWIN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CYGWIN 1" >>confdefs.h
-$as_echo "#define USE_PIPES 1" >>confdefs.h
+printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
-$as_echo "#define NO_UID_RESTORATION_TEST 1" >>confdefs.h
+printf "%s\n" "#define NO_UID_RESTORATION_TEST 1" >>confdefs.h
-$as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_SHADOW 1" >>confdefs.h
-$as_echo "#define NO_X11_UNIX_SOCKETS 1" >>confdefs.h
+printf "%s\n" "#define NO_X11_UNIX_SOCKETS 1" >>confdefs.h
-$as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_FD_PASSING 1" >>confdefs.h
-$as_echo "#define SSH_IOBUFSZ 65535" >>confdefs.h
+printf "%s\n" "#define SSH_IOBUFSZ 65535" >>confdefs.h
-$as_echo "#define FILESYSTEM_NO_BACKSLASH 1" >>confdefs.h
+printf "%s\n" "#define FILESYSTEM_NO_BACKSLASH 1" >>confdefs.h
# Cygwin defines optargs, optargs as declspec(dllimport) for historical
# reasons which cause compile warnings, so we disable those warnings.
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wno-attributes" >&5
-$as_echo_n "checking if $CC supports compile flag -Wno-attributes... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -Wno-attributes" >&5
+printf %s "checking if $CC supports compile flag -Wno-attributes... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -Wno-attributes"
_define_flag=""
@@ -8062,46 +8959,48 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
;;
*-*-dgux*)
-$as_echo "#define IP_TOS_IS_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define IP_TOS_IS_BROKEN 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
;;
*-*-darwin*)
use_pie=auto
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have working getaddrinfo" >&5
-$as_echo_n "checking if we have working getaddrinfo... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: assume it is working" >&5
-$as_echo "assume it is working" >&6; }
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we have working getaddrinfo" >&5
+printf %s "checking if we have working getaddrinfo... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: assume it is working" >&5
+printf "%s\n" "assume it is working" >&6; }
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8114,14 +9013,15 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: working" >&5
-$as_echo "working" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: buggy" >&5
-$as_echo "buggy" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: working" >&5
+printf "%s\n" "working" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: buggy" >&5
+printf "%s\n" "buggy" >&6; }
-$as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_GETADDRINFO 1" >>confdefs.h
fi
@@ -8129,75 +9029,65 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
-$as_echo "#define BROKEN_GLOB 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_GLOB 1" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define BIND_8_COMPAT 1
-_ACEOF
+printf "%s\n" "#define BIND_8_COMPAT 1" >>confdefs.h
-$as_echo "#define SSH_TUN_FREEBSD 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_FREEBSD 1" >>confdefs.h
-$as_echo "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
-$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "AU_IPv4" "ac_cv_have_decl_AU_IPv4" "$ac_includes_default"
-if test "x$ac_cv_have_decl_AU_IPv4" = xyes; then :
+ ac_fn_check_decl "$LINENO" "AU_IPv4" "ac_cv_have_decl_AU_IPv4" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_AU_IPv4" = xyes
+then :
-else
+else $as_nop
-$as_echo "#define AU_IPv4 0" >>confdefs.h
+printf "%s\n" "#define AU_IPv4 0" >>confdefs.h
#include <bsm/audit.h>
-$as_echo "#define LASTLOG_WRITE_PUTUTXLINE 1" >>confdefs.h
+printf "%s\n" "#define LASTLOG_WRITE_PUTUTXLINE 1" >>confdefs.h
fi
+printf "%s\n" "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
-$as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
-
- for ac_func in sandbox_init
-do :
- ac_fn_c_check_func "$LINENO" "sandbox_init" "ac_cv_func_sandbox_init"
-if test "x$ac_cv_func_sandbox_init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SANDBOX_INIT 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "sandbox_init" "ac_cv_func_sandbox_init"
+if test "x$ac_cv_func_sandbox_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_SANDBOX_INIT 1" >>confdefs.h
fi
-done
- for ac_header in sandbox.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sandbox.h" "ac_cv_header_sandbox_h" "$ac_includes_default"
-if test "x$ac_cv_header_sandbox_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SANDBOX_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "sandbox.h" "ac_cv_header_sandbox_h" "$ac_includes_default"
+if test "x$ac_cv_header_sandbox_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SANDBOX_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sandbox_apply in -lsandbox" >&5
-$as_echo_n "checking for sandbox_apply in -lsandbox... " >&6; }
-if ${ac_cv_lib_sandbox_sandbox_apply+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sandbox_apply in -lsandbox" >&5
+printf %s "checking for sandbox_apply in -lsandbox... " >&6; }
+if test ${ac_cv_lib_sandbox_sandbox_apply+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsandbox $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8206,77 +9096,68 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char sandbox_apply ();
int
-main ()
+main (void)
{
return sandbox_apply ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sandbox_sandbox_apply=yes
-else
+else $as_nop
ac_cv_lib_sandbox_sandbox_apply=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sandbox_sandbox_apply" >&5
-$as_echo "$ac_cv_lib_sandbox_sandbox_apply" >&6; }
-if test "x$ac_cv_lib_sandbox_sandbox_apply" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sandbox_sandbox_apply" >&5
+printf "%s\n" "$ac_cv_lib_sandbox_sandbox_apply" >&6; }
+if test "x$ac_cv_lib_sandbox_sandbox_apply" = xyes
+then :
SSHDLIBS="$SSHDLIBS -lsandbox"
fi
# proc_pidinfo()-based closefrom() replacement.
- for ac_header in libproc.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "libproc.h" "ac_cv_header_libproc_h" "$ac_includes_default"
-if test "x$ac_cv_header_libproc_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPROC_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "libproc.h" "ac_cv_header_libproc_h" "$ac_includes_default"
+if test "x$ac_cv_header_libproc_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBPROC_H 1" >>confdefs.h
fi
-done
-
- for ac_func in proc_pidinfo
-do :
- ac_fn_c_check_func "$LINENO" "proc_pidinfo" "ac_cv_func_proc_pidinfo"
-if test "x$ac_cv_func_proc_pidinfo" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PROC_PIDINFO 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "proc_pidinfo" "ac_cv_func_proc_pidinfo"
+if test "x$ac_cv_func_proc_pidinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_PROC_PIDINFO 1" >>confdefs.h
fi
-done
# poll(2) is broken for character-special devices (at least).
# cf. Apple bug 3710161 (not public, but searchable)
-$as_echo "#define BROKEN_POLL 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_POLL 1" >>confdefs.h
;;
*-*-dragonfly*)
- SSHDLIBS="$SSHDLIBS -lcrypt"
+ SSHDLIBS="$SSHDLIBS"
TEST_MALLOC_OPTIONS="AFGJPRX"
;;
*-*-haiku*)
LIBS="$LIBS -lbsd "
CFLAGS="$CFLAGS -D_BSD_SOURCE"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
-$as_echo_n "checking for socket in -lnetwork... " >&6; }
-if ${ac_cv_lib_network_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
+printf %s "checking for socket in -lnetwork... " >&6; }
+if test ${ac_cv_lib_network_socket+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnetwork $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8285,42 +9166,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char socket ();
int
-main ()
+main (void)
{
return socket ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_network_socket=yes
-else
+else $as_nop
ac_cv_lib_network_socket=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
-$as_echo "$ac_cv_lib_network_socket" >&6; }
-if test "x$ac_cv_lib_network_socket" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBNETWORK 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
+printf "%s\n" "$ac_cv_lib_network_socket" >&6; }
+if test "x$ac_cv_lib_network_socket" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBNETWORK 1" >>confdefs.h
LIBS="-lnetwork $LIBS"
fi
- $as_echo "#define HAVE_U_INT64_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_U_INT64_T 1" >>confdefs.h
-$as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_UTMPX 1" >>confdefs.h
MANTYPE=man
;;
@@ -8328,25 +9206,26 @@ $as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
# first we define all of the options common to all HP-UX releases
CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
IPADDR_IN_DISPLAY=yes
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
+ printf "%s\n" "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
-$as_echo "#define LOCKED_PASSWD_STRING \"*\"" >>confdefs.h
+printf "%s\n" "#define LOCKED_PASSWD_STRING \"*\"" >>confdefs.h
- $as_echo "#define SPT_TYPE SPT_PSTAT" >>confdefs.h
+ printf "%s\n" "#define SPT_TYPE SPT_PSTAT" >>confdefs.h
-$as_echo "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h
+printf "%s\n" "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h
maildir="/var/mail"
LIBS="$LIBS -lsec"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_error in -lxnet" >&5
-$as_echo_n "checking for t_error in -lxnet... " >&6; }
-if ${ac_cv_lib_xnet_t_error+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for t_error in -lxnet" >&5
+printf %s "checking for t_error in -lxnet... " >&6; }
+if test ${ac_cv_lib_xnet_t_error+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lxnet $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8355,37 +9234,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char t_error ();
int
-main ()
+main (void)
{
return t_error ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_xnet_t_error=yes
-else
+else $as_nop
ac_cv_lib_xnet_t_error=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xnet_t_error" >&5
-$as_echo "$ac_cv_lib_xnet_t_error" >&6; }
-if test "x$ac_cv_lib_xnet_t_error" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBXNET 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xnet_t_error" >&5
+printf "%s\n" "$ac_cv_lib_xnet_t_error" >&6; }
+if test "x$ac_cv_lib_xnet_t_error" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBXNET 1" >>confdefs.h
LIBS="-lxnet $LIBS"
-else
+else $as_nop
as_fn_error $? "*** -lxnet needed on HP-UX - check config.log ***" "$LINENO" 5
fi
@@ -8397,18 +9273,18 @@ fi
CFLAGS="$CFLAGS -Ae"
fi
-$as_echo "#define BROKEN_GETLINE 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_GETLINE 1" >>confdefs.h
;;
*-*-hpux11*)
-$as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
-$as_echo "#define DISABLE_UTMP 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_UTMP 1" >>confdefs.h
-$as_echo "#define USE_BTMP 1" >>confdefs.h
+printf "%s\n" "#define USE_BTMP 1" >>confdefs.h
check_for_hpux_broken_getaddrinfo=1
check_for_conflicting_getspnam=1
@@ -8419,7 +9295,7 @@ $as_echo "#define USE_BTMP 1" >>confdefs.h
case "$host" in
*-*-hpux10.26)
-$as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SECUREWARE 1" >>confdefs.h
disable_ptmx_check=yes
LIBS="$LIBS -lsecpw"
@@ -8429,127 +9305,121 @@ $as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h
*-*-irix5*)
PATH="$PATH:/usr/etc"
-$as_echo "#define BROKEN_INET_NTOA 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_INET_NTOA 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
-$as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
+printf "%s\n" "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
- $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
+ printf "%s\n" "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
;;
*-*-irix6*)
PATH="$PATH:/usr/etc"
-$as_echo "#define WITH_IRIX_ARRAY 1" >>confdefs.h
+printf "%s\n" "#define WITH_IRIX_ARRAY 1" >>confdefs.h
-$as_echo "#define WITH_IRIX_PROJECT 1" >>confdefs.h
+printf "%s\n" "#define WITH_IRIX_PROJECT 1" >>confdefs.h
-$as_echo "#define WITH_IRIX_AUDIT 1" >>confdefs.h
+printf "%s\n" "#define WITH_IRIX_AUDIT 1" >>confdefs.h
ac_fn_c_check_func "$LINENO" "jlimit_startjob" "ac_cv_func_jlimit_startjob"
-if test "x$ac_cv_func_jlimit_startjob" = xyes; then :
+if test "x$ac_cv_func_jlimit_startjob" = xyes
+then :
-$as_echo "#define WITH_IRIX_JOBS 1" >>confdefs.h
+printf "%s\n" "#define WITH_IRIX_JOBS 1" >>confdefs.h
fi
- $as_echo "#define BROKEN_INET_NTOA 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_INET_NTOA 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
-$as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_UPDWTMPX 1" >>confdefs.h
- $as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
+ printf "%s\n" "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
- $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
+ printf "%s\n" "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
;;
*-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
- check_for_libcrypt_later=1
- $as_echo "#define PAM_TTY_KLUDGE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_TTY_KLUDGE 1" >>confdefs.h
- $as_echo "#define LOCKED_PASSWD_PREFIX \"!\"" >>confdefs.h
+ printf "%s\n" "#define LOCKED_PASSWD_PREFIX \"!\"" >>confdefs.h
- $as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
+ printf "%s\n" "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
-$as_echo "#define _PATH_BTMP \"/var/log/btmp\"" >>confdefs.h
+printf "%s\n" "#define _PATH_BTMP \"/var/log/btmp\"" >>confdefs.h
-$as_echo "#define USE_BTMP 1" >>confdefs.h
+printf "%s\n" "#define USE_BTMP 1" >>confdefs.h
;;
*-*-linux*)
no_dev_ptmx=1
use_pie=auto
- check_for_libcrypt_later=1
check_for_openpty_ctty_bug=1
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -D_DEFAULT_SOURCE"
-$as_echo "#define BROKEN_CLOSEFROM 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_CLOSEFROM 1" >>confdefs.h
-$as_echo "#define PAM_TTY_KLUDGE 1" >>confdefs.h
+printf "%s\n" "#define PAM_TTY_KLUDGE 1" >>confdefs.h
-$as_echo "#define LOCKED_PASSWD_PREFIX \"!\"" >>confdefs.h
+printf "%s\n" "#define LOCKED_PASSWD_PREFIX \"!\"" >>confdefs.h
- $as_echo "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
+ printf "%s\n" "#define SPT_TYPE SPT_REUSEARGV" >>confdefs.h
-$as_echo "#define LINK_OPNOTSUPP_ERRNO EPERM" >>confdefs.h
+printf "%s\n" "#define LINK_OPNOTSUPP_ERRNO EPERM" >>confdefs.h
-$as_echo "#define _PATH_BTMP \"/var/log/btmp\"" >>confdefs.h
+printf "%s\n" "#define _PATH_BTMP \"/var/log/btmp\"" >>confdefs.h
- $as_echo "#define USE_BTMP 1" >>confdefs.h
+ printf "%s\n" "#define USE_BTMP 1" >>confdefs.h
-$as_echo "#define LINUX_OOM_ADJUST 1" >>confdefs.h
+printf "%s\n" "#define LINUX_OOM_ADJUST 1" >>confdefs.h
inet6_default_4in6=yes
case `uname -r` in
1.*|2.0.*)
-$as_echo "#define BROKEN_CMSG_TYPE 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_CMSG_TYPE 1" >>confdefs.h
;;
esac
# tun(4) forwarding compat code
- for ac_header in linux/if_tun.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "linux/if_tun.h" "ac_cv_header_linux_if_tun_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_if_tun_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_IF_TUN_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "linux/if_tun.h" "ac_cv_header_linux_if_tun_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_if_tun_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_IF_TUN_H 1" >>confdefs.h
fi
-done
-
if test "x$ac_cv_header_linux_if_tun_h" = "xyes" ; then
-$as_echo "#define SSH_TUN_LINUX 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_LINUX 1" >>confdefs.h
-$as_echo "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h
-$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
fi
ac_fn_c_check_header_compile "$LINENO" "linux/if.h" "ac_cv_header_linux_if_h" "
@@ -8558,26 +9428,34 @@ $as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
#endif
"
-if test "x$ac_cv_header_linux_if_h" = xyes; then :
+if test "x$ac_cv_header_linux_if_h" = xyes
+then :
-$as_echo "#define SYS_RDOMAIN_LINUX 1" >>confdefs.h
+printf "%s\n" "#define SYS_RDOMAIN_LINUX 1" >>confdefs.h
fi
+ ac_fn_c_check_header_compile "$LINENO" "linux/seccomp.h" "ac_cv_header_linux_seccomp_h" "#include <linux/types.h>
+"
+if test "x$ac_cv_header_linux_seccomp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_SECCOMP_H 1" >>confdefs.h
- for ac_header in linux/seccomp.h linux/filter.h linux/audit.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <linux/types.h>
+fi
+ac_fn_c_check_header_compile "$LINENO" "linux/filter.h" "ac_cv_header_linux_filter_h" "#include <linux/types.h>
"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+if test "x$ac_cv_header_linux_filter_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_FILTER_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "linux/audit.h" "ac_cv_header_linux_audit_h" "#include <linux/types.h>
+"
+if test "x$ac_cv_header_linux_audit_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_AUDIT_H 1" >>confdefs.h
-done
+fi
# Obtain MIPS ABI
case "$host" in
@@ -8590,16 +9468,17 @@ done
#endif
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
mips_abi="o32"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8608,16 +9487,17 @@ else
#endif
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
mips_abi="n32"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8626,30 +9506,31 @@ else
#endif
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
mips_abi="n64"
-else
+else $as_nop
as_fn_error $? "unknown MIPS ABI" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for seccomp architecture" >&5
-$as_echo_n "checking for seccomp architecture... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for seccomp architecture" >&5
+printf %s "checking for seccomp architecture... " >&6; }
seccomp_audit_arch=
case "$host" in
x86_64-*)
@@ -8670,6 +9551,9 @@ $as_echo_n "checking for seccomp architecture... " >&6; }
s390-*)
seccomp_audit_arch=AUDIT_ARCH_S390
;;
+ powerpc-*)
+ seccomp_audit_arch=AUDIT_ARCH_PPC
+ ;;
powerpc64-*)
seccomp_audit_arch=AUDIT_ARCH_PPC64
;;
@@ -8707,85 +9591,81 @@ $as_echo_n "checking for seccomp architecture... " >&6; }
;;
esac
if test "x$seccomp_audit_arch" != "x" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$seccomp_audit_arch\"" >&5
-$as_echo "\"$seccomp_audit_arch\"" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$seccomp_audit_arch\"" >&5
+printf "%s\n" "\"$seccomp_audit_arch\"" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SECCOMP_AUDIT_ARCH $seccomp_audit_arch
-_ACEOF
+printf "%s\n" "#define SECCOMP_AUDIT_ARCH $seccomp_audit_arch" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: architecture not supported" >&5
-$as_echo "architecture not supported" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: architecture not supported" >&5
+printf "%s\n" "architecture not supported" >&6; }
fi
;;
*-*-minix)
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
# poll(2) seems to choke on /dev/null; "Bad file descriptor"
-$as_echo "#define BROKEN_POLL 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_POLL 1" >>confdefs.h
;;
mips-sony-bsd|mips-sony-newsos4)
-$as_echo "#define NEED_SETPGRP 1" >>confdefs.h
+printf "%s\n" "#define NEED_SETPGRP 1" >>confdefs.h
SONY=1
;;
*-*-netbsd*)
- check_for_libcrypt_before=1
if test "x$withval" != "xno" ; then
rpath_opt="-R"
fi
CPPFLAGS="$CPPFLAGS -D_OPENBSD_SOURCE"
-$as_echo "#define SSH_TUN_FREEBSD 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_FREEBSD 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "net/if_tap.h" "ac_cv_header_net_if_tap_h" "$ac_includes_default"
-if test "x$ac_cv_header_net_if_tap_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "net/if_tap.h" "ac_cv_header_net_if_tap_h" "$ac_includes_default"
+if test "x$ac_cv_header_net_if_tap_h" = xyes
+then :
-else
+else $as_nop
-$as_echo "#define SSH_TUN_NO_L2 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_NO_L2 1" >>confdefs.h
fi
-
-$as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h
TEST_MALLOC_OPTIONS="AJRX"
-$as_echo "#define BROKEN_READ_COMPARISON 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_READ_COMPARISON 1" >>confdefs.h
;;
*-*-freebsd*)
- check_for_libcrypt_later=1
-$as_echo "#define LOCKED_PASSWD_PREFIX \"*LOCKED*\"" >>confdefs.h
+printf "%s\n" "#define LOCKED_PASSWD_PREFIX \"*LOCKED*\"" >>confdefs.h
-$as_echo "#define SSH_TUN_FREEBSD 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_FREEBSD 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "net/if_tap.h" "ac_cv_header_net_if_tap_h" "$ac_includes_default"
-if test "x$ac_cv_header_net_if_tap_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "net/if_tap.h" "ac_cv_header_net_if_tap_h" "$ac_includes_default"
+if test "x$ac_cv_header_net_if_tap_h" = xyes
+then :
-else
+else $as_nop
-$as_echo "#define SSH_TUN_NO_L2 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_NO_L2 1" >>confdefs.h
fi
-
-$as_echo "#define BROKEN_GLOB 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_GLOB 1" >>confdefs.h
TEST_MALLOC_OPTIONS="AJRX"
# Preauth crypto occasionally uses file descriptors for crypto offload
# and will crash if they cannot be opened.
-$as_echo "#define SANDBOX_SKIP_RLIMIT_NOFILE 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_SKIP_RLIMIT_NOFILE 1" >>confdefs.h
case "$host" in
*-*-freebsd9.*|*-*-freebsd10.*)
@@ -8794,11 +9674,11 @@ $as_echo "#define SANDBOX_SKIP_RLIMIT_NOFILE 1" >>confdefs.h
esac
;;
*-*-bsdi*)
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
;;
*-next-*)
@@ -8807,27 +9687,27 @@ $as_echo "#define SANDBOX_SKIP_RLIMIT_NOFILE 1" >>confdefs.h
conf_wtmp_location=/usr/adm/wtmp
maildir=/usr/spool/mail
-$as_echo "#define HAVE_NEXT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_NEXT 1" >>confdefs.h
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
-$as_echo "#define BROKEN_SAVED_UIDS 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SAVED_UIDS 1" >>confdefs.h
;;
*-*-openbsd*)
use_pie=auto
-$as_echo "#define HAVE_ATTRIBUTE__SENTINEL__ 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTRIBUTE__SENTINEL__ 1" >>confdefs.h
-$as_echo "#define HAVE_ATTRIBUTE__BOUNDED__ 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ATTRIBUTE__BOUNDED__ 1" >>confdefs.h
-$as_echo "#define SSH_TUN_OPENBSD 1" >>confdefs.h
+printf "%s\n" "#define SSH_TUN_OPENBSD 1" >>confdefs.h
-$as_echo "#define SYSLOG_R_SAFE_IN_SIGHAND 1" >>confdefs.h
+printf "%s\n" "#define SYSLOG_R_SAFE_IN_SIGHAND 1" >>confdefs.h
TEST_MALLOC_OPTIONS="AFGJPRX"
;;
@@ -8835,99 +9715,84 @@ $as_echo "#define SYSLOG_R_SAFE_IN_SIGHAND 1" >>confdefs.h
if test "x$withval" != "xno" ; then
rpath_opt="-R"
fi
- $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
- $as_echo "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
+ printf "%s\n" "#define LOGIN_NEEDS_UTMPX 1" >>confdefs.h
- $as_echo "#define PAM_TTY_KLUDGE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_TTY_KLUDGE 1" >>confdefs.h
-$as_echo "#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1" >>confdefs.h
+printf "%s\n" "#define SSHPAM_CHAUTHTOK_NEEDS_RUID 1" >>confdefs.h
- $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
+ printf "%s\n" "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
# Pushing STREAMS modules will cause sshd to acquire a controlling tty.
-$as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
+printf "%s\n" "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
-$as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
+printf "%s\n" "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
-$as_echo "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h
external_path_file=/etc/default/login
# hardwire lastlog location (can't detect it on some versions)
conf_lastlog_location="/var/adm/lastlog"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for obsolete utmp and wtmp in solaris2.x" >&5
-$as_echo_n "checking for obsolete utmp and wtmp in solaris2.x... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for obsolete utmp and wtmp in solaris2.x" >&5
+printf %s "checking for obsolete utmp and wtmp in solaris2.x... " >&6; }
sol2ver=`echo "$host"| sed -e 's/.*[0-9]\.//'`
if test "$sol2ver" -ge 8; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define DISABLE_UTMP 1" >>confdefs.h
-$as_echo "#define DISABLE_WTMP 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_WTMP 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- for ac_func in setpflags
-do :
- ac_fn_c_check_func "$LINENO" "setpflags" "ac_cv_func_setpflags"
-if test "x$ac_cv_func_setpflags" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETPFLAGS 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "setpflags" "ac_cv_func_setpflags"
+if test "x$ac_cv_func_setpflags" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPFLAGS 1" >>confdefs.h
fi
-done
- for ac_func in setppriv
-do :
- ac_fn_c_check_func "$LINENO" "setppriv" "ac_cv_func_setppriv"
-if test "x$ac_cv_func_setppriv" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETPPRIV 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "setppriv" "ac_cv_func_setppriv"
+if test "x$ac_cv_func_setppriv" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPPRIV 1" >>confdefs.h
fi
-done
- for ac_func in priv_basicset
-do :
- ac_fn_c_check_func "$LINENO" "priv_basicset" "ac_cv_func_priv_basicset"
-if test "x$ac_cv_func_priv_basicset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PRIV_BASICSET 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "priv_basicset" "ac_cv_func_priv_basicset"
+if test "x$ac_cv_func_priv_basicset" = xyes
+then :
+ printf "%s\n" "#define HAVE_PRIV_BASICSET 1" >>confdefs.h
fi
-done
- for ac_header in priv.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "priv.h" "ac_cv_header_priv_h" "$ac_includes_default"
-if test "x$ac_cv_header_priv_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PRIV_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "priv.h" "ac_cv_header_priv_h" "$ac_includes_default"
+if test "x$ac_cv_header_priv_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PRIV_H 1" >>confdefs.h
fi
-done
-
# Check whether --with-solaris-contracts was given.
-if test "${with_solaris_contracts+set}" = set; then :
+if test ${with_solaris_contracts+y}
+then :
withval=$with_solaris_contracts;
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ct_tmpl_activate in -lcontract" >&5
-$as_echo_n "checking for ct_tmpl_activate in -lcontract... " >&6; }
-if ${ac_cv_lib_contract_ct_tmpl_activate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ct_tmpl_activate in -lcontract" >&5
+printf %s "checking for ct_tmpl_activate in -lcontract... " >&6; }
+if test ${ac_cv_lib_contract_ct_tmpl_activate+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcontract $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8936,32 +9801,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char ct_tmpl_activate ();
int
-main ()
+main (void)
{
return ct_tmpl_activate ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_contract_ct_tmpl_activate=yes
-else
+else $as_nop
ac_cv_lib_contract_ct_tmpl_activate=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_contract_ct_tmpl_activate" >&5
-$as_echo "$ac_cv_lib_contract_ct_tmpl_activate" >&6; }
-if test "x$ac_cv_lib_contract_ct_tmpl_activate" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_contract_ct_tmpl_activate" >&5
+printf "%s\n" "$ac_cv_lib_contract_ct_tmpl_activate" >&6; }
+if test "x$ac_cv_lib_contract_ct_tmpl_activate" = xyes
+then :
-$as_echo "#define USE_SOLARIS_PROCESS_CONTRACTS 1" >>confdefs.h
+printf "%s\n" "#define USE_SOLARIS_PROCESS_CONTRACTS 1" >>confdefs.h
LIBS="$LIBS -lcontract"
SPC_MSG="yes"
@@ -8972,13 +9836,15 @@ fi
# Check whether --with-solaris-projects was given.
-if test "${with_solaris_projects+set}" = set; then :
+if test ${with_solaris_projects+y}
+then :
withval=$with_solaris_projects;
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setproject in -lproject" >&5
-$as_echo_n "checking for setproject in -lproject... " >&6; }
-if ${ac_cv_lib_project_setproject+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setproject in -lproject" >&5
+printf %s "checking for setproject in -lproject... " >&6; }
+if test ${ac_cv_lib_project_setproject+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lproject $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8987,32 +9853,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char setproject ();
int
-main ()
+main (void)
{
return setproject ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_project_setproject=yes
-else
+else $as_nop
ac_cv_lib_project_setproject=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_project_setproject" >&5
-$as_echo "$ac_cv_lib_project_setproject" >&6; }
-if test "x$ac_cv_lib_project_setproject" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_project_setproject" >&5
+printf "%s\n" "$ac_cv_lib_project_setproject" >&6; }
+if test "x$ac_cv_lib_project_setproject" = xyes
+then :
-$as_echo "#define USE_SOLARIS_PROJECTS 1" >>confdefs.h
+printf "%s\n" "#define USE_SOLARIS_PROJECTS 1" >>confdefs.h
LIBS="$LIBS -lproject"
SP_MSG="yes"
@@ -9023,25 +9888,26 @@ fi
# Check whether --with-solaris-privs was given.
-if test "${with_solaris_privs+set}" = set; then :
+if test ${with_solaris_privs+y}
+then :
withval=$with_solaris_privs;
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris/Illumos privilege support" >&5
-$as_echo_n "checking for Solaris/Illumos privilege support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Solaris/Illumos privilege support" >&5
+printf %s "checking for Solaris/Illumos privilege support... " >&6; }
if test "x$ac_cv_func_setppriv" = "xyes" -a \
"x$ac_cv_header_priv_h" = "xyes" ; then
SOLARIS_PRIVS=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
-$as_echo "found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
-$as_echo "#define NO_UID_RESTORATION_TEST 1" >>confdefs.h
+printf "%s\n" "#define NO_UID_RESTORATION_TEST 1" >>confdefs.h
-$as_echo "#define USE_SOLARIS_PRIVS 1" >>confdefs.h
+printf "%s\n" "#define USE_SOLARIS_PRIVS 1" >>confdefs.h
SPP_MSG="yes"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
as_fn_error $? "*** must have support for Solaris privileges to use --with-solaris-privs" "$LINENO" 5
fi
@@ -9051,48 +9917,45 @@ fi
;;
*-*-sunos4*)
CPPFLAGS="$CPPFLAGS -DSUNOS4"
- for ac_func in getpwanam
-do :
- ac_fn_c_check_func "$LINENO" "getpwanam" "ac_cv_func_getpwanam"
-if test "x$ac_cv_func_getpwanam" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPWANAM 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getpwanam" "ac_cv_func_getpwanam"
+if test "x$ac_cv_func_getpwanam" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWANAM 1" >>confdefs.h
fi
-done
- $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
conf_utmp_location=/etc/utmp
conf_wtmp_location=/var/adm/wtmp
conf_lastlog_location=/var/adm/lastlog
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
-$as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_UTMPX 1" >>confdefs.h
;;
*-ncr-sysv*)
LIBS="$LIBS -lc89"
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
+ printf "%s\n" "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
;;
*-sni-sysv*)
# /usr/ucblib MUST NOT be searched on ReliantUNIX
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
-$as_echo_n "checking for dlsym in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlsym+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
+printf %s "checking for dlsym in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlsym+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9101,44 +9964,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlsym ();
int
-main ()
+main (void)
{
return dlsym ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlsym=yes
-else
+else $as_nop
ac_cv_lib_dl_dlsym=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
-$as_echo "$ac_cv_lib_dl_dlsym" >&6; }
-if test "x$ac_cv_lib_dl_dlsym" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlsym" >&6; }
+if test "x$ac_cv_lib_dl_dlsym" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h
LIBS="-ldl $LIBS"
fi
# -lresolv needs to be at the end of LIBS or DNS lookups break
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
-$as_echo_n "checking for res_query in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv_res_query+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
+printf %s "checking for res_query in -lresolv... " >&6; }
+if test ${ac_cv_lib_resolv_res_query+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lresolv $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9147,45 +10008,44 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char res_query ();
int
-main ()
+main (void)
{
return res_query ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_resolv_res_query=yes
-else
+else $as_nop
ac_cv_lib_resolv_res_query=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5
-$as_echo "$ac_cv_lib_resolv_res_query" >&6; }
-if test "x$ac_cv_lib_resolv_res_query" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_res_query" >&5
+printf "%s\n" "$ac_cv_lib_resolv_res_query" >&6; }
+if test "x$ac_cv_lib_resolv_res_query" = xyes
+then :
LIBS="$LIBS -lresolv"
fi
IPADDR_IN_DISPLAY=yes
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define IP_TOS_IS_BROKEN 1" >>confdefs.h
+ printf "%s\n" "#define IP_TOS_IS_BROKEN 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
- $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
+ printf "%s\n" "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
external_path_file=/etc/default/login
# /usr/ucblib/libucb.a no longer needed on ReliantUNIX
@@ -9194,18 +10054,18 @@ fi
;;
# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
*-*-sysv4.2*)
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
-$as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
+printf "%s\n" "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
- $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
+ printf "%s\n" "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
TEST_SHELL=$SHELL # let configure find us a capable shell
;;
@@ -9213,34 +10073,34 @@ $as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
*-*-sysv5*)
CPPFLAGS="$CPPFLAGS -Dvsnprintf=_xvsnprintf -Dsnprintf=_xsnprintf"
-$as_echo "#define UNIXWARE_LONG_PASSWORDS 1" >>confdefs.h
+printf "%s\n" "#define UNIXWARE_LONG_PASSWORDS 1" >>confdefs.h
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_GETADDRINFO 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
- $as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
+ printf "%s\n" "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
- $as_echo "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h
TEST_SHELL=$SHELL # let configure find us a capable shell
- check_for_libcrypt_later=1
case "$host" in
*-*-sysv5SCO_SV*) # SCO OpenServer 6.x
maildir=/var/spool/mail
- $as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getluid in -lprot" >&5
-$as_echo_n "checking for getluid in -lprot... " >&6; }
-if ${ac_cv_lib_prot_getluid+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ printf "%s\n" "#define BROKEN_UPDWTMPX 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getluid in -lprot" >&5
+printf %s "checking for getluid in -lprot... " >&6; }
+if test ${ac_cv_lib_prot_getluid+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lprot $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9249,48 +10109,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getluid ();
int
-main ()
+main (void)
{
return getluid ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_prot_getluid=yes
-else
+else $as_nop
ac_cv_lib_prot_getluid=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_prot_getluid" >&5
-$as_echo "$ac_cv_lib_prot_getluid" >&6; }
-if test "x$ac_cv_lib_prot_getluid" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_prot_getluid" >&5
+printf "%s\n" "$ac_cv_lib_prot_getluid" >&6; }
+if test "x$ac_cv_lib_prot_getluid" = xyes
+then :
LIBS="$LIBS -lprot"
- for ac_func in getluid setluid
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getluid" "ac_cv_func_getluid"
+if test "x$ac_cv_func_getluid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setluid" "ac_cv_func_setluid"
+if test "x$ac_cv_func_setluid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLUID 1" >>confdefs.h
fi
-done
fi
;;
- *) $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
+ *) printf "%s\n" "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h
;;
esac
@@ -9308,55 +10168,57 @@ fi
fi
LIBS="$LIBS -lprot -lx -ltinfo -lm"
no_dev_ptmx=1
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SECUREWARE 1" >>confdefs.h
- $as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_SHADOW 1" >>confdefs.h
- $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_FD_PASSING 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_GETADDRINFO 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
- $as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
+ printf "%s\n" "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h
- $as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_UPDWTMPX 1" >>confdefs.h
- $as_echo "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
+ printf "%s\n" "#define PASSWD_NEEDS_USERNAME 1" >>confdefs.h
- for ac_func in getluid setluid
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getluid" "ac_cv_func_getluid"
+if test "x$ac_cv_func_getluid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setluid" "ac_cv_func_setluid"
+if test "x$ac_cv_func_setluid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLUID 1" >>confdefs.h
fi
-done
MANTYPE=man
TEST_SHELL=$SHELL # let configure find us a capable shell
SKIP_DISABLE_LASTLOG_DEFINE=yes
;;
*-dec-osf*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Digital Unix SIA" >&5
-$as_echo_n "checking for Digital Unix SIA... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Digital Unix SIA" >&5
+printf %s "checking for Digital Unix SIA... " >&6; }
no_osfsia=""
# Check whether --with-osfsia was given.
-if test "${with_osfsia+set}" = set; then :
+if test ${with_osfsia+y}
+then :
withval=$with_osfsia;
if test "x$withval" = "xno" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
-$as_echo "disabled" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+printf "%s\n" "disabled" >&6; }
no_osfsia=1
fi
@@ -9364,55 +10226,55 @@ fi
if test -z "$no_osfsia" ; then
if test -f /etc/sia/matrix.conf; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define HAVE_OSF_SIA 1" >>confdefs.h
+printf "%s\n" "#define HAVE_OSF_SIA 1" >>confdefs.h
-$as_echo "#define DISABLE_LOGIN 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_LOGIN 1" >>confdefs.h
- $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_FD_PASSING 1" >>confdefs.h
LIBS="$LIBS -lsecurity -ldb -lm -laud"
SIA_MSG="yes"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define LOCKED_PASSWD_SUBSTR \"Nologin\"" >>confdefs.h
+printf "%s\n" "#define LOCKED_PASSWD_SUBSTR \"Nologin\"" >>confdefs.h
fi
fi
- $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_GETADDRINFO 1" >>confdefs.h
- $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
+ printf "%s\n" "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREUID 1" >>confdefs.h
- $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h
+ printf "%s\n" "#define BROKEN_SETREGID 1" >>confdefs.h
-$as_echo "#define BROKEN_READV_COMPARISON 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_READV_COMPARISON 1" >>confdefs.h
;;
*-*-nto-qnx*)
- $as_echo "#define USE_PIPES 1" >>confdefs.h
+ printf "%s\n" "#define USE_PIPES 1" >>confdefs.h
- $as_echo "#define NO_X11_UNIX_SOCKETS 1" >>confdefs.h
+ printf "%s\n" "#define NO_X11_UNIX_SOCKETS 1" >>confdefs.h
- $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_LASTLOG 1" >>confdefs.h
- $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
+ printf "%s\n" "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
-$as_echo "#define BROKEN_SHADOW_EXPIRE 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SHADOW_EXPIRE 1" >>confdefs.h
enable_etc_default_login=no # has incompatible /etc/default/login
case "$host" in
*-*-nto-qnx6*)
- $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_FD_PASSING 1" >>confdefs.h
;;
esac
@@ -9420,26 +10282,26 @@ $as_echo "#define BROKEN_SHADOW_EXPIRE 1" >>confdefs.h
*-*-ultrix*)
-$as_echo "#define BROKEN_GETGROUPS 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_GETGROUPS 1" >>confdefs.h
-$as_echo "#define NEED_SETPGRP 1" >>confdefs.h
+printf "%s\n" "#define NEED_SETPGRP 1" >>confdefs.h
-$as_echo "#define HAVE_SYS_SYSLOG_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_SYSLOG_H 1" >>confdefs.h
-$as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_UTMPX 1" >>confdefs.h
# DISABLE_FD_PASSING so that we call setpgrp as root, otherwise we
# don't get a controlling tty.
-$as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_FD_PASSING 1" >>confdefs.h
# On Ultrix some headers are not protected against multiple includes,
# so we create wrappers and put it where the compiler will find it.
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: creating compat wrappers for headers" >&5
-$as_echo "$as_me: WARNING: creating compat wrappers for headers" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: creating compat wrappers for headers" >&5
+printf "%s\n" "$as_me: WARNING: creating compat wrappers for headers" >&2;}
mkdir -p netinet
for header in netinet/ip.h netdb.h resolv.h; do
name=`echo $header | tr 'a-z/.' 'A-Z__'`
@@ -9455,36 +10317,38 @@ EOD
*-*-lynxos)
CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
-$as_echo "#define BROKEN_SETVBUF 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SETVBUF 1" >>confdefs.h
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking compiler and flags for sanity" >&5
-$as_echo_n "checking compiler and flags for sanity... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking compiler sanity" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking compiler sanity" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking compiler and flags for sanity" >&5
+printf %s "checking compiler and flags for sanity... " >&6; }
+if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking compiler sanity" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking compiler sanity" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
int
-main ()
+main (void)
{
exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "*** compiler cannot create working executables, check config.log ***" "$LINENO" 5
fi
@@ -9495,14 +10359,16 @@ fi
# Checks for libraries.
ac_fn_c_check_func "$LINENO" "setsockopt" "ac_cv_func_setsockopt"
-if test "x$ac_cv_func_setsockopt" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5
-$as_echo_n "checking for setsockopt in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_setsockopt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_setsockopt" = xyes
+then :
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5
+printf %s "checking for setsockopt in -lsocket... " >&6; }
+if test ${ac_cv_lib_socket_setsockopt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9511,33 +10377,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char setsockopt ();
int
-main ()
+main (void)
{
return setsockopt ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_socket_setsockopt=yes
-else
+else $as_nop
ac_cv_lib_socket_setsockopt=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5
-$as_echo "$ac_cv_lib_socket_setsockopt" >&6; }
-if test "x$ac_cv_lib_socket_setsockopt" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSOCKET 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5
+printf "%s\n" "$ac_cv_lib_socket_setsockopt" >&6; }
+if test "x$ac_cv_lib_socket_setsockopt" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h
LIBS="-lsocket $LIBS"
@@ -9546,32 +10409,28 @@ fi
fi
-for ac_func in dirname
+
+ for ac_func in dirname
do :
ac_fn_c_check_func "$LINENO" "dirname" "ac_cv_func_dirname"
-if test "x$ac_cv_func_dirname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DIRNAME 1
-_ACEOF
- for ac_header in libgen.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
-if test "x$ac_cv_header_libgen_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGEN_H 1
-_ACEOF
+if test "x$ac_cv_func_dirname" = xyes
+then :
+ printf "%s\n" "#define HAVE_DIRNAME 1" >>confdefs.h
+ ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
+if test "x$ac_cv_header_libgen_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h
fi
-done
-
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dirname in -lgen" >&5
-$as_echo_n "checking for dirname in -lgen... " >&6; }
-if ${ac_cv_lib_gen_dirname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dirname in -lgen" >&5
+printf %s "checking for dirname in -lgen... " >&6; }
+if test ${ac_cv_lib_gen_dirname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgen $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9580,42 +10439,43 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dirname ();
int
-main ()
+main (void)
{
return dirname ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gen_dirname=yes
-else
+else $as_nop
ac_cv_lib_gen_dirname=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_dirname" >&5
-$as_echo "$ac_cv_lib_gen_dirname" >&6; }
-if test "x$ac_cv_lib_gen_dirname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_dirname" >&5
+printf "%s\n" "$ac_cv_lib_gen_dirname" >&6; }
+if test "x$ac_cv_lib_gen_dirname" = xyes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken dirname" >&5
-$as_echo_n "checking for broken dirname... " >&6; }
-if ${ac_cv_have_broken_dirname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken dirname" >&5
+printf %s "checking for broken dirname... " >&6; }
+if test ${ac_cv_have_broken_dirname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_LIBS="$LIBS"
LIBS="$LIBS -lgen"
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
ac_cv_have_broken_dirname="no"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9636,9 +10496,10 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_have_broken_dirname="no"
-else
+else $as_nop
ac_cv_have_broken_dirname="yes"
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9648,42 +10509,39 @@ fi
LIBS="$save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_broken_dirname" >&5
-$as_echo "$ac_cv_have_broken_dirname" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_broken_dirname" >&5
+printf "%s\n" "$ac_cv_have_broken_dirname" >&6; }
if test "x$ac_cv_have_broken_dirname" = "xno" ; then
LIBS="$LIBS -lgen"
- $as_echo "#define HAVE_DIRNAME 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DIRNAME 1" >>confdefs.h
- for ac_header in libgen.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
-if test "x$ac_cv_header_libgen_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBGEN_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
+if test "x$ac_cv_header_libgen_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h
fi
-done
-
fi
fi
fi
-done
+done
ac_fn_c_check_func "$LINENO" "getspnam" "ac_cv_func_getspnam"
-if test "x$ac_cv_func_getspnam" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getspnam in -lgen" >&5
-$as_echo_n "checking for getspnam in -lgen... " >&6; }
-if ${ac_cv_lib_gen_getspnam+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_getspnam" = xyes
+then :
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getspnam in -lgen" >&5
+printf %s "checking for getspnam in -lgen... " >&6; }
+if test ${ac_cv_lib_gen_getspnam+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgen $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9692,40 +10550,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getspnam ();
int
-main ()
+main (void)
{
return getspnam ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gen_getspnam=yes
-else
+else $as_nop
ac_cv_lib_gen_getspnam=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_getspnam" >&5
-$as_echo "$ac_cv_lib_gen_getspnam" >&6; }
-if test "x$ac_cv_lib_gen_getspnam" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gen_getspnam" >&5
+printf "%s\n" "$ac_cv_lib_gen_getspnam" >&6; }
+if test "x$ac_cv_lib_gen_getspnam" = xyes
+then :
LIBS="$LIBS -lgen"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing basename" >&5
-$as_echo_n "checking for library containing basename... " >&6; }
-if ${ac_cv_search_basename+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing basename" >&5
+printf %s "checking for library containing basename... " >&6; }
+if test ${ac_cv_search_basename+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9733,49 +10591,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char basename ();
int
-main ()
+main (void)
{
return basename ();
;
return 0;
}
_ACEOF
-for ac_lib in '' gen; do
+for ac_lib in '' gen
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_basename=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_basename+:} false; then :
+ if test ${ac_cv_search_basename+y}
+then :
break
fi
done
-if ${ac_cv_search_basename+:} false; then :
+if test ${ac_cv_search_basename+y}
+then :
-else
+else $as_nop
ac_cv_search_basename=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_basename" >&5
-$as_echo "$ac_cv_search_basename" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_basename" >&5
+printf "%s\n" "$ac_cv_search_basename" >&6; }
ac_res=$ac_cv_search_basename
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-$as_echo "#define HAVE_BASENAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BASENAME 1" >>confdefs.h
fi
@@ -9783,7 +10643,8 @@ fi
zlib=yes
# Check whether --with-zlib was given.
-if test "${with_zlib+set}" = set; then :
+if test ${with_zlib+y}
+then :
withval=$with_zlib; if test "x$withval" = "xno" ; then
zlib=no
elif test "x$withval" != "xyes"; then
@@ -9810,30 +10671,35 @@ if test "${with_zlib+set}" = set; then :
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib" >&5
-$as_echo_n "checking for zlib... " >&6; }
+# These libraries are needed for anything that links in the channel code.
+CHANNELLIBS=""
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib" >&5
+printf %s "checking for zlib... " >&6; }
if test "x${zlib}" = "xno"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ saved_LIBS="$LIBS"
+ CHANNELLIBS="$CHANNELLIBS -lz"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define WITH_ZLIB 1" >>confdefs.h
+printf "%s\n" "#define WITH_ZLIB 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes
+then :
-else
+else $as_nop
as_fn_error $? "*** zlib.h missing - please install first or check config.log ***" "$LINENO" 5
fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5
-$as_echo_n "checking for deflate in -lz... " >&6; }
-if ${ac_cv_lib_z_deflate+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5
+printf %s "checking for deflate in -lz... " >&6; }
+if test ${ac_cv_lib_z_deflate+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9842,76 +10708,69 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char deflate ();
int
-main ()
+main (void)
{
return deflate ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_deflate=yes
-else
+else $as_nop
ac_cv_lib_z_deflate=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5
-$as_echo "$ac_cv_lib_z_deflate" >&6; }
-if test "x$ac_cv_lib_z_deflate" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBZ 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5
+printf "%s\n" "$ac_cv_lib_z_deflate" >&6; }
+if test "x$ac_cv_lib_z_deflate" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h
LIBS="-lz $LIBS"
-else
+else $as_nop
saved_CPPFLAGS="$CPPFLAGS"
saved_LDFLAGS="$LDFLAGS"
- save_LIBS="$LIBS"
if test -n "${rpath_opt}"; then
LDFLAGS="-L/usr/local/lib ${rpath_opt}/usr/local/lib ${saved_LDFLAGS}"
else
LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}"
fi
CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
- LIBS="$LIBS -lz"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char deflate ();
int
-main ()
+main (void)
{
return deflate ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- $as_echo "#define HAVE_LIBZ 1" >>confdefs.h
+if ac_fn_c_try_link "$LINENO"
+then :
+ printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h
-else
+else $as_nop
as_fn_error $? "*** zlib missing - please install first or check config.log ***" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
@@ -9920,7 +10779,8 @@ fi
# Check whether --with-zlib-version-check was given.
-if test "${with_zlib_version_check+set}" = set; then :
+if test ${with_zlib_version_check+y}
+then :
withval=$with_zlib_version_check; if test "x$withval" = "xno" ; then
zlib_check_nonfatal=1
fi
@@ -9929,13 +10789,14 @@ if test "${with_zlib_version_check+set}" = set; then :
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for possibly buggy zlib" >&5
-$as_echo_n "checking for possibly buggy zlib... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking zlib version" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking zlib version" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for possibly buggy zlib" >&5
+printf %s "checking for possibly buggy zlib... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking zlib version" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking zlib version" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9944,7 +10805,7 @@ else
#include <zlib.h>
int
-main ()
+main (void)
{
int a=0, b=0, c=0, d=0, n, v;
@@ -9968,12 +10829,13 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
if test -z "$zlib_check_nonfatal" ; then
as_fn_error $? "*** zlib too old - check config.log ***
Your reported zlib version has known security problems. It's possible your
@@ -9983,8 +10845,8 @@ are sure this is the case, you can disable the check by running
If you are in doubt, upgrade zlib to version 1.2.3 or greater.
See http://www.gzip.org/zlib/ for details." "$LINENO" 5
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zlib version may have security problems" >&5
-$as_echo "$as_me: WARNING: zlib version may have security problems" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: zlib version may have security problems" >&5
+printf "%s\n" "$as_me: WARNING: zlib version may have security problems" >&2;}
fi
fi
@@ -9992,17 +10854,20 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ LIBS="$saved_LIBS"
fi
ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
-if test "x$ac_cv_func_strcasecmp" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strcasecmp in -lresolv" >&5
-$as_echo_n "checking for strcasecmp in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv_strcasecmp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_strcasecmp" = xyes
+then :
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for strcasecmp in -lresolv" >&5
+printf %s "checking for strcasecmp in -lresolv... " >&6; }
+if test ${ac_cv_lib_resolv_strcasecmp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lresolv $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10011,50 +10876,50 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char strcasecmp ();
int
-main ()
+main (void)
{
return strcasecmp ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_resolv_strcasecmp=yes
-else
+else $as_nop
ac_cv_lib_resolv_strcasecmp=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_strcasecmp" >&5
-$as_echo "$ac_cv_lib_resolv_strcasecmp" >&6; }
-if test "x$ac_cv_lib_resolv_strcasecmp" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_strcasecmp" >&5
+printf "%s\n" "$ac_cv_lib_resolv_strcasecmp" >&6; }
+if test "x$ac_cv_lib_resolv_strcasecmp" = xyes
+then :
LIBS="$LIBS -lresolv"
fi
fi
-for ac_func in utimes
+
+ for ac_func in utimes
do :
ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
-if test "x$ac_cv_func_utimes" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UTIMES 1
-_ACEOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utimes in -lc89" >&5
-$as_echo_n "checking for utimes in -lc89... " >&6; }
-if ${ac_cv_lib_c89_utimes+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_utimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for utimes in -lc89" >&5
+printf %s "checking for utimes in -lc89... " >&6; }
+if test ${ac_cv_lib_c89_utimes+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lc89 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10063,58 +10928,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char utimes ();
int
-main ()
+main (void)
{
return utimes ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_c89_utimes=yes
-else
+else $as_nop
ac_cv_lib_c89_utimes=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c89_utimes" >&5
-$as_echo "$ac_cv_lib_c89_utimes" >&6; }
-if test "x$ac_cv_lib_c89_utimes" = xyes; then :
- $as_echo "#define HAVE_UTIMES 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c89_utimes" >&5
+printf "%s\n" "$ac_cv_lib_c89_utimes" >&6; }
+if test "x$ac_cv_lib_c89_utimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
LIBS="$LIBS -lc89"
fi
fi
+
done
-
-for ac_header in bsd/libutil.h libutil.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "bsd/libutil.h" "ac_cv_header_bsd_libutil_h" "$ac_includes_default"
+if test "x$ac_cv_header_bsd_libutil_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BSD_LIBUTIL_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "libutil.h" "ac_cv_header_libutil_h" "$ac_includes_default"
+if test "x$ac_cv_header_libutil_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBUTIL_H 1" >>confdefs.h
-done
+fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing fmt_scaled" >&5
-$as_echo_n "checking for library containing fmt_scaled... " >&6; }
-if ${ac_cv_search_fmt_scaled+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing fmt_scaled" >&5
+printf %s "checking for library containing fmt_scaled... " >&6; }
+if test ${ac_cv_search_fmt_scaled+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10122,55 +10987,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char fmt_scaled ();
int
-main ()
+main (void)
{
return fmt_scaled ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_fmt_scaled=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_fmt_scaled+:} false; then :
+ if test ${ac_cv_search_fmt_scaled+y}
+then :
break
fi
done
-if ${ac_cv_search_fmt_scaled+:} false; then :
+if test ${ac_cv_search_fmt_scaled+y}
+then :
-else
+else $as_nop
ac_cv_search_fmt_scaled=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmt_scaled" >&5
-$as_echo "$ac_cv_search_fmt_scaled" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_fmt_scaled" >&5
+printf "%s\n" "$ac_cv_search_fmt_scaled" >&6; }
ac_res=$ac_cv_search_fmt_scaled
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing scan_scaled" >&5
-$as_echo_n "checking for library containing scan_scaled... " >&6; }
-if ${ac_cv_search_scan_scaled+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing scan_scaled" >&5
+printf %s "checking for library containing scan_scaled... " >&6; }
+if test ${ac_cv_search_scan_scaled+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10178,55 +11046,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char scan_scaled ();
int
-main ()
+main (void)
{
return scan_scaled ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_scan_scaled=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_scan_scaled+:} false; then :
+ if test ${ac_cv_search_scan_scaled+y}
+then :
break
fi
done
-if ${ac_cv_search_scan_scaled+:} false; then :
+if test ${ac_cv_search_scan_scaled+y}
+then :
-else
+else $as_nop
ac_cv_search_scan_scaled=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_scan_scaled" >&5
-$as_echo "$ac_cv_search_scan_scaled" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_scan_scaled" >&5
+printf "%s\n" "$ac_cv_search_scan_scaled" >&6; }
ac_res=$ac_cv_search_scan_scaled
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing login" >&5
-$as_echo_n "checking for library containing login... " >&6; }
-if ${ac_cv_search_login+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing login" >&5
+printf %s "checking for library containing login... " >&6; }
+if test ${ac_cv_search_login+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10234,55 +11105,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char login ();
int
-main ()
+main (void)
{
return login ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_login=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_login+:} false; then :
+ if test ${ac_cv_search_login+y}
+then :
break
fi
done
-if ${ac_cv_search_login+:} false; then :
+if test ${ac_cv_search_login+y}
+then :
-else
+else $as_nop
ac_cv_search_login=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login" >&5
-$as_echo "$ac_cv_search_login" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_login" >&5
+printf "%s\n" "$ac_cv_search_login" >&6; }
ac_res=$ac_cv_search_login
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing logout" >&5
-$as_echo_n "checking for library containing logout... " >&6; }
-if ${ac_cv_search_logout+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing logout" >&5
+printf %s "checking for library containing logout... " >&6; }
+if test ${ac_cv_search_logout+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10290,55 +11164,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char logout ();
int
-main ()
+main (void)
{
return logout ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_logout=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_logout+:} false; then :
+ if test ${ac_cv_search_logout+y}
+then :
break
fi
done
-if ${ac_cv_search_logout+:} false; then :
+if test ${ac_cv_search_logout+y}
+then :
-else
+else $as_nop
ac_cv_search_logout=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logout" >&5
-$as_echo "$ac_cv_search_logout" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logout" >&5
+printf "%s\n" "$ac_cv_search_logout" >&6; }
ac_res=$ac_cv_search_logout
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing logwtmp" >&5
-$as_echo_n "checking for library containing logwtmp... " >&6; }
-if ${ac_cv_search_logwtmp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing logwtmp" >&5
+printf %s "checking for library containing logwtmp... " >&6; }
+if test ${ac_cv_search_logwtmp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10346,55 +11223,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char logwtmp ();
int
-main ()
+main (void)
{
return logwtmp ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_logwtmp=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_logwtmp+:} false; then :
+ if test ${ac_cv_search_logwtmp+y}
+then :
break
fi
done
-if ${ac_cv_search_logwtmp+:} false; then :
+if test ${ac_cv_search_logwtmp+y}
+then :
-else
+else $as_nop
ac_cv_search_logwtmp=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logwtmp" >&5
-$as_echo "$ac_cv_search_logwtmp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_logwtmp" >&5
+printf "%s\n" "$ac_cv_search_logwtmp" >&6; }
ac_res=$ac_cv_search_logwtmp
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5
-$as_echo_n "checking for library containing openpty... " >&6; }
-if ${ac_cv_search_openpty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing openpty" >&5
+printf %s "checking for library containing openpty... " >&6; }
+if test ${ac_cv_search_openpty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10402,55 +11282,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char openpty ();
int
-main ()
+main (void)
{
return openpty ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_openpty=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_openpty+:} false; then :
+ if test ${ac_cv_search_openpty+y}
+then :
break
fi
done
-if ${ac_cv_search_openpty+:} false; then :
+if test ${ac_cv_search_openpty+y}
+then :
-else
+else $as_nop
ac_cv_search_openpty=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5
-$as_echo "$ac_cv_search_openpty" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_openpty" >&5
+printf "%s\n" "$ac_cv_search_openpty" >&6; }
ac_res=$ac_cv_search_openpty
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing updwtmp" >&5
-$as_echo_n "checking for library containing updwtmp... " >&6; }
-if ${ac_cv_search_updwtmp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing updwtmp" >&5
+printf %s "checking for library containing updwtmp... " >&6; }
+if test ${ac_cv_search_updwtmp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10458,70 +11341,104 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char updwtmp ();
int
-main ()
+main (void)
{
return updwtmp ();
;
return 0;
}
_ACEOF
-for ac_lib in '' util bsd; do
+for ac_lib in '' util bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_updwtmp=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_updwtmp+:} false; then :
+ if test ${ac_cv_search_updwtmp+y}
+then :
break
fi
done
-if ${ac_cv_search_updwtmp+:} false; then :
+if test ${ac_cv_search_updwtmp+y}
+then :
-else
+else $as_nop
ac_cv_search_updwtmp=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_updwtmp" >&5
-$as_echo "$ac_cv_search_updwtmp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_updwtmp" >&5
+printf "%s\n" "$ac_cv_search_updwtmp" >&6; }
ac_res=$ac_cv_search_updwtmp
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-for ac_func in fmt_scaled scan_scaled login logout openpty updwtmp logwtmp
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "fmt_scaled" "ac_cv_func_fmt_scaled"
+if test "x$ac_cv_func_fmt_scaled" = xyes
+then :
+ printf "%s\n" "#define HAVE_FMT_SCALED 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "scan_scaled" "ac_cv_func_scan_scaled"
+if test "x$ac_cv_func_scan_scaled" = xyes
+then :
+ printf "%s\n" "#define HAVE_SCAN_SCALED 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "login" "ac_cv_func_login"
+if test "x$ac_cv_func_login" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGIN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "logout" "ac_cv_func_logout"
+if test "x$ac_cv_func_logout" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGOUT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty"
+if test "x$ac_cv_func_openpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "updwtmp" "ac_cv_func_updwtmp"
+if test "x$ac_cv_func_updwtmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_UPDWTMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "logwtmp" "ac_cv_func_logwtmp"
+if test "x$ac_cv_func_logwtmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGWTMP 1" >>confdefs.h
fi
-done
# On some platforms, inet_ntop and gethostbyname may be found in libresolv
# or libnsl.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing inet_ntop" >&5
-$as_echo_n "checking for library containing inet_ntop... " >&6; }
-if ${ac_cv_search_inet_ntop+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing inet_ntop" >&5
+printf %s "checking for library containing inet_ntop... " >&6; }
+if test ${ac_cv_search_inet_ntop+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10529,55 +11446,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char inet_ntop ();
int
-main ()
+main (void)
{
return inet_ntop ();
;
return 0;
}
_ACEOF
-for ac_lib in '' resolv nsl; do
+for ac_lib in '' resolv nsl
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_inet_ntop=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_inet_ntop+:} false; then :
+ if test ${ac_cv_search_inet_ntop+y}
+then :
break
fi
done
-if ${ac_cv_search_inet_ntop+:} false; then :
+if test ${ac_cv_search_inet_ntop+y}
+then :
-else
+else $as_nop
ac_cv_search_inet_ntop=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_ntop" >&5
-$as_echo "$ac_cv_search_inet_ntop" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_ntop" >&5
+printf "%s\n" "$ac_cv_search_inet_ntop" >&6; }
ac_res=$ac_cv_search_inet_ntop
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
-$as_echo_n "checking for library containing gethostbyname... " >&6; }
-if ${ac_cv_search_gethostbyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+printf %s "checking for library containing gethostbyname... " >&6; }
+if test ${ac_cv_search_gethostbyname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10585,46 +11505,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gethostbyname ();
int
-main ()
+main (void)
{
return gethostbyname ();
;
return 0;
}
_ACEOF
-for ac_lib in '' resolv nsl; do
+for ac_lib in '' resolv nsl
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_gethostbyname=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_gethostbyname+:} false; then :
+ if test ${ac_cv_search_gethostbyname+y}
+then :
break
fi
done
-if ${ac_cv_search_gethostbyname+:} false; then :
+if test ${ac_cv_search_gethostbyname+y}
+then :
-else
+else $as_nop
ac_cv_search_gethostbyname=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
-$as_echo "$ac_cv_search_gethostbyname" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+printf "%s\n" "$ac_cv_search_gethostbyname" >&6; }
ac_res=$ac_cv_search_gethostbyname
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
@@ -10632,11 +11554,12 @@ fi
# Some Linux distribtions ship the BSD libc hashing functions in
# separate libraries.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256Update" >&5
-$as_echo_n "checking for library containing SHA256Update... " >&6; }
-if ${ac_cv_search_SHA256Update+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing SHA256Update" >&5
+printf %s "checking for library containing SHA256Update... " >&6; }
+if test ${ac_cv_search_SHA256Update+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10644,46 +11567,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char SHA256Update ();
int
-main ()
+main (void)
{
return SHA256Update ();
;
return 0;
}
_ACEOF
-for ac_lib in '' md bsd; do
+for ac_lib in '' md bsd
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_SHA256Update=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_SHA256Update+:} false; then :
+ if test ${ac_cv_search_SHA256Update+y}
+then :
break
fi
done
-if ${ac_cv_search_SHA256Update+:} false; then :
+if test ${ac_cv_search_SHA256Update+y}
+then :
-else
+else $as_nop
ac_cv_search_SHA256Update=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256Update" >&5
-$as_echo "$ac_cv_search_SHA256Update" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_SHA256Update" >&5
+printf "%s\n" "$ac_cv_search_SHA256Update" >&6; }
ac_res=$ac_cv_search_SHA256Update
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
@@ -10691,21 +11616,22 @@ fi
# "Particular Function Checks"
# see https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Functions.html
-for ac_func in strftime
+
+ for ac_func in strftime
do :
ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
-if test "x$ac_cv_func_strftime" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRFTIME 1
-_ACEOF
+if test "x$ac_cv_func_strftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
-else
+else $as_nop
# strftime is in -lintl on SCO UNIX.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
-$as_echo_n "checking for strftime in -lintl... " >&6; }
-if ${ac_cv_lib_intl_strftime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5
+printf %s "checking for strftime in -lintl... " >&6; }
+if test ${ac_cv_lib_intl_strftime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lintl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10714,77 +11640,73 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char strftime ();
int
-main ()
+main (void)
{
return strftime ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_intl_strftime=yes
-else
+else $as_nop
ac_cv_lib_intl_strftime=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
-$as_echo "$ac_cv_lib_intl_strftime" >&6; }
-if test "x$ac_cv_lib_intl_strftime" = xyes; then :
- $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5
+printf "%s\n" "$ac_cv_lib_intl_strftime" >&6; }
+if test "x$ac_cv_lib_intl_strftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
LIBS="-lintl $LIBS"
fi
fi
-done
-
-for ac_header in stdlib.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STDLIB_H 1
-_ACEOF
-
-fi
done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
-$as_echo_n "checking for GNU libc compatible malloc... " >&6; }
-if ${ac_cv_func_malloc_0_nonnull+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_malloc_0_nonnull=no
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5
+printf %s "checking for GNU libc compatible malloc... " >&6; }
+if test ${ac_cv_func_malloc_0_nonnull+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on platforms where we know the result.
+ *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
+ | hpux* | solaris* | cygwin* | mingw* | msys* )
+ ac_cv_func_malloc_0_nonnull=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_malloc_0_nonnull=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined STDC_HEADERS || defined HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-char *malloc ();
-#endif
+#include <stdlib.h>
int
-main ()
+main (void)
{
-return ! malloc (0);
+void *p = malloc (0);
+ int result = !p;
+ free (p);
+ return result;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_malloc_0_nonnull=yes
-else
+else $as_nop
ac_cv_func_malloc_0_nonnull=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -10792,14 +11714,15 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
-$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; }
-if test $ac_cv_func_malloc_0_nonnull = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5
+printf "%s\n" "$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes
+then :
-$as_echo "#define HAVE_MALLOC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MALLOC 1" >>confdefs.h
-else
- $as_echo "#define HAVE_MALLOC 0" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define HAVE_MALLOC 0" >>confdefs.h
case " $LIBOBJS " in
*" malloc.$ac_objext "* ) ;;
@@ -10808,50 +11731,47 @@ else
esac
-$as_echo "#define malloc rpl_malloc" >>confdefs.h
+printf "%s\n" "#define malloc rpl_malloc" >>confdefs.h
fi
-for ac_header in stdlib.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STDLIB_H 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5
-$as_echo_n "checking for GNU libc compatible realloc... " >&6; }
-if ${ac_cv_func_realloc_0_nonnull+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_realloc_0_nonnull=no
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5
+printf %s "checking for GNU libc compatible realloc... " >&6; }
+if test ${ac_cv_func_realloc_0_nonnull+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on platforms where we know the result.
+ *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
+ | hpux* | solaris* | cygwin* | mingw* | msys* )
+ ac_cv_func_realloc_0_nonnull=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_realloc_0_nonnull=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if defined STDC_HEADERS || defined HAVE_STDLIB_H
-# include <stdlib.h>
-#else
-char *realloc ();
-#endif
+#include <stdlib.h>
int
-main ()
+main (void)
{
-return ! realloc (0, 0);
+void *p = realloc (0, 0);
+ int result = !p;
+ free (p);
+ return result;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_realloc_0_nonnull=yes
-else
+else $as_nop
ac_cv_func_realloc_0_nonnull=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -10859,14 +11779,15 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5
-$as_echo "$ac_cv_func_realloc_0_nonnull" >&6; }
-if test $ac_cv_func_realloc_0_nonnull = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5
+printf "%s\n" "$ac_cv_func_realloc_0_nonnull" >&6; }
+if test $ac_cv_func_realloc_0_nonnull = yes
+then :
-$as_echo "#define HAVE_REALLOC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_REALLOC 1" >>confdefs.h
-else
- $as_echo "#define HAVE_REALLOC 0" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define HAVE_REALLOC 0" >>confdefs.h
case " $LIBOBJS " in
*" realloc.$ac_objext "* ) ;;
@@ -10875,25 +11796,26 @@ else
esac
-$as_echo "#define realloc rpl_realloc" >>confdefs.h
+printf "%s\n" "#define realloc rpl_realloc" >>confdefs.h
fi
# autoconf doesn't have AC_FUNC_CALLOC so fake it if malloc returns NULL;
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if calloc(0, N) returns non-null" >&5
-$as_echo_n "checking if calloc(0, N) returns non-null... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming same as malloc" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming same as malloc" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if calloc(0, N) returns non-null" >&5
+printf %s "checking if calloc(0, N) returns non-null... " >&6; }
+if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming same as malloc" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming same as malloc" >&2;}
func_calloc_0_nonnull="$ac_cv_func_malloc_0_nonnull"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
int
-main ()
+main (void)
{
void *p = calloc(0, 1); exit(p == NULL);
@@ -10901,34 +11823,36 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
func_calloc_0_nonnull=yes
-else
+else $as_nop
func_calloc_0_nonnull=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $func_calloc_0_nonnull" >&5
-$as_echo "$func_calloc_0_nonnull" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $func_calloc_0_nonnull" >&5
+printf "%s\n" "$func_calloc_0_nonnull" >&6; }
if test "x$func_calloc_0_nonnull" = "xyes"; then
-$as_echo "#define HAVE_CALLOC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CALLOC 1" >>confdefs.h
else
-$as_echo "#define HAVE_CALLOC 0" >>confdefs.h
+printf "%s\n" "#define HAVE_CALLOC 0" >>confdefs.h
-$as_echo "#define calloc rpl_calloc" >>confdefs.h
+printf "%s\n" "#define calloc rpl_calloc" >>confdefs.h
fi
# Check for ALTDIRFUNC glob() extension
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOB_ALTDIRFUNC support" >&5
-$as_echo_n "checking for GLOB_ALTDIRFUNC support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GLOB_ALTDIRFUNC support" >&5
+printf %s "checking for GLOB_ALTDIRFUNC support... " >&6; }
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10939,62 +11863,64 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "FOUNDIT" >/dev/null 2>&1; then :
+ $EGREP "FOUNDIT" >/dev/null 2>&1
+then :
-$as_echo "#define GLOB_HAS_ALTDIRFUNC 1" >>confdefs.h
+printf "%s\n" "#define GLOB_HAS_ALTDIRFUNC 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f conftest*
+rm -rf conftest*
# Check for g.gl_matchc glob() extension
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gl_matchc field in glob_t" >&5
-$as_echo_n "checking for gl_matchc field in glob_t... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gl_matchc field in glob_t" >&5
+printf %s "checking for gl_matchc field in glob_t... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <glob.h>
int
-main ()
+main (void)
{
glob_t g; g.gl_matchc = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-$as_echo "#define GLOB_HAS_GL_MATCHC 1" >>confdefs.h
+printf "%s\n" "#define GLOB_HAS_GL_MATCHC 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Check for g.gl_statv glob() extension
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gl_statv and GLOB_KEEPSTAT extensions for glob" >&5
-$as_echo_n "checking for gl_statv and GLOB_KEEPSTAT extensions for glob... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gl_statv and GLOB_KEEPSTAT extensions for glob" >&5
+printf %s "checking for gl_statv and GLOB_KEEPSTAT extensions for glob... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <glob.h>
int
-main ()
+main (void)
{
#ifndef GLOB_KEEPSTAT
@@ -11007,58 +11933,58 @@ g.gl_statv = NULL;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-$as_echo "#define GLOB_HAS_GL_STATV 1" >>confdefs.h
+printf "%s\n" "#define GLOB_HAS_GL_STATV 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-ac_fn_c_check_decl "$LINENO" "GLOB_NOMATCH" "ac_cv_have_decl_GLOB_NOMATCH" "#include <glob.h>
-"
-if test "x$ac_cv_have_decl_GLOB_NOMATCH" = xyes; then :
+ac_fn_check_decl "$LINENO" "GLOB_NOMATCH" "ac_cv_have_decl_GLOB_NOMATCH" "#include <glob.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_GLOB_NOMATCH" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_GLOB_NOMATCH $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GLOB_NOMATCH $ac_have_decl
-_ACEOF
+ac_fn_check_decl "$LINENO" "VIS_ALL" "ac_cv_have_decl_VIS_ALL" "#include <vis.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_VIS_ALL" = xyes
+then :
-ac_fn_c_check_decl "$LINENO" "VIS_ALL" "ac_cv_have_decl_VIS_ALL" "#include <vis.h>
-"
-if test "x$ac_cv_have_decl_VIS_ALL" = xyes; then :
+else $as_nop
-else
-
-$as_echo "#define BROKEN_STRNVIS 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_STRNVIS 1" >>confdefs.h
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct dirent allocates space for d_name" >&5
+printf %s "checking whether struct dirent allocates space for d_name... " >&6; }
+if test "$cross_compiling" = yes
+then :
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct dirent allocates space for d_name" >&5
-$as_echo_n "checking whether struct dirent allocates space for d_name... " >&6; }
-if test "$cross_compiling" = yes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&2;}
- $as_echo "#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME" >&2;}
+ printf "%s\n" "#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1" >>confdefs.h
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11067,7 +11993,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
struct dirent d;
@@ -11077,15 +12003,16 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_ONE_BYTE_DIRENT_D_NAME 1" >>confdefs.h
fi
@@ -11094,35 +12021,37 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/pid/fd directory" >&5
-$as_echo_n "checking for /proc/pid/fd directory... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /proc/pid/fd directory" >&5
+printf %s "checking for /proc/pid/fd directory... " >&6; }
if test -d "/proc/$$/fd" ; then
-$as_echo "#define HAVE_PROC_PID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PROC_PID 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check whether user wants to use ldns
LDNS_MSG="no"
# Check whether --with-ldns was given.
-if test "${with_ldns+set}" = set; then :
+if test ${with_ldns+y}
+then :
withval=$with_ldns;
ldns=""
if test "x$withval" = "xyes" ; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ldns-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}ldns-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LDNSCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LDNSCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LDNSCONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_LDNSCONFIG="$LDNSCONFIG" # Let the user override the test with a path.
@@ -11132,11 +12061,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LDNSCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LDNSCONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -11148,11 +12081,11 @@ esac
fi
LDNSCONFIG=$ac_cv_path_LDNSCONFIG
if test -n "$LDNSCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDNSCONFIG" >&5
-$as_echo "$LDNSCONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDNSCONFIG" >&5
+printf "%s\n" "$LDNSCONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -11161,11 +12094,12 @@ if test -z "$ac_cv_path_LDNSCONFIG"; then
ac_pt_LDNSCONFIG=$LDNSCONFIG
# Extract the first word of "ldns-config", so it can be a program name with args.
set dummy ldns-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_LDNSCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_LDNSCONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_LDNSCONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_LDNSCONFIG="$ac_pt_LDNSCONFIG" # Let the user override the test with a path.
@@ -11175,11 +12109,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_LDNSCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_LDNSCONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -11191,11 +12129,11 @@ esac
fi
ac_pt_LDNSCONFIG=$ac_cv_path_ac_pt_LDNSCONFIG
if test -n "$ac_pt_LDNSCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LDNSCONFIG" >&5
-$as_echo "$ac_pt_LDNSCONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_LDNSCONFIG" >&5
+printf "%s\n" "$ac_pt_LDNSCONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_LDNSCONFIG" = x; then
@@ -11203,8 +12141,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LDNSCONFIG=$ac_pt_LDNSCONFIG
@@ -11231,11 +12169,11 @@ fi
# Verify that it works.
if test "x$ldns" = "xyes" ; then
-$as_echo "#define HAVE_LDNS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LDNS 1" >>confdefs.h
LDNS_MSG="yes"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ldns support" >&5
-$as_echo_n "checking for ldns support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldns support" >&5
+printf %s "checking for ldns support... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11249,17 +12187,18 @@ int main() { ldns_status status = ldns_verify_trusted(NULL, NULL, NULL, NULL); s
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "** Incomplete or missing ldns libraries." "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
@@ -11270,117 +12209,20 @@ fi
LIBEDIT_MSG="no"
# Check whether --with-libedit was given.
-if test "${with_libedit+set}" = set; then :
+if test ${with_libedit+y}
+then :
withval=$with_libedit; if test "x$withval" != "xno" ; then
if test "x$withval" = "xyes" ; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKGCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PKGCONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-PKGCONFIG=$ac_cv_path_PKGCONFIG
-if test -n "$PKGCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
-$as_echo "$PKGCONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKGCONFIG"; then
- ac_pt_PKGCONFIG=$PKGCONFIG
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ac_pt_PKGCONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
-if test -n "$ac_pt_PKGCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
-$as_echo "$ac_pt_PKGCONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_pt_PKGCONFIG" = x; then
- PKGCONFIG="no"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- PKGCONFIG=$ac_pt_PKGCONFIG
- fi
-else
- PKGCONFIG="$ac_cv_path_PKGCONFIG"
-fi
-
if test "x$PKGCONFIG" != "xno"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about libedit" >&5
-$as_echo_n "checking if $PKGCONFIG knows about libedit... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about libedit" >&5
+printf %s "checking if $PKGCONFIG knows about libedit... " >&6; }
if "$PKGCONFIG" libedit; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
use_pkgconfig_for_libedit=yes
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
else
@@ -11398,11 +12240,12 @@ $as_echo "no" >&6; }
LIBEDIT="-ledit -lcurses"
fi
OTHERLIBS=`echo $LIBEDIT | sed 's/-ledit//'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for el_init in -ledit" >&5
-$as_echo_n "checking for el_init in -ledit... " >&6; }
-if ${ac_cv_lib_edit_el_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for el_init in -ledit" >&5
+printf %s "checking for el_init in -ledit... " >&6; }
+if test ${ac_cv_lib_edit_el_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ledit $OTHERLIBS
$LIBS"
@@ -11412,42 +12255,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char el_init ();
int
-main ()
+main (void)
{
return el_init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_edit_el_init=yes
-else
+else $as_nop
ac_cv_lib_edit_el_init=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_el_init" >&5
-$as_echo "$ac_cv_lib_edit_el_init" >&6; }
-if test "x$ac_cv_lib_edit_el_init" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_edit_el_init" >&5
+printf "%s\n" "$ac_cv_lib_edit_el_init" >&6; }
+if test "x$ac_cv_lib_edit_el_init" = xyes
+then :
-$as_echo "#define USE_LIBEDIT 1" >>confdefs.h
+printf "%s\n" "#define USE_LIBEDIT 1" >>confdefs.h
LIBEDIT_MSG="yes"
-else
+else $as_nop
as_fn_error $? "libedit not found" "$LINENO" 5
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libedit version is compatible" >&5
-$as_echo_n "checking if libedit version is compatible... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libedit version is compatible" >&5
+printf %s "checking if libedit version is compatible... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11455,7 +12297,7 @@ $as_echo_n "checking if libedit version is compatible... " >&6; }
#include <stdlib.h>
int
-main ()
+main (void)
{
int i = H_SETSIZE;
@@ -11466,16 +12308,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "libedit version is not compatible" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
@@ -11484,16 +12327,17 @@ fi
AUDIT_MODULE=none
# Check whether --with-audit was given.
-if test "${with_audit+set}" = set; then :
+if test ${with_audit+y}
+then :
withval=$with_audit;
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported audit module" >&5
-$as_echo_n "checking for supported audit module... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for supported audit module" >&5
+printf %s "checking for supported audit module... " >&6; }
case "$withval" in
bsm)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: bsm" >&5
-$as_echo "bsm" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: bsm" >&5
+printf "%s\n" "bsm" >&6; }
AUDIT_MODULE=bsm
- for ac_header in bsm/audit.h
+ for ac_header in bsm/audit.h
do :
ac_fn_c_check_header_compile "$LINENO" "bsm/audit.h" "ac_cv_header_bsm_audit_h" "
#ifdef HAVE_TIME_H
@@ -11502,22 +12346,21 @@ do :
"
-if test "x$ac_cv_header_bsm_audit_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BSM_AUDIT_H 1
-_ACEOF
+if test "x$ac_cv_header_bsm_audit_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BSM_AUDIT_H 1" >>confdefs.h
-else
+else $as_nop
as_fn_error $? "BSM enabled and bsm/audit.h not found" "$LINENO" 5
fi
done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaudit in -lbsm" >&5
-$as_echo_n "checking for getaudit in -lbsm... " >&6; }
-if ${ac_cv_lib_bsm_getaudit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaudit in -lbsm" >&5
+printf %s "checking for getaudit in -lbsm... " >&6; }
+if test ${ac_cv_lib_bsm_getaudit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsm $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11526,108 +12369,101 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getaudit ();
int
-main ()
+main (void)
{
return getaudit ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bsm_getaudit=yes
-else
+else $as_nop
ac_cv_lib_bsm_getaudit=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsm_getaudit" >&5
-$as_echo "$ac_cv_lib_bsm_getaudit" >&6; }
-if test "x$ac_cv_lib_bsm_getaudit" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBBSM 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsm_getaudit" >&5
+printf "%s\n" "$ac_cv_lib_bsm_getaudit" >&6; }
+if test "x$ac_cv_lib_bsm_getaudit" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBBSM 1" >>confdefs.h
LIBS="-lbsm $LIBS"
-else
+else $as_nop
as_fn_error $? "BSM enabled and required library not found" "$LINENO" 5
fi
- for ac_func in getaudit
+
+ for ac_func in getaudit
do :
ac_fn_c_check_func "$LINENO" "getaudit" "ac_cv_func_getaudit"
-if test "x$ac_cv_func_getaudit" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETAUDIT 1
-_ACEOF
+if test "x$ac_cv_func_getaudit" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETAUDIT 1" >>confdefs.h
-else
+else $as_nop
as_fn_error $? "BSM enabled and required function not found" "$LINENO" 5
fi
-done
+done
# These are optional
- for ac_func in getaudit_addr aug_get_machine
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getaudit_addr" "ac_cv_func_getaudit_addr"
+if test "x$ac_cv_func_getaudit_addr" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETAUDIT_ADDR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "aug_get_machine" "ac_cv_func_aug_get_machine"
+if test "x$ac_cv_func_aug_get_machine" = xyes
+then :
+ printf "%s\n" "#define HAVE_AUG_GET_MACHINE 1" >>confdefs.h
fi
-done
-$as_echo "#define USE_BSM_AUDIT 1" >>confdefs.h
+printf "%s\n" "#define USE_BSM_AUDIT 1" >>confdefs.h
if test "$sol2ver" -ge 11; then
SSHDLIBS="$SSHDLIBS -lscf"
-$as_echo "#define BROKEN_BSM_API 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_BSM_API 1" >>confdefs.h
fi
;;
linux)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: linux" >&5
-$as_echo "linux" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: linux" >&5
+printf "%s\n" "linux" >&6; }
AUDIT_MODULE=linux
- for ac_header in libaudit.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default"
-if test "x$ac_cv_header_libaudit_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBAUDIT_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default"
+if test "x$ac_cv_header_libaudit_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBAUDIT_H 1" >>confdefs.h
fi
-done
-
SSHDLIBS="$SSHDLIBS -laudit"
-$as_echo "#define USE_LINUX_AUDIT 1" >>confdefs.h
+printf "%s\n" "#define USE_LINUX_AUDIT 1" >>confdefs.h
;;
debug)
AUDIT_MODULE=debug
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: debug" >&5
-$as_echo "debug" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: debug" >&5
+printf "%s\n" "debug" >&6; }
-$as_echo "#define SSH_AUDIT_EVENTS 1" >>confdefs.h
+printf "%s\n" "#define SSH_AUDIT_EVENTS 1" >>confdefs.h
;;
no)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
*)
as_fn_error $? "Unknown audit module $withval" "$LINENO" 5
@@ -11639,7 +12475,8 @@ fi
# Check whether --with-pie was given.
-if test "${with_pie+set}" = set; then :
+if test ${with_pie+y}
+then :
withval=$with_pie;
if test "x$withval" = "xno"; then
use_pie=no
@@ -11660,8 +12497,8 @@ if test "x$use_toolchain_hardening" != "x1" && test "x$use_pie" = "xauto"; then
fi
if test "x$use_pie" = "xauto"; then
# Automatic PIE requires gcc >= 4.x
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc >= 4.x" >&5
-$as_echo_n "checking for gcc >= 4.x... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcc >= 4.x" >&5
+printf %s "checking for gcc >= 4.x... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11670,23 +12507,24 @@ $as_echo_n "checking for gcc >= 4.x... " >&6; }
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
use_pie=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test "x$use_pie" != "xno"; then
SAVED_CFLAGS="$CFLAGS"
SAVED_LDFLAGS="$LDFLAGS"
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fPIE" >&5
-$as_echo_n "checking if $CC supports compile flag -fPIE... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -fPIE" >&5
+printf %s "checking if $CC supports compile flag -fPIE... " >&6; }
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $WERROR -fPIE"
_define_flag=""
@@ -11721,29 +12559,30 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CFLAGS="$saved_CFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$saved_CFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
}
{
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -pie" >&5
-$as_echo_n "checking if $LD supports link flag -pie... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -pie" >&5
+printf %s "checking if $LD supports link flag -pie... " >&6; }
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $WERROR -pie"
_define_flag=""
@@ -11766,265 +12605,967 @@ int main(int argc, char **argv) {
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
if $ac_cv_path_EGREP -i "unrecognized option|warning.*ignored" conftest.err >/dev/null
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
LDFLAGS="$saved_LDFLAGS $_define_flag"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDFLAGS="$saved_LDFLAGS"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
}
# We use both -fPIE and -pie or neither.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether both -fPIE and -pie are supported" >&5
-$as_echo_n "checking whether both -fPIE and -pie are supported... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether both -fPIE and -pie are supported" >&5
+printf %s "checking whether both -fPIE and -pie are supported... " >&6; }
if echo "x $CFLAGS" | grep ' -fPIE' >/dev/null 2>&1 && \
echo "x $LDFLAGS" | grep ' -pie' >/dev/null 2>&1 ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CFLAGS="$SAVED_CFLAGS"
LDFLAGS="$SAVED_LDFLAGS"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -fPIC is accepted" >&5
-$as_echo_n "checking whether -fPIC is accepted... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -fPIC is accepted" >&5
+printf %s "checking whether -fPIC is accepted... " >&6; }
SAVED_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIC"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
int
-main ()
+main (void)
{
exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
PICFLAG="-fPIC";
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
PICFLAG="";
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$SAVED_CFLAGS"
-for ac_func in \
- Blowfish_initstate \
- Blowfish_expandstate \
- Blowfish_expand0state \
- Blowfish_stream2word \
- SHA256Update \
- SHA384Update \
- SHA512Update \
- asprintf \
- b64_ntop \
- __b64_ntop \
- b64_pton \
- __b64_pton \
- bcopy \
- bcrypt_pbkdf \
- bindresvport_sa \
- blf_enc \
- bzero \
- cap_rights_limit \
- clock \
- closefrom \
- close_range \
- dirfd \
- endgrent \
- err \
- errx \
- explicit_bzero \
- explicit_memset \
- fchmod \
- fchmodat \
- fchown \
- fchownat \
- flock \
- fnmatch \
- freeaddrinfo \
- freezero \
- fstatfs \
- fstatvfs \
- futimes \
- getaddrinfo \
- getcwd \
- getgrouplist \
- getline \
- getnameinfo \
- getopt \
- getpagesize \
- getpeereid \
- getpeerucred \
- getpgid \
- _getpty \
- getrlimit \
- getrandom \
- getsid \
- getttyent \
- glob \
- group_from_gid \
- inet_aton \
- inet_ntoa \
- inet_ntop \
- innetgr \
- killpg \
- llabs \
- localtime_r \
- login_getcapbool \
- login_getpwclass \
- memmem \
- memmove \
- memset_s \
- mkdtemp \
- ngetaddrinfo \
- nsleep \
- ogetaddrinfo \
- openlog_r \
- pledge \
- poll \
- ppoll \
- prctl \
- procctl \
- pselect \
- pstat \
- raise \
- readpassphrase \
- reallocarray \
- realpath \
- recvmsg \
- recallocarray \
- rresvport_af \
- sendmsg \
- setdtablesize \
- setegid \
- setenv \
- seteuid \
- setgroupent \
- setgroups \
- setlinebuf \
- setlogin \
- setpassent\
- setpcred \
- setproctitle \
- setregid \
- setreuid \
- setrlimit \
- setsid \
- setvbuf \
- sigaction \
- sigvec \
- snprintf \
- socketpair \
- statfs \
- statvfs \
- strcasestr \
- strdup \
- strerror \
- strlcat \
- strlcpy \
- strmode \
- strndup \
- strnlen \
- strnvis \
- strptime \
- strsignal \
- strtonum \
- strtoll \
- strtoul \
- strtoull \
- swap32 \
- sysconf \
- tcgetpgrp \
- timingsafe_bcmp \
- truncate \
- unsetenv \
- updwtmpx \
- utimensat \
- user_from_uid \
- usleep \
- vasprintf \
- vsnprintf \
- waitpid \
- warn \
+ac_fn_c_check_func "$LINENO" "Blowfish_initstate" "ac_cv_func_Blowfish_initstate"
+if test "x$ac_cv_func_Blowfish_initstate" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLOWFISH_INITSTATE 1" >>confdefs.h
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "Blowfish_expandstate" "ac_cv_func_Blowfish_expandstate"
+if test "x$ac_cv_func_Blowfish_expandstate" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLOWFISH_EXPANDSTATE 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "Blowfish_expand0state" "ac_cv_func_Blowfish_expand0state"
+if test "x$ac_cv_func_Blowfish_expand0state" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLOWFISH_EXPAND0STATE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "Blowfish_stream2word" "ac_cv_func_Blowfish_stream2word"
+if test "x$ac_cv_func_Blowfish_stream2word" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLOWFISH_STREAM2WORD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SHA256Update" "ac_cv_func_SHA256Update"
+if test "x$ac_cv_func_SHA256Update" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA256UPDATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SHA384Update" "ac_cv_func_SHA384Update"
+if test "x$ac_cv_func_SHA384Update" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA384UPDATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SHA512Update" "ac_cv_func_SHA512Update"
+if test "x$ac_cv_func_SHA512Update" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA512UPDATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf"
+if test "x$ac_cv_func_asprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "b64_ntop" "ac_cv_func_b64_ntop"
+if test "x$ac_cv_func_b64_ntop" = xyes
+then :
+ printf "%s\n" "#define HAVE_B64_NTOP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "__b64_ntop" "ac_cv_func___b64_ntop"
+if test "x$ac_cv_func___b64_ntop" = xyes
+then :
+ printf "%s\n" "#define HAVE___B64_NTOP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "b64_pton" "ac_cv_func_b64_pton"
+if test "x$ac_cv_func_b64_pton" = xyes
+then :
+ printf "%s\n" "#define HAVE_B64_PTON 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "__b64_pton" "ac_cv_func___b64_pton"
+if test "x$ac_cv_func___b64_pton" = xyes
+then :
+ printf "%s\n" "#define HAVE___B64_PTON 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "bcopy" "ac_cv_func_bcopy"
+if test "x$ac_cv_func_bcopy" = xyes
+then :
+ printf "%s\n" "#define HAVE_BCOPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "bcrypt_pbkdf" "ac_cv_func_bcrypt_pbkdf"
+if test "x$ac_cv_func_bcrypt_pbkdf" = xyes
+then :
+ printf "%s\n" "#define HAVE_BCRYPT_PBKDF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "bindresvport_sa" "ac_cv_func_bindresvport_sa"
+if test "x$ac_cv_func_bindresvport_sa" = xyes
+then :
+ printf "%s\n" "#define HAVE_BINDRESVPORT_SA 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "blf_enc" "ac_cv_func_blf_enc"
+if test "x$ac_cv_func_blf_enc" = xyes
+then :
+ printf "%s\n" "#define HAVE_BLF_ENC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "bzero" "ac_cv_func_bzero"
+if test "x$ac_cv_func_bzero" = xyes
+then :
+ printf "%s\n" "#define HAVE_BZERO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "cap_rights_limit" "ac_cv_func_cap_rights_limit"
+if test "x$ac_cv_func_cap_rights_limit" = xyes
+then :
+ printf "%s\n" "#define HAVE_CAP_RIGHTS_LIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "clock" "ac_cv_func_clock"
+if test "x$ac_cv_func_clock" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "closefrom" "ac_cv_func_closefrom"
+if test "x$ac_cv_func_closefrom" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOSEFROM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "close_range" "ac_cv_func_close_range"
+if test "x$ac_cv_func_close_range" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOSE_RANGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "dirfd" "ac_cv_func_dirfd"
+if test "x$ac_cv_func_dirfd" = xyes
+then :
+ printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "endgrent" "ac_cv_func_endgrent"
+if test "x$ac_cv_func_endgrent" = xyes
+then :
+ printf "%s\n" "#define HAVE_ENDGRENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "err" "ac_cv_func_err"
+if test "x$ac_cv_func_err" = xyes
+then :
+ printf "%s\n" "#define HAVE_ERR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "errx" "ac_cv_func_errx"
+if test "x$ac_cv_func_errx" = xyes
+then :
+ printf "%s\n" "#define HAVE_ERRX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero"
+if test "x$ac_cv_func_explicit_bzero" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset"
+if test "x$ac_cv_func_explicit_memset" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod"
+if test "x$ac_cv_func_fchmod" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchmodat" "ac_cv_func_fchmodat"
+if test "x$ac_cv_func_fchmodat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHMODAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown"
+if test "x$ac_cv_func_fchown" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchownat" "ac_cv_func_fchownat"
+if test "x$ac_cv_func_fchownat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHOWNAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "flock" "ac_cv_func_flock"
+if test "x$ac_cv_func_flock" = xyes
+then :
+ printf "%s\n" "#define HAVE_FLOCK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch"
+if test "x$ac_cv_func_fnmatch" = xyes
+then :
+ printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "freeaddrinfo" "ac_cv_func_freeaddrinfo"
+if test "x$ac_cv_func_freeaddrinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_FREEADDRINFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "freezero" "ac_cv_func_freezero"
+if test "x$ac_cv_func_freezero" = xyes
+then :
+ printf "%s\n" "#define HAVE_FREEZERO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fstatfs" "ac_cv_func_fstatfs"
+if test "x$ac_cv_func_fstatfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fstatvfs" "ac_cv_func_fstatvfs"
+if test "x$ac_cv_func_fstatvfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATVFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes"
+if test "x$ac_cv_func_futimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo"
+if test "x$ac_cv_func_getaddrinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd"
+if test "x$ac_cv_func_getcwd" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
+if test "x$ac_cv_func_getentropy" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist"
+if test "x$ac_cv_func_getgrouplist" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGROUPLIST 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getline" "ac_cv_func_getline"
+if test "x$ac_cv_func_getline" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLINE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getnameinfo" "ac_cv_func_getnameinfo"
+if test "x$ac_cv_func_getnameinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETNAMEINFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
+if test "x$ac_cv_func_getopt" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETOPT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
+if test "x$ac_cv_func_getpagesize" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpeereid" "ac_cv_func_getpeereid"
+if test "x$ac_cv_func_getpeereid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPEEREID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpeerucred" "ac_cv_func_getpeerucred"
+if test "x$ac_cv_func_getpeerucred" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPEERUCRED 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpgid" "ac_cv_func_getpgid"
+if test "x$ac_cv_func_getpgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_getpty" "ac_cv_func__getpty"
+if test "x$ac_cv_func__getpty" = xyes
+then :
+ printf "%s\n" "#define HAVE__GETPTY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit"
+if test "x$ac_cv_func_getrlimit" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom"
+if test "x$ac_cv_func_getrandom" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getsid" "ac_cv_func_getsid"
+if test "x$ac_cv_func_getsid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getttyent" "ac_cv_func_getttyent"
+if test "x$ac_cv_func_getttyent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETTTYENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "glob" "ac_cv_func_glob"
+if test "x$ac_cv_func_glob" = xyes
+then :
+ printf "%s\n" "#define HAVE_GLOB 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "group_from_gid" "ac_cv_func_group_from_gid"
+if test "x$ac_cv_func_group_from_gid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GROUP_FROM_GID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton"
+if test "x$ac_cv_func_inet_aton" = xyes
+then :
+ printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "inet_ntoa" "ac_cv_func_inet_ntoa"
+if test "x$ac_cv_func_inet_ntoa" = xyes
+then :
+ printf "%s\n" "#define HAVE_INET_NTOA 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
+if test "x$ac_cv_func_inet_ntop" = xyes
+then :
+ printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "innetgr" "ac_cv_func_innetgr"
+if test "x$ac_cv_func_innetgr" = xyes
+then :
+ printf "%s\n" "#define HAVE_INNETGR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "killpg" "ac_cv_func_killpg"
+if test "x$ac_cv_func_killpg" = xyes
+then :
+ printf "%s\n" "#define HAVE_KILLPG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "llabs" "ac_cv_func_llabs"
+if test "x$ac_cv_func_llabs" = xyes
+then :
+ printf "%s\n" "#define HAVE_LLABS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"
+if test "x$ac_cv_func_localtime_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "bzero" "ac_cv_have_decl_bzero" "$ac_includes_default"
-if test "x$ac_cv_have_decl_bzero" = xyes; then :
+fi
+ac_fn_c_check_func "$LINENO" "login_getcapbool" "ac_cv_func_login_getcapbool"
+if test "x$ac_cv_func_login_getcapbool" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGIN_GETCAPBOOL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "login_getpwclass" "ac_cv_func_login_getpwclass"
+if test "x$ac_cv_func_login_getpwclass" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGIN_GETPWCLASS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memmem" "ac_cv_func_memmem"
+if test "x$ac_cv_func_memmem" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMMEM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
+if test "x$ac_cv_func_memmove" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memset_s" "ac_cv_func_memset_s"
+if test "x$ac_cv_func_memset_s" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMSET_S 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
+if test "x$ac_cv_func_mkdtemp" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKDTEMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ngetaddrinfo" "ac_cv_func_ngetaddrinfo"
+if test "x$ac_cv_func_ngetaddrinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_NGETADDRINFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "nsleep" "ac_cv_func_nsleep"
+if test "x$ac_cv_func_nsleep" = xyes
+then :
+ printf "%s\n" "#define HAVE_NSLEEP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ogetaddrinfo" "ac_cv_func_ogetaddrinfo"
+if test "x$ac_cv_func_ogetaddrinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_OGETADDRINFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "openlog_r" "ac_cv_func_openlog_r"
+if test "x$ac_cv_func_openlog_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENLOG_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pledge" "ac_cv_func_pledge"
+if test "x$ac_cv_func_pledge" = xyes
+then :
+ printf "%s\n" "#define HAVE_PLEDGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll"
+if test "x$ac_cv_func_poll" = xyes
+then :
+ printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ppoll" "ac_cv_func_ppoll"
+if test "x$ac_cv_func_ppoll" = xyes
+then :
+ printf "%s\n" "#define HAVE_PPOLL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "prctl" "ac_cv_func_prctl"
+if test "x$ac_cv_func_prctl" = xyes
+then :
+ printf "%s\n" "#define HAVE_PRCTL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "procctl" "ac_cv_func_procctl"
+if test "x$ac_cv_func_procctl" = xyes
+then :
+ printf "%s\n" "#define HAVE_PROCCTL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect"
+if test "x$ac_cv_func_pselect" = xyes
+then :
+ printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pstat" "ac_cv_func_pstat"
+if test "x$ac_cv_func_pstat" = xyes
+then :
+ printf "%s\n" "#define HAVE_PSTAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "raise" "ac_cv_func_raise"
+if test "x$ac_cv_func_raise" = xyes
+then :
+ printf "%s\n" "#define HAVE_RAISE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readpassphrase" "ac_cv_func_readpassphrase"
+if test "x$ac_cv_func_readpassphrase" = xyes
+then :
+ printf "%s\n" "#define HAVE_READPASSPHRASE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray"
+if test "x$ac_cv_func_reallocarray" = xyes
+then :
+ printf "%s\n" "#define HAVE_REALLOCARRAY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath"
+if test "x$ac_cv_func_realpath" = xyes
+then :
+ printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "recvmsg" "ac_cv_func_recvmsg"
+if test "x$ac_cv_func_recvmsg" = xyes
+then :
+ printf "%s\n" "#define HAVE_RECVMSG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "recallocarray" "ac_cv_func_recallocarray"
+if test "x$ac_cv_func_recallocarray" = xyes
+then :
+ printf "%s\n" "#define HAVE_RECALLOCARRAY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "rresvport_af" "ac_cv_func_rresvport_af"
+if test "x$ac_cv_func_rresvport_af" = xyes
+then :
+ printf "%s\n" "#define HAVE_RRESVPORT_AF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sendmsg" "ac_cv_func_sendmsg"
+if test "x$ac_cv_func_sendmsg" = xyes
+then :
+ printf "%s\n" "#define HAVE_SENDMSG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setdtablesize" "ac_cv_func_setdtablesize"
+if test "x$ac_cv_func_setdtablesize" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETDTABLESIZE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid"
+if test "x$ac_cv_func_setegid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETEGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
+if test "x$ac_cv_func_setenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid"
+if test "x$ac_cv_func_seteuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setgroupent" "ac_cv_func_setgroupent"
+if test "x$ac_cv_func_setgroupent" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETGROUPENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setgroups" "ac_cv_func_setgroups"
+if test "x$ac_cv_func_setgroups" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf"
+if test "x$ac_cv_func_setlinebuf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLINEBUF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlogin" "ac_cv_func_setlogin"
+if test "x$ac_cv_func_setlogin" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLOGIN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setpassent" "ac_cv_func_setpassent"
+if test "x$ac_cv_func_setpassent" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPASSENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setpcred" "ac_cv_func_setpcred"
+if test "x$ac_cv_func_setpcred" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPCRED 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setproctitle" "ac_cv_func_setproctitle"
+if test "x$ac_cv_func_setproctitle" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPROCTITLE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setregid" "ac_cv_func_setregid"
+if test "x$ac_cv_func_setregid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETREGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid"
+if test "x$ac_cv_func_setreuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setrlimit" "ac_cv_func_setrlimit"
+if test "x$ac_cv_func_setrlimit" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRLIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid"
+if test "x$ac_cv_func_setsid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf"
+if test "x$ac_cv_func_setvbuf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
+if test "x$ac_cv_func_sigaction" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigvec" "ac_cv_func_sigvec"
+if test "x$ac_cv_func_sigvec" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGVEC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
+if test "x$ac_cv_func_snprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "socketpair" "ac_cv_func_socketpair"
+if test "x$ac_cv_func_socketpair" = xyes
+then :
+ printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "statfs" "ac_cv_func_statfs"
+if test "x$ac_cv_func_statfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_STATFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs"
+if test "x$ac_cv_func_statvfs" = xyes
+then :
+ printf "%s\n" "#define HAVE_STATVFS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr"
+if test "x$ac_cv_func_strcasestr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCASESTR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
+if test "x$ac_cv_func_strerror" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat"
+if test "x$ac_cv_func_strlcat" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRLCAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy"
+if test "x$ac_cv_func_strlcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strmode" "ac_cv_func_strmode"
+if test "x$ac_cv_func_strmode" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRMODE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup"
+if test "x$ac_cv_func_strndup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen"
+if test "x$ac_cv_func_strnlen" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strnvis" "ac_cv_func_strnvis"
+if test "x$ac_cv_func_strnvis" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNVIS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strptime" "ac_cv_func_strptime"
+if test "x$ac_cv_func_strptime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRPTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal"
+if test "x$ac_cv_func_strsignal" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtonum" "ac_cv_func_strtonum"
+if test "x$ac_cv_func_strtonum" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTONUM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll"
+if test "x$ac_cv_func_strtoll" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull"
+if test "x$ac_cv_func_strtoull" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOULL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "swap32" "ac_cv_func_swap32"
+if test "x$ac_cv_func_swap32" = xyes
+then :
+ printf "%s\n" "#define HAVE_SWAP32 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf"
+if test "x$ac_cv_func_sysconf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tcgetpgrp" "ac_cv_func_tcgetpgrp"
+if test "x$ac_cv_func_tcgetpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCGETPGRP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm"
+if test "x$ac_cv_func_timegm" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "timingsafe_bcmp" "ac_cv_func_timingsafe_bcmp"
+if test "x$ac_cv_func_timingsafe_bcmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMINGSAFE_BCMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "truncate" "ac_cv_func_truncate"
+if test "x$ac_cv_func_truncate" = xyes
+then :
+ printf "%s\n" "#define HAVE_TRUNCATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
+if test "x$ac_cv_func_unsetenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "updwtmpx" "ac_cv_func_updwtmpx"
+if test "x$ac_cv_func_updwtmpx" = xyes
+then :
+ printf "%s\n" "#define HAVE_UPDWTMPX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat"
+if test "x$ac_cv_func_utimensat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "user_from_uid" "ac_cv_func_user_from_uid"
+if test "x$ac_cv_func_user_from_uid" = xyes
+then :
+ printf "%s\n" "#define HAVE_USER_FROM_UID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep"
+if test "x$ac_cv_func_usleep" = xyes
+then :
+ printf "%s\n" "#define HAVE_USLEEP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf"
+if test "x$ac_cv_func_vasprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_VASPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
+if test "x$ac_cv_func_vsnprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid"
+if test "x$ac_cv_func_waitpid" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "warn" "ac_cv_func_warn"
+if test "x$ac_cv_func_warn" = xyes
+then :
+ printf "%s\n" "#define HAVE_WARN 1" >>confdefs.h
+
+fi
+
+
+ac_fn_check_decl "$LINENO" "bzero" "ac_cv_have_decl_bzero" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_bzero" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_BZERO $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "memmem" "ac_cv_have_decl_memmem" "$ac_includes_default"
-if test "x$ac_cv_have_decl_memmem" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_BZERO $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "memmem" "ac_cv_have_decl_memmem" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_memmem" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_MEMMEM $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MEMMEM $ac_have_decl
-_ACEOF
+ac_fn_c_check_func "$LINENO" "mblen" "ac_cv_func_mblen"
+if test "x$ac_cv_func_mblen" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBLEN 1" >>confdefs.h
-for ac_func in mblen mbtowc nl_langinfo wcwidth
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "mbtowc" "ac_cv_func_mbtowc"
+if test "x$ac_cv_func_mbtowc" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBTOWC 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo"
+if test "x$ac_cv_func_nl_langinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth"
+if test "x$ac_cv_func_wcwidth" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCWIDTH 1" >>confdefs.h
-TEST_SSH_UTF8=${TEST_SSH_UTF8:=yes}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for utf8 locale support" >&5
-$as_echo_n "checking for utf8 locale support... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
+fi
-else
+
+TEST_SSH_UTF8=${TEST_SSH_UTF8:=yes}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for utf8 locale support" >&5
+printf %s "checking for utf8 locale support... " >&6; }
+if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming yes" >&2;}
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12032,7 +13573,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
char *loc = setlocale(LC_CTYPE, "en_US.UTF-8");
@@ -12044,12 +13585,13 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
TEST_SSH_UTF8=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -12061,25 +13603,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ctype.h>
int
-main ()
+main (void)
{
return (isblank('a'));
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-$as_echo "#define HAVE_ISBLANK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ISBLANK 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
disable_pkcs11=
# Check whether --enable-pkcs11 was given.
-if test "${enable_pkcs11+set}" = set; then :
+if test ${enable_pkcs11+y}
+then :
enableval=$enable_pkcs11;
if test "x$enableval" = "xno" ; then
disable_pkcs11=1
@@ -12091,7 +13635,8 @@ fi
disable_sk=
# Check whether --enable-security-key was given.
-if test "${enable_security_key+set}" = set; then :
+if test ${enable_security_key+y}
+then :
enableval=$enable_security_key;
if test "x$enableval" = "xno" ; then
disable_sk=1
@@ -12103,22 +13648,19 @@ fi
enable_sk_internal=
# Check whether --with-security-key-builtin was given.
-if test "${with_security_key_builtin+set}" = set; then :
- withval=$with_security_key_builtin;
- if test "x$withval" != "xno" ; then
- enable_sk_internal=yes
- fi
-
+if test ${with_security_key_builtin+y}
+then :
+ withval=$with_security_key_builtin; enable_sk_internal=$withval
fi
-test "x$disable_sk" != "x" && enable_sk_internal=""
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
-$as_echo_n "checking for library containing dlopen... " >&6; }
-if ${ac_cv_search_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+printf %s "checking for library containing dlopen... " >&6; }
+if test ${ac_cv_search_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12126,78 +13668,76 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-for ac_lib in '' dl; do
+for ac_lib in '' dl
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_dlopen=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_dlopen+:} false; then :
+ if test ${ac_cv_search_dlopen+y}
+then :
break
fi
done
-if ${ac_cv_search_dlopen+:} false; then :
+if test ${ac_cv_search_dlopen+y}
+then :
-else
+else $as_nop
ac_cv_search_dlopen=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
-$as_echo "$ac_cv_search_dlopen" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+printf "%s\n" "$ac_cv_search_dlopen" >&6; }
ac_res=$ac_cv_search_dlopen
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
-for ac_func in dlopen
-do :
- ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLOPEN 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h
fi
-done
-ac_fn_c_check_decl "$LINENO" "RTLD_NOW" "ac_cv_have_decl_RTLD_NOW" "#include <dlfcn.h>
-"
-if test "x$ac_cv_have_decl_RTLD_NOW" = xyes; then :
+ac_fn_check_decl "$LINENO" "RTLD_NOW" "ac_cv_have_decl_RTLD_NOW" "#include <dlfcn.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_RTLD_NOW" = xyes
+then :
fi
-
# IRIX has a const char return value for gai_strerror()
-for ac_func in gai_strerror
+
+ for ac_func in gai_strerror
do :
ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
-if test "x$ac_cv_func_gai_strerror" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GAI_STRERROR 1
-_ACEOF
+if test "x$ac_cv_func_gai_strerror" = xyes
+then :
+ printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h
- $as_echo "#define HAVE_GAI_STRERROR 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_GAI_STRERROR 1" >>confdefs.h
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12209,7 +13749,7 @@ _ACEOF
const char *gai_strerror(int);
int
-main ()
+main (void)
{
char *str;
@@ -12219,22 +13759,24 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-$as_echo "#define HAVE_CONST_GAI_STRERROR_PROTO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CONST_GAI_STRERROR_PROTO 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-done
+done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5
-$as_echo_n "checking for library containing nanosleep... " >&6; }
-if ${ac_cv_search_nanosleep+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing nanosleep" >&5
+printf %s "checking for library containing nanosleep... " >&6; }
+if test ${ac_cv_search_nanosleep+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12242,58 +13784,61 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char nanosleep ();
int
-main ()
+main (void)
{
return nanosleep ();
;
return 0;
}
_ACEOF
-for ac_lib in '' rt posix4; do
+for ac_lib in '' rt posix4
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_nanosleep=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_nanosleep+:} false; then :
+ if test ${ac_cv_search_nanosleep+y}
+then :
break
fi
done
-if ${ac_cv_search_nanosleep+:} false; then :
+if test ${ac_cv_search_nanosleep+y}
+then :
-else
+else $as_nop
ac_cv_search_nanosleep=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5
-$as_echo "$ac_cv_search_nanosleep" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nanosleep" >&5
+printf "%s\n" "$ac_cv_search_nanosleep" >&6; }
ac_res=$ac_cv_search_nanosleep
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-$as_echo "#define HAVE_NANOSLEEP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
-$as_echo_n "checking for library containing clock_gettime... " >&6; }
-if ${ac_cv_search_clock_gettime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+printf %s "checking for library containing clock_gettime... " >&6; }
+if test ${ac_cv_search_clock_gettime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12301,163 +13846,151 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char clock_gettime ();
int
-main ()
+main (void)
{
return clock_gettime ();
;
return 0;
}
_ACEOF
-for ac_lib in '' rt; do
+for ac_lib in '' rt
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_clock_gettime=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_clock_gettime+:} false; then :
+ if test ${ac_cv_search_clock_gettime+y}
+then :
break
fi
done
-if ${ac_cv_search_clock_gettime+:} false; then :
+if test ${ac_cv_search_clock_gettime+y}
+then :
-else
+else $as_nop
ac_cv_search_clock_gettime=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
-$as_echo "$ac_cv_search_clock_gettime" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
+printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
ac_res=$ac_cv_search_clock_gettime
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
fi
-ac_fn_c_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" " #include <time.h>
+ac_fn_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" " #include <time.h>
-"
-if test "x$ac_cv_have_decl_localtime_r" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_localtime_r" = xyes
+then :
-else
+else $as_nop
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
unset ac_cv_have_decl_localtime_r
- ac_fn_c_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" " #include <time.h>
+ ac_fn_check_decl "$LINENO" "localtime_r" "ac_cv_have_decl_localtime_r" " #include <time.h>
-"
-if test "x$ac_cv_have_decl_localtime_r" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_localtime_r" = xyes
+then :
-else
+else $as_nop
CPPFLAGS="$saved_CPPFLAGS"
fi
-
fi
-
-ac_fn_c_check_decl "$LINENO" "strsep" "ac_cv_have_decl_strsep" "
+ac_fn_check_decl "$LINENO" "strsep" "ac_cv_have_decl_strsep" "
#ifdef HAVE_STRING_H
# include <string.h>
#endif
-"
-if test "x$ac_cv_have_decl_strsep" = xyes; then :
- for ac_func in strsep
-do :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strsep" = xyes
+then :
ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep"
-if test "x$ac_cv_func_strsep" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRSEP 1
-_ACEOF
+if test "x$ac_cv_func_strsep" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRSEP 1" >>confdefs.h
fi
-done
fi
+ac_fn_check_decl "$LINENO" "tcsendbreak" "ac_cv_have_decl_tcsendbreak" "#include <termios.h>
-ac_fn_c_check_decl "$LINENO" "tcsendbreak" "ac_cv_have_decl_tcsendbreak" "#include <termios.h>
-
-"
-if test "x$ac_cv_have_decl_tcsendbreak" = xyes; then :
- $as_echo "#define HAVE_TCSENDBREAK 1" >>confdefs.h
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_tcsendbreak" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCSENDBREAK 1" >>confdefs.h
-else
- for ac_func in tcsendbreak
-do :
+else $as_nop
ac_fn_c_check_func "$LINENO" "tcsendbreak" "ac_cv_func_tcsendbreak"
-if test "x$ac_cv_func_tcsendbreak" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_TCSENDBREAK 1
-_ACEOF
+if test "x$ac_cv_func_tcsendbreak" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCSENDBREAK 1" >>confdefs.h
fi
-done
fi
-
-ac_fn_c_check_decl "$LINENO" "h_errno" "ac_cv_have_decl_h_errno" "#include <netdb.h>
-"
-if test "x$ac_cv_have_decl_h_errno" = xyes; then :
+ac_fn_check_decl "$LINENO" "h_errno" "ac_cv_have_decl_h_errno" "#include <netdb.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_h_errno" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_H_ERRNO $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_H_ERRNO $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "SHUT_RD" "ac_cv_have_decl_SHUT_RD" "
+ac_fn_check_decl "$LINENO" "SHUT_RD" "ac_cv_have_decl_SHUT_RD" "
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
-"
-if test "x$ac_cv_have_decl_SHUT_RD" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SHUT_RD" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SHUT_RD $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "getpeereid" "ac_cv_have_decl_getpeereid" "
+printf "%s\n" "#define HAVE_DECL_SHUT_RD $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "getpeereid" "ac_cv_have_decl_getpeereid" "
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
-"
-if test "x$ac_cv_have_decl_getpeereid" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getpeereid" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETPEEREID $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_GETPEEREID $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "O_NONBLOCK" "ac_cv_have_decl_O_NONBLOCK" "
+ac_fn_check_decl "$LINENO" "O_NONBLOCK" "ac_cv_have_decl_O_NONBLOCK" "
#include <sys/types.h>
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
@@ -12466,98 +13999,98 @@ ac_fn_c_check_decl "$LINENO" "O_NONBLOCK" "ac_cv_have_decl_O_NONBLOCK" "
# include <fcntl.h>
#endif
-"
-if test "x$ac_cv_have_decl_O_NONBLOCK" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_O_NONBLOCK" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_O_NONBLOCK $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_O_NONBLOCK $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "ftruncate" "ac_cv_have_decl_ftruncate" "
+ac_fn_check_decl "$LINENO" "ftruncate" "ac_cv_have_decl_ftruncate" "
#include <sys/types.h>
#include <unistd.h>
-"
-if test "x$ac_cv_have_decl_ftruncate" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ftruncate" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_FTRUNCATE $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "getentropy" "ac_cv_have_decl_getentropy" "
+#include <sys/types.h>
+#include <unistd.h>
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FTRUNCATE $ac_have_decl
-_ACEOF
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getentropy" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_GETENTROPY $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "readv" "ac_cv_have_decl_readv" "
+ac_fn_check_decl "$LINENO" "readv" "ac_cv_have_decl_readv" "
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
-"
-if test "x$ac_cv_have_decl_readv" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_readv" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_READV $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "writev" "ac_cv_have_decl_writev" "
+printf "%s\n" "#define HAVE_DECL_READV $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "writev" "ac_cv_have_decl_writev" "
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
-"
-if test "x$ac_cv_have_decl_writev" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_writev" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_WRITEV $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_WRITEV $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "MAXSYMLINKS" "ac_cv_have_decl_MAXSYMLINKS" "
+ac_fn_check_decl "$LINENO" "MAXSYMLINKS" "ac_cv_have_decl_MAXSYMLINKS" "
#include <sys/param.h>
-"
-if test "x$ac_cv_have_decl_MAXSYMLINKS" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_MAXSYMLINKS" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MAXSYMLINKS $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_MAXSYMLINKS $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "offsetof" "ac_cv_have_decl_offsetof" "
+ac_fn_check_decl "$LINENO" "offsetof" "ac_cv_have_decl_offsetof" "
#include <stddef.h>
-"
-if test "x$ac_cv_have_decl_offsetof" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_offsetof" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_OFFSETOF $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_OFFSETOF $ac_have_decl" >>confdefs.h
# extra bits for select(2)
-ac_fn_c_check_decl "$LINENO" "howmany" "ac_cv_have_decl_howmany" "
+ac_fn_check_decl "$LINENO" "howmany" "ac_cv_have_decl_howmany" "
#include <sys/param.h>
#include <sys/types.h>
#ifdef HAVE_SYS_SYSMACROS_H
@@ -12573,17 +14106,15 @@ ac_fn_c_check_decl "$LINENO" "howmany" "ac_cv_have_decl_howmany" "
#include <unistd.h>
#endif
-"
-if test "x$ac_cv_have_decl_howmany" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_howmany" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_HOWMANY $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "NFDBITS" "ac_cv_have_decl_NFDBITS" "
+printf "%s\n" "#define HAVE_DECL_HOWMANY $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "NFDBITS" "ac_cv_have_decl_NFDBITS" "
#include <sys/param.h>
#include <sys/types.h>
#ifdef HAVE_SYS_SYSMACROS_H
@@ -12599,16 +14130,14 @@ ac_fn_c_check_decl "$LINENO" "NFDBITS" "ac_cv_have_decl_NFDBITS" "
#include <unistd.h>
#endif
-"
-if test "x$ac_cv_have_decl_NFDBITS" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_NFDBITS" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_NFDBITS $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_NFDBITS $ac_have_decl" >>confdefs.h
ac_fn_c_check_type "$LINENO" "fd_mask" "ac_cv_type_fd_mask" "
#include <sys/param.h>
@@ -12624,31 +14153,31 @@ ac_fn_c_check_type "$LINENO" "fd_mask" "ac_cv_type_fd_mask" "
#endif
"
-if test "x$ac_cv_type_fd_mask" = xyes; then :
+if test "x$ac_cv_type_fd_mask" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_FD_MASK 1
-_ACEOF
+printf "%s\n" "#define HAVE_FD_MASK 1" >>confdefs.h
fi
-for ac_func in setresuid
+
+ for ac_func in setresuid
do :
ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid"
-if test "x$ac_cv_func_setresuid" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETRESUID 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if setresuid seems to work" >&5
-$as_echo_n "checking if setresuid seems to work... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking setresuid" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking setresuid" >&2;}
-
-else
+if test "x$ac_cv_func_setresuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setresuid seems to work" >&5
+printf %s "checking if setresuid seems to work... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking setresuid" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking setresuid" >&2;}
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12656,7 +14185,7 @@ else
#include <errno.h>
int
-main ()
+main (void)
{
errno=0;
@@ -12670,15 +14199,16 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
-$as_echo "#define BROKEN_SETRESUID 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SETRESUID 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not implemented" >&5
-$as_echo "not implemented" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not implemented" >&5
+printf "%s\n" "not implemented" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -12686,24 +14216,25 @@ fi
fi
+
done
-for ac_func in setresgid
+ for ac_func in setresgid
do :
ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid"
-if test "x$ac_cv_func_setresgid" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETRESGID 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if setresgid seems to work" >&5
-$as_echo_n "checking if setresgid seems to work... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking setresuid" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking setresuid" >&2;}
-
-else
+if test "x$ac_cv_func_setresgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setresgid seems to work" >&5
+printf %s "checking if setresgid seems to work... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking setresuid" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking setresuid" >&2;}
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12711,7 +14242,7 @@ else
#include <errno.h>
int
-main ()
+main (void)
{
errno=0;
@@ -12725,15 +14256,16 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
-$as_echo "#define BROKEN_SETRESGID 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SETRESGID 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not implemented" >&5
-$as_echo "not implemented" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not implemented" >&5
+printf "%s\n" "not implemented" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -12741,16 +14273,17 @@ fi
fi
-done
+done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fflush(NULL)" >&5
-$as_echo_n "checking for working fflush(NULL)... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming working" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming working" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fflush(NULL)" >&5
+printf %s "checking for working fflush(NULL)... " >&6; }
+if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming working" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming working" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12758,21 +14291,22 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
fflush(NULL); exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define FFLUSH_NULL_BUG 1" >>confdefs.h
+printf "%s\n" "#define FFLUSH_NULL_BUG 1" >>confdefs.h
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -12780,88 +14314,140 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
-for ac_func in gettimeofday time
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
+if test "x$ac_cv_func_gettimeofday" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "time" "ac_cv_func_time"
+if test "x$ac_cv_func_time" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIME 1" >>confdefs.h
-for ac_func in endutent getutent getutid getutline pututline setutent
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ac_fn_c_check_func "$LINENO" "endutent" "ac_cv_func_endutent"
+if test "x$ac_cv_func_endutent" = xyes
+then :
+ printf "%s\n" "#define HAVE_ENDUTENT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "getutent" "ac_cv_func_getutent"
+if test "x$ac_cv_func_getutent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTENT 1" >>confdefs.h
-for ac_func in utmpname
-do :
- ac_fn_c_check_func "$LINENO" "utmpname" "ac_cv_func_utmpname"
-if test "x$ac_cv_func_utmpname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UTMPNAME 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "getutid" "ac_cv_func_getutid"
+if test "x$ac_cv_func_getutid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTID 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "getutline" "ac_cv_func_getutline"
+if test "x$ac_cv_func_getutline" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTLINE 1" >>confdefs.h
-for ac_func in endutxent getutxent getutxid getutxline getutxuser pututxline
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "pututline" "ac_cv_func_pututline"
+if test "x$ac_cv_func_pututline" = xyes
+then :
+ printf "%s\n" "#define HAVE_PUTUTLINE 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "setutent" "ac_cv_func_setutent"
+if test "x$ac_cv_func_setutent" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETUTENT 1" >>confdefs.h
-for ac_func in setutxdb setutxent utmpxname
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+
+ac_fn_c_check_func "$LINENO" "utmpname" "ac_cv_func_utmpname"
+if test "x$ac_cv_func_utmpname" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTMPNAME 1" >>confdefs.h
fi
-done
-for ac_func in getlastlogxbyname
-do :
- ac_fn_c_check_func "$LINENO" "getlastlogxbyname" "ac_cv_func_getlastlogxbyname"
-if test "x$ac_cv_func_getlastlogxbyname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETLASTLOGXBYNAME 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "endutxent" "ac_cv_func_endutxent"
+if test "x$ac_cv_func_endutxent" = xyes
+then :
+ printf "%s\n" "#define HAVE_ENDUTXENT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "getutxent" "ac_cv_func_getutxent"
+if test "x$ac_cv_func_getutxent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTXENT 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "getutxid" "ac_cv_func_getutxid"
+if test "x$ac_cv_func_getutxid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTXID 1" >>confdefs.h
-ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon"
-if test "x$ac_cv_func_daemon" = xyes; then :
+fi
+ac_fn_c_check_func "$LINENO" "getutxline" "ac_cv_func_getutxline"
+if test "x$ac_cv_func_getutxline" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTXLINE 1" >>confdefs.h
-$as_echo "#define HAVE_DAEMON 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "getutxuser" "ac_cv_func_getutxuser"
+if test "x$ac_cv_func_getutxuser" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUTXUSER 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for daemon in -lbsd" >&5
-$as_echo_n "checking for daemon in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_daemon+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+ac_fn_c_check_func "$LINENO" "pututxline" "ac_cv_func_pututxline"
+if test "x$ac_cv_func_pututxline" = xyes
+then :
+ printf "%s\n" "#define HAVE_PUTUTXLINE 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "setutxdb" "ac_cv_func_setutxdb"
+if test "x$ac_cv_func_setutxdb" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETUTXDB 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setutxent" "ac_cv_func_setutxent"
+if test "x$ac_cv_func_setutxent" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETUTXENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utmpxname" "ac_cv_func_utmpxname"
+if test "x$ac_cv_func_utmpxname" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTMPXNAME 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "getlastlogxbyname" "ac_cv_func_getlastlogxbyname"
+if test "x$ac_cv_func_getlastlogxbyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLASTLOGXBYNAME 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "daemon" "ac_cv_func_daemon"
+if test "x$ac_cv_func_daemon" = xyes
+then :
+
+printf "%s\n" "#define HAVE_DAEMON 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for daemon in -lbsd" >&5
+printf %s "checking for daemon in -lbsd... " >&6; }
+if test ${ac_cv_lib_bsd_daemon+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12870,31 +14456,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char daemon ();
int
-main ()
+main (void)
{
return daemon ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bsd_daemon=yes
-else
+else $as_nop
ac_cv_lib_bsd_daemon=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_daemon" >&5
-$as_echo "$ac_cv_lib_bsd_daemon" >&6; }
-if test "x$ac_cv_lib_bsd_daemon" = xyes; then :
- LIBS="$LIBS -lbsd"; $as_echo "#define HAVE_DAEMON 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_daemon" >&5
+printf "%s\n" "$ac_cv_lib_bsd_daemon" >&6; }
+if test "x$ac_cv_lib_bsd_daemon" = xyes
+then :
+ LIBS="$LIBS -lbsd"; printf "%s\n" "#define HAVE_DAEMON 1" >>confdefs.h
fi
@@ -12903,16 +14488,18 @@ fi
ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
-
-$as_echo "#define HAVE_GETPAGESIZE 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize in -lucb" >&5
-$as_echo_n "checking for getpagesize in -lucb... " >&6; }
-if ${ac_cv_lib_ucb_getpagesize+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_getpagesize" = xyes
+then :
+
+printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h
+
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpagesize in -lucb" >&5
+printf %s "checking for getpagesize in -lucb... " >&6; }
+if test ${ac_cv_lib_ucb_getpagesize+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lucb $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12921,31 +14508,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getpagesize ();
int
-main ()
+main (void)
{
return getpagesize ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ucb_getpagesize=yes
-else
+else $as_nop
ac_cv_lib_ucb_getpagesize=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ucb_getpagesize" >&5
-$as_echo "$ac_cv_lib_ucb_getpagesize" >&6; }
-if test "x$ac_cv_lib_ucb_getpagesize" = xyes; then :
- LIBS="$LIBS -lucb"; $as_echo "#define HAVE_GETPAGESIZE 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ucb_getpagesize" >&5
+printf "%s\n" "$ac_cv_lib_ucb_getpagesize" >&6; }
+if test "x$ac_cv_lib_ucb_getpagesize" = xyes
+then :
+ LIBS="$LIBS -lucb"; printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h
fi
@@ -12955,13 +14541,14 @@ fi
# Check for broken snprintf
if test "x$ac_cv_func_snprintf" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf correctly terminates long strings" >&5
-$as_echo_n "checking whether snprintf correctly terminates long strings... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
-$as_echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
-
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether snprintf correctly terminates long strings" >&5
+printf %s "checking whether snprintf correctly terminates long strings... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12969,7 +14556,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
char b[5];
@@ -12980,18 +14567,19 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SNPRINTF 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&5
-$as_echo "$as_me: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&5
+printf "%s\n" "$as_me: WARNING: ****** Your snprintf() function is broken, complain to your vendor" >&2;}
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13001,13 +14589,14 @@ fi
fi
if test "x$ac_cv_func_snprintf" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf understands %zu" >&5
-$as_echo_n "checking whether snprintf understands %zu... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
-$as_echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
-
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether snprintf understands %zu" >&5
+printf %s "checking whether snprintf understands %zu... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13017,7 +14606,7 @@ else
#include <string.h>
int
-main ()
+main (void)
{
size_t a = 1, b = 2;
@@ -13029,15 +14618,16 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SNPRINTF 1" >>confdefs.h
fi
@@ -13050,13 +14640,14 @@ fi
# We depend on vsnprintf returning the right thing on overflow: the
# number of characters it tried to create (as per SUSv3)
if test "x$ac_cv_func_vsnprintf" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf returns correct values on overflow" >&5
-$as_echo_n "checking whether vsnprintf returns correct values on overflow... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working vsnprintf()" >&5
-$as_echo "$as_me: WARNING: cross compiling: Assuming working vsnprintf()" >&2;}
-
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf returns correct values on overflow" >&5
+printf %s "checking whether vsnprintf returns correct values on overflow... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working vsnprintf()" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: Assuming working vsnprintf()" >&2;}
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13076,7 +14667,7 @@ int x_snprintf(char *str, size_t count, const char *fmt, ...)
}
int
-main ()
+main (void)
{
char x[1];
@@ -13090,18 +14681,19 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_SNPRINTF 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&5
-$as_echo "$as_me: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&5
+printf "%s\n" "$as_me: WARNING: ****** Your vsnprintf() function is broken, complain to your vendor" >&2;}
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13113,8 +14705,8 @@ fi
# On systems where [v]snprintf is broken, but is declared in stdio,
# check that the fmt argument is const char * or just char *.
# This is only useful for when BROKEN_SNPRINTF
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf can declare const char *fmt" >&5
-$as_echo_n "checking whether snprintf can declare const char *fmt... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether snprintf can declare const char *fmt" >&5
+printf %s "checking whether snprintf can declare const char *fmt... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13122,7 +14714,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int snprintf(char *a, size_t b, const char *c, ...) { return 0; }
int
-main ()
+main (void)
{
snprintf(0, 0, 0);
@@ -13131,64 +14723,67 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define SNPRINTF_CONST const" >>confdefs.h
+printf "%s\n" "#define SNPRINTF_CONST const" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define SNPRINTF_CONST /* not const */" >>confdefs.h
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define SNPRINTF_CONST /* not const */" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Check for missing getpeereid (or equiv) support
NO_PEERCHECK=""
if test "x$ac_cv_func_getpeereid" != "xyes" -a "x$ac_cv_func_getpeerucred" != "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system supports SO_PEERCRED getsockopt" >&5
-$as_echo_n "checking whether system supports SO_PEERCRED getsockopt... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether system supports SO_PEERCRED getsockopt" >&5
+printf %s "checking whether system supports SO_PEERCRED getsockopt... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <sys/socket.h>
int
-main ()
+main (void)
{
int i = SO_PEERCRED;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define HAVE_SO_PEERCRED 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SO_PEERCRED 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
NO_PEERCHECK=1
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test ! -z "$check_for_openpty_ctty_bug"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if openpty correctly handles controlling tty" >&5
-$as_echo_n "checking if openpty correctly handles controlling tty... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if openpty correctly handles controlling tty" >&5
+printf %s "checking if openpty correctly handles controlling tty... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
-$as_echo "cross-compiling, assuming yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
+printf "%s\n" "cross-compiling, assuming yes" >&6; }
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13200,7 +14795,7 @@ else
#include <sys/wait.h>
int
-main ()
+main (void)
{
pid_t pid;
@@ -13230,16 +14825,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define SSHD_ACQUIRES_CTTY 1" >>confdefs.h
fi
@@ -13251,15 +14847,16 @@ fi
if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
test "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5
-$as_echo_n "checking if getaddrinfo seems to work... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5
+printf %s "checking if getaddrinfo seems to work... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
-$as_echo "cross-compiling, assuming yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming yes" >&5
+printf "%s\n" "cross-compiling, assuming yes" >&6; }
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13273,7 +14870,7 @@ else
#define TEST_PORT "2222"
int
-main ()
+main (void)
{
int err, sock;
@@ -13322,16 +14919,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define BROKEN_GETADDRINFO 1" >>confdefs.h
fi
@@ -13343,15 +14941,16 @@ fi
if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
test "x$check_for_aix_broken_getaddrinfo" = "x1"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5
-$as_echo_n "checking if getaddrinfo seems to work... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5
+printf %s "checking if getaddrinfo seems to work... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming no" >&5
-$as_echo "cross-compiling, assuming no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cross-compiling, assuming no" >&5
+printf "%s\n" "cross-compiling, assuming no" >&6; }
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13365,7 +14964,7 @@ else
#define TEST_PORT "2222"
int
-main ()
+main (void)
{
int err, sock;
@@ -13402,19 +15001,20 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define AIX_GETNAMEINFO_HACK 1" >>confdefs.h
+printf "%s\n" "#define AIX_GETNAMEINFO_HACK 1" >>confdefs.h
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define BROKEN_GETADDRINFO 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define BROKEN_GETADDRINFO 1" >>confdefs.h
fi
@@ -13425,25 +15025,23 @@ fi
fi
if test "x$ac_cv_func_getaddrinfo" = "xyes"; then
- ac_fn_c_check_decl "$LINENO" "AI_NUMERICSERV" "ac_cv_have_decl_AI_NUMERICSERV" "#include <sys/types.h>
+ ac_fn_check_decl "$LINENO" "AI_NUMERICSERV" "ac_cv_have_decl_AI_NUMERICSERV" "#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
-"
-if test "x$ac_cv_have_decl_AI_NUMERICSERV" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_AI_NUMERICSERV" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AI_NUMERICSERV $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_AI_NUMERICSERV $ac_have_decl" >>confdefs.h
fi
if test "x$check_for_conflicting_getspnam" = "x1"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for conflicting getspnam in shadow.h" >&5
-$as_echo_n "checking for conflicting getspnam in shadow.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for conflicting getspnam in shadow.h" >&5
+printf %s "checking for conflicting getspnam in shadow.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13451,42 +15049,44 @@ $as_echo_n "checking for conflicting getspnam in shadow.h... " >&6; }
#include <stdlib.h>
int
-main ()
+main (void)
{
exit(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define GETSPNAM_CONFLICTING_DEFS 1" >>confdefs.h
+printf "%s\n" "#define GETSPNAM_CONFLICTING_DEFS 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test "x$ac_cv_func_strnvis" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strnvis" >&5
-$as_echo_n "checking for working strnvis... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming broken" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming broken" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strnvis" >&5
+printf %s "checking for working strnvis... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming broken" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming broken" >&2;}
-$as_echo "#define BROKEN_STRNVIS 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_STRNVIS 1" >>confdefs.h
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13498,7 +15098,7 @@ else
static void sighandler(int sig) { _exit(1); }
int
-main ()
+main (void)
{
char dst[16];
@@ -13512,14 +15112,15 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define BROKEN_STRNVIS 1" >>confdefs.h
+printf "%s\n" "#define BROKEN_STRNVIS 1" >>confdefs.h
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13528,13 +15129,14 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if SA_RESTARTed signals interrupt select()" >&5
-$as_echo_n "checking if SA_RESTARTed signals interrupt select()... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if SA_RESTARTed signals interrupt select()" >&5
+printf %s "checking if SA_RESTARTed signals interrupt select()... " >&6; }
+if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming yes" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13549,7 +15151,7 @@ else
static void sighandler(int sig) { }
int
-main ()
+main (void)
{
int r;
@@ -13576,14 +15178,15 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define NO_SA_RESTART 1" >>confdefs.h
+printf "%s\n" "#define NO_SA_RESTART 1" >>confdefs.h
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13591,53 +15194,55 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
-for ac_func in getpgrp
+
+ for ac_func in getpgrp
do :
ac_fn_c_check_func "$LINENO" "getpgrp" "ac_cv_func_getpgrp"
-if test "x$ac_cv_func_getpgrp" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPGRP 1
-_ACEOF
+if test "x$ac_cv_func_getpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPGRP 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpgrp accepts zero args" >&5
-$as_echo_n "checking if getpgrp accepts zero args... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpgrp accepts zero args" >&5
+printf %s "checking if getpgrp accepts zero args... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
getpgrp();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
+printf "%s\n" "#define GETPGRP_VOID 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define GETPGRP_VOID 0" >>confdefs.h
+printf "%s\n" "#define GETPGRP_VOID 0" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-done
+done
# Search for OpenSSL
saved_CPPFLAGS="$CPPFLAGS"
saved_LDFLAGS="$LDFLAGS"
# Check whether --with-ssl-dir was given.
-if test "${with_ssl_dir+set}" = set; then :
+if test ${with_ssl_dir+y}
+then :
withval=$with_ssl_dir;
if test "x$openssl" = "xno" ; then
as_fn_error $? "cannot use --with-ssl-dir when OpenSSL disabled" "$LINENO" 5
@@ -13673,7 +15278,8 @@ fi
# Check whether --with-openssl-header-check was given.
-if test "${with_openssl_header_check+set}" = set; then :
+if test ${with_openssl_header_check+y}
+then :
withval=$with_openssl_header_check;
if test "x$withval" = "xno" ; then
openssl_check_nonfatal=1
@@ -13686,7 +15292,8 @@ fi
openssl_engine=no
# Check whether --with-ssl-engine was given.
-if test "${with_ssl_engine+set}" = set; then :
+if test ${with_ssl_engine+y}
+then :
withval=$with_ssl_engine;
if test "x$withval" != "xno" ; then
if test "x$openssl" = "xno" ; then
@@ -13699,52 +15306,53 @@ if test "${with_ssl_engine+set}" = set; then :
fi
+nocrypto_saved_LIBS="$LIBS"
if test "x$openssl" = "xyes" ; then
LIBS="-lcrypto $LIBS"
+ CHANNELLIBS="-lcrypto $CHANNELLIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char RAND_add ();
int
-main ()
+main (void)
{
return RAND_add ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
as_fn_error $? "*** working libcrypto not found, check config.log" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- ac_fn_c_check_header_mongrel "$LINENO" "openssl/opensslv.h" "ac_cv_header_openssl_opensslv_h" "$ac_includes_default"
-if test "x$ac_cv_header_openssl_opensslv_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "openssl/opensslv.h" "ac_cv_header_openssl_opensslv_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_opensslv_h" = xyes
+then :
-else
+else $as_nop
as_fn_error $? "*** OpenSSL headers missing - please install first or check config.log ***" "$LINENO" 5
fi
-
# Determine OpenSSL header version
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL header version" >&5
-$as_echo_n "checking OpenSSL header version... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking OpenSSL header version" >&5
+printf %s "checking OpenSSL header version... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13755,7 +15363,7 @@ else
#define DATA "conftest.sslincver"
int
-main ()
+main (void)
{
FILE *fd;
@@ -13776,16 +15384,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ssl_header_ver=`cat conftest.sslincver`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssl_header_ver" >&5
-$as_echo "$ssl_header_ver" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ssl_header_ver" >&5
+printf "%s\n" "$ssl_header_ver" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
as_fn_error $? "OpenSSL version header not found." "$LINENO" 5
fi
@@ -13795,29 +15404,31 @@ fi
# Determining OpenSSL library version is version dependent.
- for ac_func in OpenSSL_version OpenSSL_version_num
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "OpenSSL_version" "ac_cv_func_OpenSSL_version"
+if test "x$ac_cv_func_OpenSSL_version" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_VERSION 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "OpenSSL_version_num" "ac_cv_func_OpenSSL_version_num"
+if test "x$ac_cv_func_OpenSSL_version_num" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_VERSION_NUM 1" >>confdefs.h
fi
-done
# Determine OpenSSL library version
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking OpenSSL library version" >&5
-$as_echo_n "checking OpenSSL library version... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking OpenSSL library version" >&5
+printf %s "checking OpenSSL library version... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13829,7 +15440,7 @@ else
#define DATA "conftest.ssllibver"
int
-main ()
+main (void)
{
FILE *fd;
@@ -13858,7 +15469,8 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ssl_library_ver=`cat conftest.ssllibver`
# Check version is supported.
@@ -13873,19 +15485,25 @@ if ac_fn_c_try_run "$LINENO"; then :
;;
101*) ;; # 1.1.x
200*) ;; # LibreSSL
- 300*) ;; # OpenSSL 3
- 301*) ;; # OpenSSL development branch.
+ 300*)
+ # OpenSSL 3; we use the 1.1x API
+ CPPFLAGS="$CPPFLAGS -DOPENSSL_API_COMPAT=0x10100000L"
+ ;;
+ 301*)
+ # OpenSSL development branch; request 1.1x API
+ CPPFLAGS="$CPPFLAGS -DOPENSSL_API_COMPAT=0x10100000L"
+ ;;
*)
as_fn_error $? "Unknown/unsupported OpenSSL version (\"$ssl_library_ver\")" "$LINENO" 5
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssl_library_ver" >&5
-$as_echo "$ssl_library_ver" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ssl_library_ver" >&5
+printf "%s\n" "$ssl_library_ver" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
as_fn_error $? "OpenSSL library not found." "$LINENO" 5
fi
@@ -13894,16 +15512,26 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
+ case "$host" in
+ x86_64-*)
+ case "$ssl_library_ver" in
+ 3000004*)
+ as_fn_error $? "OpenSSL 3.0.4 has a potential RCE in its RSA implementation (CVE-2022-2274)" "$LINENO" 5
+ ;;
+ esac
+ esac
+
# Sanity check OpenSSL headers
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's headers match the library" >&5
-$as_echo_n "checking whether OpenSSL's headers match the library... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's headers match the library" >&5
+printf %s "checking whether OpenSSL's headers match the library... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13913,7 +15541,7 @@ else
#include <openssl/crypto.h>
int
-main ()
+main (void)
{
#ifndef HAVE_OPENSSL_VERSION_NUM
@@ -13925,15 +15553,16 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if test "x$openssl_check_nonfatal" = "x"; then
as_fn_error $? "Your OpenSSL headers do not match your
library. Check config.log for details.
@@ -13942,10 +15571,10 @@ $as_echo "no" >&6; }
Also see contrib/findssl.sh for help identifying header/library mismatches.
" "$LINENO" 5
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your OpenSSL headers do not match your
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your OpenSSL headers do not match your
library. Check config.log for details.
Also see contrib/findssl.sh for help identifying header/library mismatches." >&5
-$as_echo "$as_me: WARNING: Your OpenSSL headers do not match your
+printf "%s\n" "$as_me: WARNING: Your OpenSSL headers do not match your
library. Check config.log for details.
Also see contrib/findssl.sh for help identifying header/library mismatches." >&2;}
fi
@@ -13956,320 +15585,410 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if programs using OpenSSL functions will link" >&5
-$as_echo_n "checking if programs using OpenSSL functions will link... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if programs using OpenSSL functions will link" >&5
+printf %s "checking if programs using OpenSSL functions will link... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <openssl/err.h>
int
-main ()
+main (void)
{
ERR_load_crypto_strings();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- saved_LIBS="$LIBS"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LIBS="$LIBS -ldl"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if programs using OpenSSL need -ldl" >&5
-$as_echo_n "checking if programs using OpenSSL need -ldl... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if programs using OpenSSL need -ldl" >&5
+printf %s "checking if programs using OpenSSL need -ldl... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <openssl/err.h>
int
-main ()
+main (void)
{
ERR_load_crypto_strings();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ CHANNELLIBS="$CHANNELLIBS -ldl"
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- LIBS="$saved_LIBS"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- for ac_func in \
- BN_is_prime_ex \
- DSA_generate_parameters_ex \
- EVP_CIPHER_CTX_ctrl \
- EVP_DigestFinal_ex \
- EVP_DigestInit_ex \
- EVP_MD_CTX_cleanup \
- EVP_MD_CTX_copy_ex \
- EVP_MD_CTX_init \
- HMAC_CTX_init \
- RSA_generate_key_ex \
- RSA_get_default_method \
+ ac_fn_c_check_func "$LINENO" "BN_is_prime_ex" "ac_cv_func_BN_is_prime_ex"
+if test "x$ac_cv_func_BN_is_prime_ex" = xyes
+then :
+ printf "%s\n" "#define HAVE_BN_IS_PRIME_EX 1" >>confdefs.h
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "DES_crypt" "ac_cv_func_DES_crypt"
+if test "x$ac_cv_func_DES_crypt" = xyes
+then :
+ printf "%s\n" "#define HAVE_DES_CRYPT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "DSA_generate_parameters_ex" "ac_cv_func_DSA_generate_parameters_ex"
+if test "x$ac_cv_func_DSA_generate_parameters_ex" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_GENERATE_PARAMETERS_EX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_DigestFinal_ex" "ac_cv_func_EVP_DigestFinal_ex"
+if test "x$ac_cv_func_EVP_DigestFinal_ex" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_DIGESTFINAL_EX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_DigestInit_ex" "ac_cv_func_EVP_DigestInit_ex"
+if test "x$ac_cv_func_EVP_DigestInit_ex" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_DIGESTINIT_EX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_MD_CTX_cleanup" "ac_cv_func_EVP_MD_CTX_cleanup"
+if test "x$ac_cv_func_EVP_MD_CTX_cleanup" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_MD_CTX_CLEANUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_MD_CTX_copy_ex" "ac_cv_func_EVP_MD_CTX_copy_ex"
+if test "x$ac_cv_func_EVP_MD_CTX_copy_ex" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_MD_CTX_COPY_EX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "EVP_MD_CTX_init" "ac_cv_func_EVP_MD_CTX_init"
+if test "x$ac_cv_func_EVP_MD_CTX_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_MD_CTX_INIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "HMAC_CTX_init" "ac_cv_func_HMAC_CTX_init"
+if test "x$ac_cv_func_HMAC_CTX_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_HMAC_CTX_INIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "RSA_generate_key_ex" "ac_cv_func_RSA_generate_key_ex"
+if test "x$ac_cv_func_RSA_generate_key_ex" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_GENERATE_KEY_EX 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "RSA_get_default_method" "ac_cv_func_RSA_get_default_method"
+if test "x$ac_cv_func_RSA_get_default_method" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_GET_DEFAULT_METHOD 1" >>confdefs.h
fi
-done
# OpenSSL_add_all_algorithms may be a macro.
ac_fn_c_check_func "$LINENO" "OpenSSL_add_all_algorithms" "ac_cv_func_OpenSSL_add_all_algorithms"
-if test "x$ac_cv_func_OpenSSL_add_all_algorithms" = xyes; then :
+if test "x$ac_cv_func_OpenSSL_add_all_algorithms" = xyes
+then :
-$as_echo "#define HAVE_OPENSSL_ADD_ALL_ALGORITHMS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_OPENSSL_ADD_ALL_ALGORITHMS 1" >>confdefs.h
-else
- ac_fn_c_check_decl "$LINENO" "OpenSSL_add_all_algorithms" "ac_cv_have_decl_OpenSSL_add_all_algorithms" "#include <openssl/evp.h>
+else $as_nop
+ ac_fn_check_decl "$LINENO" "OpenSSL_add_all_algorithms" "ac_cv_have_decl_OpenSSL_add_all_algorithms" "#include <openssl/evp.h>
-"
-if test "x$ac_cv_have_decl_OpenSSL_add_all_algorithms" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_OpenSSL_add_all_algorithms" = xyes
+then :
-$as_echo "#define HAVE_OPENSSL_ADD_ALL_ALGORITHMS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_OPENSSL_ADD_ALL_ALGORITHMS 1" >>confdefs.h
fi
-
fi
# LibreSSL/OpenSSL 1.1x API
- for ac_func in \
- OPENSSL_init_crypto \
- DH_get0_key \
- DH_get0_pqg \
- DH_set0_key \
- DH_set_length \
- DH_set0_pqg \
- DSA_get0_key \
- DSA_get0_pqg \
- DSA_set0_key \
- DSA_set0_pqg \
- DSA_SIG_get0 \
- DSA_SIG_set0 \
- ECDSA_SIG_get0 \
- ECDSA_SIG_set0 \
- EVP_CIPHER_CTX_iv \
- EVP_CIPHER_CTX_iv_noconst \
- EVP_CIPHER_CTX_get_iv \
- EVP_CIPHER_CTX_get_updated_iv \
- EVP_CIPHER_CTX_set_iv \
- RSA_get0_crt_params \
- RSA_get0_factors \
- RSA_get0_key \
- RSA_set0_crt_params \
- RSA_set0_factors \
- RSA_set0_key \
- RSA_meth_free \
- RSA_meth_dup \
- RSA_meth_set1_name \
- RSA_meth_get_finish \
- RSA_meth_set_priv_enc \
- RSA_meth_set_priv_dec \
- RSA_meth_set_finish \
- EVP_PKEY_get0_RSA \
- EVP_MD_CTX_new \
- EVP_MD_CTX_free \
- EVP_chacha20 \
+ ac_fn_c_check_func "$LINENO" "OPENSSL_init_crypto" "ac_cv_func_OPENSSL_init_crypto"
+if test "x$ac_cv_func_OPENSSL_init_crypto" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENSSL_INIT_CRYPTO 1" >>confdefs.h
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "DH_get0_key" "ac_cv_func_DH_get0_key"
+if test "x$ac_cv_func_DH_get0_key" = xyes
+then :
+ printf "%s\n" "#define HAVE_DH_GET0_KEY 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "DH_get0_pqg" "ac_cv_func_DH_get0_pqg"
+if test "x$ac_cv_func_DH_get0_pqg" = xyes
+then :
+ printf "%s\n" "#define HAVE_DH_GET0_PQG 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "DH_set0_key" "ac_cv_func_DH_set0_key"
+if test "x$ac_cv_func_DH_set0_key" = xyes
+then :
+ printf "%s\n" "#define HAVE_DH_SET0_KEY 1" >>confdefs.h
- if test "x$openssl_engine" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL ENGINE support" >&5
-$as_echo_n "checking for OpenSSL ENGINE support... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_func "$LINENO" "DH_set_length" "ac_cv_func_DH_set_length"
+if test "x$ac_cv_func_DH_set_length" = xyes
+then :
+ printf "%s\n" "#define HAVE_DH_SET_LENGTH 1" >>confdefs.h
- #include <openssl/engine.h>
+fi
+ac_fn_c_check_func "$LINENO" "DH_set0_pqg" "ac_cv_func_DH_set0_pqg"
+if test "x$ac_cv_func_DH_set0_pqg" = xyes
+then :
+ printf "%s\n" "#define HAVE_DH_SET0_PQG 1" >>confdefs.h
-int
-main ()
-{
+fi
+ac_fn_c_check_func "$LINENO" "DSA_get0_key" "ac_cv_func_DSA_get0_key"
+if test "x$ac_cv_func_DSA_get0_key" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_GET0_KEY 1" >>confdefs.h
- ENGINE_load_builtin_engines();
- ENGINE_register_all_complete();
+fi
+ac_fn_c_check_func "$LINENO" "DSA_get0_pqg" "ac_cv_func_DSA_get0_pqg"
+if test "x$ac_cv_func_DSA_get0_pqg" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_GET0_PQG 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "DSA_set0_key" "ac_cv_func_DSA_set0_key"
+if test "x$ac_cv_func_DSA_set0_key" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_SET0_KEY 1" >>confdefs.h
-$as_echo "#define USE_OPENSSL_ENGINE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "DSA_set0_pqg" "ac_cv_func_DSA_set0_pqg"
+if test "x$ac_cv_func_DSA_set0_pqg" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_SET0_PQG 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "DSA_SIG_get0" "ac_cv_func_DSA_SIG_get0"
+if test "x$ac_cv_func_DSA_SIG_get0" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_SIG_GET0 1" >>confdefs.h
-else
- as_fn_error $? "OpenSSL ENGINE support not found" "$LINENO" 5
+fi
+ac_fn_c_check_func "$LINENO" "DSA_SIG_set0" "ac_cv_func_DSA_SIG_set0"
+if test "x$ac_cv_func_DSA_SIG_set0" = xyes
+then :
+ printf "%s\n" "#define HAVE_DSA_SIG_SET0 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
+ac_fn_c_check_func "$LINENO" "ECDSA_SIG_get0" "ac_cv_func_ECDSA_SIG_get0"
+if test "x$ac_cv_func_ECDSA_SIG_get0" = xyes
+then :
+ printf "%s\n" "#define HAVE_ECDSA_SIG_GET0 1" >>confdefs.h
- # Check for OpenSSL without EVP_aes_{192,256}_cbc
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has crippled AES support" >&5
-$as_echo_n "checking whether OpenSSL has crippled AES support... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_func "$LINENO" "ECDSA_SIG_set0" "ac_cv_func_ECDSA_SIG_set0"
+if test "x$ac_cv_func_ECDSA_SIG_set0" = xyes
+then :
+ printf "%s\n" "#define HAVE_ECDSA_SIG_SET0 1" >>confdefs.h
- #include <stdlib.h>
- #include <string.h>
- #include <openssl/evp.h>
+fi
+ac_fn_c_check_func "$LINENO" "EVP_CIPHER_CTX_iv" "ac_cv_func_EVP_CIPHER_CTX_iv"
+if test "x$ac_cv_func_EVP_CIPHER_CTX_iv" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_CIPHER_CTX_IV 1" >>confdefs.h
-int
-main ()
-{
+fi
+ac_fn_c_check_func "$LINENO" "EVP_CIPHER_CTX_iv_noconst" "ac_cv_func_EVP_CIPHER_CTX_iv_noconst"
+if test "x$ac_cv_func_EVP_CIPHER_CTX_iv_noconst" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_CIPHER_CTX_IV_NOCONST 1" >>confdefs.h
- exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);
+fi
+ac_fn_c_check_func "$LINENO" "EVP_CIPHER_CTX_get_iv" "ac_cv_func_EVP_CIPHER_CTX_get_iv"
+if test "x$ac_cv_func_EVP_CIPHER_CTX_get_iv" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_CIPHER_CTX_GET_IV 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+fi
+ac_fn_c_check_func "$LINENO" "EVP_CIPHER_CTX_get_updated_iv" "ac_cv_func_EVP_CIPHER_CTX_get_updated_iv"
+if test "x$ac_cv_func_EVP_CIPHER_CTX_get_updated_iv" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_CIPHER_CTX_GET_UPDATED_IV 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "EVP_CIPHER_CTX_set_iv" "ac_cv_func_EVP_CIPHER_CTX_set_iv"
+if test "x$ac_cv_func_EVP_CIPHER_CTX_set_iv" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_CIPHER_CTX_SET_IV 1" >>confdefs.h
-else
+fi
+ac_fn_c_check_func "$LINENO" "RSA_get0_crt_params" "ac_cv_func_RSA_get0_crt_params"
+if test "x$ac_cv_func_RSA_get0_crt_params" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_GET0_CRT_PARAMS 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "RSA_get0_factors" "ac_cv_func_RSA_get0_factors"
+if test "x$ac_cv_func_RSA_get0_factors" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_GET0_FACTORS 1" >>confdefs.h
-$as_echo "#define OPENSSL_LOBOTOMISED_AES 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "RSA_get0_key" "ac_cv_func_RSA_get0_key"
+if test "x$ac_cv_func_RSA_get0_key" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_GET0_KEY 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "RSA_set0_crt_params" "ac_cv_func_RSA_set0_crt_params"
+if test "x$ac_cv_func_RSA_set0_crt_params" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_SET0_CRT_PARAMS 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "RSA_set0_factors" "ac_cv_func_RSA_set0_factors"
+if test "x$ac_cv_func_RSA_set0_factors" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_SET0_FACTORS 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ac_fn_c_check_func "$LINENO" "RSA_set0_key" "ac_cv_func_RSA_set0_key"
+if test "x$ac_cv_func_RSA_set0_key" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_SET0_KEY 1" >>confdefs.h
- # Check for OpenSSL with EVP_aes_*ctr
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has AES CTR via EVP" >&5
-$as_echo_n "checking whether OpenSSL has AES CTR via EVP... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_free" "ac_cv_func_RSA_meth_free"
+if test "x$ac_cv_func_RSA_meth_free" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_FREE 1" >>confdefs.h
- #include <stdlib.h>
- #include <string.h>
- #include <openssl/evp.h>
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_dup" "ac_cv_func_RSA_meth_dup"
+if test "x$ac_cv_func_RSA_meth_dup" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_DUP 1" >>confdefs.h
-int
-main ()
-{
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_set1_name" "ac_cv_func_RSA_meth_set1_name"
+if test "x$ac_cv_func_RSA_meth_set1_name" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_SET1_NAME 1" >>confdefs.h
- exit(EVP_aes_128_ctr() == NULL ||
- EVP_aes_192_cbc() == NULL ||
- EVP_aes_256_cbc() == NULL);
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_get_finish" "ac_cv_func_RSA_meth_get_finish"
+if test "x$ac_cv_func_RSA_meth_get_finish" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_GET_FINISH 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_set_priv_enc" "ac_cv_func_RSA_meth_set_priv_enc"
+if test "x$ac_cv_func_RSA_meth_set_priv_enc" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_SET_PRIV_ENC 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_set_priv_dec" "ac_cv_func_RSA_meth_set_priv_dec"
+if test "x$ac_cv_func_RSA_meth_set_priv_dec" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_SET_PRIV_DEC 1" >>confdefs.h
-$as_echo "#define OPENSSL_HAVE_EVPCTR 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "RSA_meth_set_finish" "ac_cv_func_RSA_meth_set_finish"
+if test "x$ac_cv_func_RSA_meth_set_finish" = xyes
+then :
+ printf "%s\n" "#define HAVE_RSA_METH_SET_FINISH 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "EVP_PKEY_get0_RSA" "ac_cv_func_EVP_PKEY_get0_RSA"
+if test "x$ac_cv_func_EVP_PKEY_get0_RSA" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_PKEY_GET0_RSA 1" >>confdefs.h
-else
+fi
+ac_fn_c_check_func "$LINENO" "EVP_MD_CTX_new" "ac_cv_func_EVP_MD_CTX_new"
+if test "x$ac_cv_func_EVP_MD_CTX_new" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_MD_CTX_NEW 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+fi
+ac_fn_c_check_func "$LINENO" "EVP_MD_CTX_free" "ac_cv_func_EVP_MD_CTX_free"
+if test "x$ac_cv_func_EVP_MD_CTX_free" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_MD_CTX_FREE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "EVP_chacha20" "ac_cv_func_EVP_chacha20"
+if test "x$ac_cv_func_EVP_chacha20" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_CHACHA20 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- # Check for OpenSSL with EVP_aes_*gcm
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has AES GCM via EVP" >&5
-$as_echo_n "checking whether OpenSSL has AES GCM via EVP... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+ if test "x$openssl_engine" = "xyes" ; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL ENGINE support" >&5
+printf %s "checking for OpenSSL ENGINE support... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <stdlib.h>
- #include <string.h>
- #include <openssl/evp.h>
+ #include <openssl/engine.h>
int
-main ()
+main (void)
{
- exit(EVP_aes_128_gcm() == NULL ||
- EVP_aes_256_gcm() == NULL ||
- EVP_CTRL_GCM_SET_IV_FIXED == 0 ||
- EVP_CTRL_GCM_IV_GEN == 0 ||
- EVP_CTRL_GCM_SET_TAG == 0 ||
- EVP_CTRL_GCM_GET_TAG == 0 ||
- EVP_CIPHER_CTX_ctrl(NULL, 0, 0, NULL) == 0);
+ ENGINE_load_builtin_engines();
+ ENGINE_register_all_complete();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define OPENSSL_HAVE_EVPGCM 1" >>confdefs.h
-
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+printf "%s\n" "#define USE_OPENSSL_ENGINE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- unsupported_algorithms="$unsupported_cipers \
- aes128-gcm@openssh.com \
- aes256-gcm@openssh.com"
+else $as_nop
+ as_fn_error $? "OpenSSL ENGINE support not found" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if EVP_DigestUpdate returns an int" >&5
-$as_echo_n "checking if EVP_DigestUpdate returns an int... " >&6; }
+ # Check for OpenSSL without EVP_aes_{192,256}_cbc
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has crippled AES support" >&5
+printf %s "checking whether OpenSSL has crippled AES support... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14278,158 +15997,97 @@ $as_echo_n "checking if EVP_DigestUpdate returns an int... " >&6; }
#include <openssl/evp.h>
int
-main ()
+main (void)
{
- if(EVP_DigestUpdate(NULL, NULL,0))
- exit(0);
+ exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define OPENSSL_EVP_DIGESTUPDATE_VOID 1" >>confdefs.h
+printf "%s\n" "#define OPENSSL_LOBOTOMISED_AES 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- # Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
- # because the system crypt() is more featureful.
- if test "x$check_for_libcrypt_before" = "x1"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
-$as_echo_n "checking for crypt in -lcrypt... " >&6; }
-if ${ac_cv_lib_crypt_crypt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypt $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if EVP_DigestUpdate returns an int" >&5
+printf %s "checking if EVP_DigestUpdate returns an int... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char crypt ();
+ #include <stdlib.h>
+ #include <string.h>
+ #include <openssl/evp.h>
+
int
-main ()
+main (void)
{
-return crypt ();
+
+ if(EVP_DigestUpdate(NULL, NULL,0))
+ exit(0);
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_crypt_crypt=yes
-else
- ac_cv_lib_crypt_crypt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
-$as_echo "$ac_cv_lib_crypt_crypt" >&6; }
-if test "x$ac_cv_lib_crypt_crypt" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBCRYPT 1
-_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
- LIBS="-lcrypt $LIBS"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-fi
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+printf "%s\n" "#define OPENSSL_EVP_DIGESTUPDATE_VOID 1" >>confdefs.h
- fi
- # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
- # version in OpenSSL.
- if test "x$check_for_libcrypt_later" = "x1"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
-$as_echo_n "checking for crypt in -lcrypt... " >&6; }
-if ${ac_cv_lib_crypt_crypt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypt $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char crypt ();
-int
-main ()
-{
-return crypt ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_crypt_crypt=yes
-else
- ac_cv_lib_crypt_crypt=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
-$as_echo "$ac_cv_lib_crypt_crypt" >&6; }
-if test "x$ac_cv_lib_crypt_crypt" = xyes; then :
- LIBS="$LIBS -lcrypt"
-fi
- fi
- for ac_func in crypt DES_crypt
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ # Check for SHA256, SHA384 and SHA512 support in OpenSSL
+ ac_fn_c_check_func "$LINENO" "EVP_sha256" "ac_cv_func_EVP_sha256"
+if test "x$ac_cv_func_EVP_sha256" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_SHA256 1" >>confdefs.h
fi
-done
-
+ac_fn_c_check_func "$LINENO" "EVP_sha384" "ac_cv_func_EVP_sha384"
+if test "x$ac_cv_func_EVP_sha384" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_SHA384 1" >>confdefs.h
- # Check for SHA256, SHA384 and SHA512 support in OpenSSL
- for ac_func in EVP_sha256 EVP_sha384 EVP_sha512
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "EVP_sha512" "ac_cv_func_EVP_sha512"
+if test "x$ac_cv_func_EVP_sha512" = xyes
+then :
+ printf "%s\n" "#define HAVE_EVP_SHA512 1" >>confdefs.h
fi
-done
# Check complete ECC support in OpenSSL
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_X9_62_prime256v1" >&5
-$as_echo_n "checking whether OpenSSL has NID_X9_62_prime256v1... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_X9_62_prime256v1" >&5
+printf %s "checking whether OpenSSL has NID_X9_62_prime256v1... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14441,7 +16099,7 @@ $as_echo_n "checking whether OpenSSL has NID_X9_62_prime256v1... " >&6; }
#include <openssl/opensslv.h>
int
-main ()
+main (void)
{
EC_KEY *e = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
@@ -14451,20 +16109,21 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
enable_nistp256=1
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_secp384r1" >&5
-$as_echo_n "checking whether OpenSSL has NID_secp384r1... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_secp384r1" >&5
+printf %s "checking whether OpenSSL has NID_secp384r1... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14476,7 +16135,7 @@ $as_echo_n "checking whether OpenSSL has NID_secp384r1... " >&6; }
#include <openssl/opensslv.h>
int
-main ()
+main (void)
{
EC_KEY *e = EC_KEY_new_by_curve_name(NID_secp384r1);
@@ -14486,20 +16145,21 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
enable_nistp384=1
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_secp521r1" >&5
-$as_echo_n "checking whether OpenSSL has NID_secp521r1... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL has NID_secp521r1" >&5
+printf %s "checking whether OpenSSL has NID_secp521r1... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14511,7 +16171,7 @@ $as_echo_n "checking whether OpenSSL has NID_secp521r1... " >&6; }
#include <openssl/opensslv.h>
int
-main ()
+main (void)
{
EC_KEY *e = EC_KEY_new_by_curve_name(NID_secp521r1);
@@ -14521,17 +16181,19 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if OpenSSL's NID_secp521r1 is functional" >&5
-$as_echo_n "checking if OpenSSL's NID_secp521r1 is functional... " >&6; }
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross-compiling: assuming yes" >&5
-$as_echo "$as_me: WARNING: cross-compiling: assuming yes" >&2;}
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if OpenSSL's NID_secp521r1 is functional" >&5
+printf %s "checking if OpenSSL's NID_secp521r1 is functional... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross-compiling: assuming yes" >&5
+printf "%s\n" "$as_me: WARNING: cross-compiling: assuming yes" >&2;}
enable_nistp521=1
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -14544,7 +16206,7 @@ else
#include <openssl/opensslv.h>
int
-main ()
+main (void)
{
EC_KEY *e = EC_KEY_new_by_curve_name(NID_secp521r1);
@@ -14555,41 +16217,38 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
enable_nistp521=1
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test x$enable_nistp256 = x1 || test x$enable_nistp384 = x1 || \
test x$enable_nistp521 = x1; then
-$as_echo "#define OPENSSL_HAS_ECC 1" >>confdefs.h
+printf "%s\n" "#define OPENSSL_HAS_ECC 1" >>confdefs.h
- for ac_func in EC_KEY_METHOD_new
-do :
- ac_fn_c_check_func "$LINENO" "EC_KEY_METHOD_new" "ac_cv_func_EC_KEY_METHOD_new"
-if test "x$ac_cv_func_EC_KEY_METHOD_new" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_EC_KEY_METHOD_NEW 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "EC_KEY_METHOD_new" "ac_cv_func_EC_KEY_METHOD_new"
+if test "x$ac_cv_func_EC_KEY_METHOD_new" = xyes
+then :
+ printf "%s\n" "#define HAVE_EC_KEY_METHOD_NEW 1" >>confdefs.h
fi
-done
openssl_ecc=yes
else
@@ -14597,7 +16256,7 @@ done
fi
if test x$enable_nistp256 = x1; then
-$as_echo "#define OPENSSL_HAS_NISTP256 1" >>confdefs.h
+printf "%s\n" "#define OPENSSL_HAS_NISTP256 1" >>confdefs.h
else
unsupported_algorithms="$unsupported_algorithms \
@@ -14607,7 +16266,7 @@ $as_echo "#define OPENSSL_HAS_NISTP256 1" >>confdefs.h
fi
if test x$enable_nistp384 = x1; then
-$as_echo "#define OPENSSL_HAS_NISTP384 1" >>confdefs.h
+printf "%s\n" "#define OPENSSL_HAS_NISTP384 1" >>confdefs.h
else
unsupported_algorithms="$unsupported_algorithms \
@@ -14617,7 +16276,7 @@ $as_echo "#define OPENSSL_HAS_NISTP384 1" >>confdefs.h
fi
if test x$enable_nistp521 = x1; then
-$as_echo "#define OPENSSL_HAS_NISTP521 1" >>confdefs.h
+printf "%s\n" "#define OPENSSL_HAS_NISTP521 1" >>confdefs.h
else
unsupported_algorithms="$unsupported_algorithms \
@@ -14625,59 +16284,6 @@ $as_echo "#define OPENSSL_HAS_NISTP521 1" >>confdefs.h
ecdsa-sha2-nistp521 \
ecdsa-sha2-nistp521-cert-v01@openssh.com"
fi
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
-$as_echo_n "checking for crypt in -lcrypt... " >&6; }
-if ${ac_cv_lib_crypt_crypt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypt $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char crypt ();
-int
-main ()
-{
-return crypt ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_crypt_crypt=yes
-else
- ac_cv_lib_crypt_crypt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
-$as_echo "$ac_cv_lib_crypt_crypt" >&6; }
-if test "x$ac_cv_lib_crypt_crypt" = xyes; then :
- LIBS="$LIBS -lcrypt"
-fi
-
- for ac_func in crypt
-do :
- ac_fn_c_check_func "$LINENO" "crypt" "ac_cv_func_crypt"
-if test "x$ac_cv_func_crypt" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CRYPT 1
-_ACEOF
-
-fi
-done
-
fi
# PKCS11/U2F depend on OpenSSL and dlopen().
@@ -14701,21 +16307,21 @@ if test ! -z "$disable_sk" ; then
enable_sk="disabled by user"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable PKCS11" >&5
-$as_echo_n "checking whether to enable PKCS11... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable PKCS11" >&5
+printf %s "checking whether to enable PKCS11... " >&6; }
if test "x$enable_pkcs11" = "xyes" ; then
-$as_echo "#define ENABLE_PKCS11 /**/" >>confdefs.h
+printf "%s\n" "#define ENABLE_PKCS11 /**/" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pkcs11" >&5
-$as_echo "$enable_pkcs11" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_pkcs11" >&5
+printf "%s\n" "$enable_pkcs11" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable U2F" >&5
-$as_echo_n "checking whether to enable U2F... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable U2F" >&5
+printf %s "checking whether to enable U2F... " >&6; }
if test "x$enable_sk" = "xyes" ; then
-$as_echo "#define ENABLE_SK /**/" >>confdefs.h
+printf "%s\n" "#define ENABLE_SK /**/" >>confdefs.h
SK_DUMMY_LIBRARY=regress/misc/sk-dummy/sk-dummy.so
@@ -14724,120 +16330,22 @@ else
SK_DUMMY_LIBRARY=""
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_sk" >&5
-$as_echo "$enable_sk" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_sk" >&5
+printf "%s\n" "$enable_sk" >&6; }
# Now check for built-in security key support.
-if test "x$enable_sk" = "xyes" -a "x$enable_sk_internal" = "xyes" ; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKGCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PKGCONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-PKGCONFIG=$ac_cv_path_PKGCONFIG
-if test -n "$PKGCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
-$as_echo "$PKGCONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKGCONFIG"; then
- ac_pt_PKGCONFIG=$PKGCONFIG
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ac_pt_PKGCONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
-if test -n "$ac_pt_PKGCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
-$as_echo "$ac_pt_PKGCONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_pt_PKGCONFIG" = x; then
- PKGCONFIG="no"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- PKGCONFIG=$ac_pt_PKGCONFIG
- fi
-else
- PKGCONFIG="$ac_cv_path_PKGCONFIG"
-fi
-
+if test "x$enable_sk" = "xyes" -a "x$enable_sk_internal" != "xno" ; then
use_pkgconfig_for_libfido2=
if test "x$PKGCONFIG" != "xno"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about libfido2" >&5
-$as_echo_n "checking if $PKGCONFIG knows about libfido2... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about libfido2" >&5
+printf %s "checking if $PKGCONFIG knows about libfido2... " >&6; }
if "$PKGCONFIG" libfido2; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
use_pkgconfig_for_libfido2=yes
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
if test "x$use_pkgconfig_for_libfido2" = "xyes"; then
@@ -14847,11 +16355,13 @@ $as_echo "no" >&6; }
LIBFIDO2="-lfido2 -lcbor"
fi
OTHERLIBS=`echo $LIBFIDO2 | sed 's/-lfido2//'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fido_init in -lfido2" >&5
-$as_echo_n "checking for fido_init in -lfido2... " >&6; }
-if ${ac_cv_lib_fido2_fido_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ fido2_error=
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fido_init in -lfido2" >&5
+printf %s "checking for fido_init in -lfido2... " >&6; }
+if test ${ac_cv_lib_fido2_fido_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lfido2 $OTHERLIBS
$LIBS"
@@ -14861,178 +16371,166 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char fido_init ();
int
-main ()
+main (void)
{
return fido_init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_fido2_fido_init=yes
-else
+else $as_nop
ac_cv_lib_fido2_fido_init=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fido2_fido_init" >&5
-$as_echo "$ac_cv_lib_fido2_fido_init" >&6; }
-if test "x$ac_cv_lib_fido2_fido_init" = xyes; then :
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fido2_fido_init" >&5
+printf "%s\n" "$ac_cv_lib_fido2_fido_init" >&6; }
+if test "x$ac_cv_lib_fido2_fido_init" = xyes
+then :
+else $as_nop
+ fido2_error="missing/unusable libfido2"
+fi
-$as_echo "#define ENABLE_SK_INTERNAL /**/" >>confdefs.h
-
- enable_sk="built-in"
+ ac_fn_c_check_header_compile "$LINENO" "fido.h" "ac_cv_header_fido_h" "$ac_includes_default"
+if test "x$ac_cv_header_fido_h" = xyes
+then :
-else
- as_fn_error $? "no usable libfido2 found" "$LINENO" 5
+else $as_nop
+ fido2_error="missing fido.h from libfido2"
fi
- saved_LIBS="$LIBS"
- LIBS="$LIBS $LIBFIDO2"
- for ac_func in \
- fido_assert_set_clientdata \
- fido_cred_prot \
- fido_cred_set_prot \
- fido_cred_set_clientdata \
- fido_dev_get_touch_begin \
- fido_dev_get_touch_status \
- fido_dev_supports_cred_prot \
+ ac_fn_c_check_header_compile "$LINENO" "fido/credman.h" "ac_cv_header_fido_credman_h" " #include <fido.h>
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+"
+if test "x$ac_cv_header_fido_credman_h" = xyes
+then :
+else $as_nop
+ fido2_error="missing fido/credman.h from libfido2"
fi
-done
- LIBS="$saved_LIBS"
- ac_fn_c_check_header_mongrel "$LINENO" "fido.h" "ac_cv_header_fido_h" "$ac_includes_default"
-if test "x$ac_cv_header_fido_h" = xyes; then :
-
-else
- as_fn_error $? "missing fido.h from libfido2" "$LINENO" 5
-fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable libfido2 installation" >&5
+printf %s "checking for usable libfido2 installation... " >&6; }
+ if test ! -z "$fido2_error" ; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $fido2_error" >&5
+printf "%s\n" "$fido2_error" >&6; }
+ if test "x$enable_sk_internal" = "xyes" ; then
+ as_fn_error $? "No usable libfido2 library/headers found" "$LINENO" 5
+ fi
+ LIBFIDO2=""
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
- ac_fn_c_check_header_compile "$LINENO" "fido/credman.h" "ac_cv_header_fido_credman_h" "#include <fido.h>
+printf "%s\n" "#define ENABLE_SK_INTERNAL /**/" >>confdefs.h
-"
-if test "x$ac_cv_header_fido_credman_h" = xyes; then :
+ enable_sk="built-in"
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBFIDO2"
+ ac_fn_c_check_func "$LINENO" "fido_assert_set_clientdata" "ac_cv_func_fido_assert_set_clientdata"
+if test "x$ac_cv_func_fido_assert_set_clientdata" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_ASSERT_SET_CLIENTDATA 1" >>confdefs.h
-else
- as_fn_error $? "missing fido/credman.h from libfido2" "$LINENO" 5
fi
-
+ac_fn_c_check_func "$LINENO" "fido_cred_prot" "ac_cv_func_fido_cred_prot"
+if test "x$ac_cv_func_fido_cred_prot" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_CRED_PROT 1" >>confdefs.h
fi
-
-for ac_func in \
- arc4random \
- arc4random_buf \
- arc4random_stir \
- arc4random_uniform \
-
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "fido_cred_set_prot" "ac_cv_func_fido_cred_set_prot"
+if test "x$ac_cv_func_fido_cred_set_prot" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_CRED_SET_PROT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "fido_cred_set_clientdata" "ac_cv_func_fido_cred_set_clientdata"
+if test "x$ac_cv_func_fido_cred_set_clientdata" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_CRED_SET_CLIENTDATA 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "fido_dev_get_touch_begin" "ac_cv_func_fido_dev_get_touch_begin"
+if test "x$ac_cv_func_fido_dev_get_touch_begin" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_DEV_GET_TOUCH_BEGIN 1" >>confdefs.h
-saved_LIBS="$LIBS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ia_openinfo in -liaf" >&5
-$as_echo_n "checking for ia_openinfo in -liaf... " >&6; }
-if ${ac_cv_lib_iaf_ia_openinfo+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-liaf $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
+ac_fn_c_check_func "$LINENO" "fido_dev_get_touch_status" "ac_cv_func_fido_dev_get_touch_status"
+if test "x$ac_cv_func_fido_dev_get_touch_status" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_DEV_GET_TOUCH_STATUS 1" >>confdefs.h
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ia_openinfo ();
-int
-main ()
-{
-return ia_openinfo ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_iaf_ia_openinfo=yes
-else
- ac_cv_lib_iaf_ia_openinfo=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+ac_fn_c_check_func "$LINENO" "fido_dev_supports_cred_prot" "ac_cv_func_fido_dev_supports_cred_prot"
+if test "x$ac_cv_func_fido_dev_supports_cred_prot" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_DEV_SUPPORTS_CRED_PROT 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iaf_ia_openinfo" >&5
-$as_echo "$ac_cv_lib_iaf_ia_openinfo" >&6; }
-if test "x$ac_cv_lib_iaf_ia_openinfo" = xyes; then :
+ac_fn_c_check_func "$LINENO" "fido_dev_is_winhello" "ac_cv_func_fido_dev_is_winhello"
+if test "x$ac_cv_func_fido_dev_is_winhello" = xyes
+then :
+ printf "%s\n" "#define HAVE_FIDO_DEV_IS_WINHELLO 1" >>confdefs.h
- LIBS="$LIBS -liaf"
- for ac_func in set_id
-do :
- ac_fn_c_check_func "$LINENO" "set_id" "ac_cv_func_set_id"
-if test "x$ac_cv_func_set_id" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SET_ID 1
-_ACEOF
- SSHDLIBS="$SSHDLIBS -liaf"
+fi
-$as_echo "#define HAVE_LIBIAF 1" >>confdefs.h
+ LIBS="$saved_LIBS"
+ fi
+fi
+ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random"
+if test "x$ac_cv_func_arc4random" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "arc4random_buf" "ac_cv_func_arc4random_buf"
+if test "x$ac_cv_func_arc4random_buf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "arc4random_stir" "ac_cv_func_arc4random_stir"
+if test "x$ac_cv_func_arc4random_stir" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM_STIR 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "arc4random_uniform" "ac_cv_func_arc4random_uniform"
+if test "x$ac_cv_func_arc4random_uniform" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM_UNIFORM 1" >>confdefs.h
-LIBS="$saved_LIBS"
+fi
### Configure cryptographic random number support
# Check whether OpenSSL seeds itself
if test "x$openssl" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's PRNG is internally seeded" >&5
-$as_echo_n "checking whether OpenSSL's PRNG is internally seeded... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL's PRNG is internally seeded" >&5
+printf %s "checking whether OpenSSL's PRNG is internally seeded... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming yes" >&2;}
# This is safe, since we will fatal() at runtime if
# OpenSSL is not seeded correctly.
OPENSSL_SEEDS_ITSELF=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15041,7 +16539,7 @@ else
#include <openssl/rand.h>
int
-main ()
+main (void)
{
exit(RAND_status() == 1 ? 0 : 1);
@@ -15050,16 +16548,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
OPENSSL_SEEDS_ITSELF=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15071,7 +16570,8 @@ fi
# PRNGD TCP socket
# Check whether --with-prngd-port was given.
-if test "${with_prngd_port+set}" = set; then :
+if test ${with_prngd_port+y}
+then :
withval=$with_prngd_port;
case "$withval" in
no)
@@ -15086,9 +16586,7 @@ if test "${with_prngd_port+set}" = set; then :
if test ! -z "$withval" ; then
PRNGD_PORT="$withval"
-cat >>confdefs.h <<_ACEOF
-#define PRNGD_PORT $PRNGD_PORT
-_ACEOF
+printf "%s\n" "#define PRNGD_PORT $PRNGD_PORT" >>confdefs.h
fi
@@ -15099,7 +16597,8 @@ fi
# PRNGD Unix domain socket
# Check whether --with-prngd-socket was given.
-if test "${with_prngd_socket+set}" = set; then :
+if test ${with_prngd_socket+y}
+then :
withval=$with_prngd_socket;
case "$withval" in
yes)
@@ -15120,40 +16619,36 @@ if test "${with_prngd_socket+set}" = set; then :
as_fn_error $? "You may not specify both a PRNGD/EGD port and socket" "$LINENO" 5
fi
if test ! -r "$withval" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Entropy socket is not readable" >&5
-$as_echo "$as_me: WARNING: Entropy socket is not readable" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Entropy socket is not readable" >&5
+printf "%s\n" "$as_me: WARNING: Entropy socket is not readable" >&2;}
fi
PRNGD_SOCKET="$withval"
-cat >>confdefs.h <<_ACEOF
-#define PRNGD_SOCKET "$PRNGD_SOCKET"
-_ACEOF
+printf "%s\n" "#define PRNGD_SOCKET \"$PRNGD_SOCKET\"" >>confdefs.h
fi
-else
+else $as_nop
# Check for existing socket only if we don't have a random device already
if test "x$OPENSSL_SEEDS_ITSELF" != "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PRNGD/EGD socket" >&5
-$as_echo_n "checking for PRNGD/EGD socket... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PRNGD/EGD socket" >&5
+printf %s "checking for PRNGD/EGD socket... " >&6; }
# Insert other locations here
for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
PRNGD_SOCKET="$sock"
- cat >>confdefs.h <<_ACEOF
-#define PRNGD_SOCKET "$PRNGD_SOCKET"
-_ACEOF
+ printf "%s\n" "#define PRNGD_SOCKET \"$PRNGD_SOCKET\"" >>confdefs.h
break;
fi
done
if test ! -z "$PRNGD_SOCKET" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRNGD_SOCKET" >&5
-$as_echo "$PRNGD_SOCKET" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PRNGD_SOCKET" >&5
+printf "%s\n" "$PRNGD_SOCKET" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
fi
fi
@@ -15168,21 +16663,137 @@ elif test ! -z "$PRNGD_SOCKET" ; then
RAND_MSG="PRNGd socket $PRNGD_SOCKET"
elif test ! -z "$OPENSSL_SEEDS_ITSELF" ; then
-$as_echo "#define OPENSSL_PRNG_ONLY 1" >>confdefs.h
+printf "%s\n" "#define OPENSSL_PRNG_ONLY 1" >>confdefs.h
RAND_MSG="OpenSSL internal ONLY"
elif test "x$openssl" = "xno" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&5
-$as_echo "$as_me: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&5
+printf "%s\n" "$as_me: WARNING: OpenSSH will use /dev/urandom as a source of random numbers. It will fail if this device is not supported or accessible" >&2;}
else
as_fn_error $? "OpenSSH has no source of random numbers. Please configure OpenSSL with an entropy source or re-run configure using one of the --with-prngd-port or --with-prngd-socket options" "$LINENO" 5
fi
+LIBS="$nocrypto_saved_LIBS"
+
+saved_LIBS="$LIBS"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ia_openinfo in -liaf" >&5
+printf %s "checking for ia_openinfo in -liaf... " >&6; }
+if test ${ac_cv_lib_iaf_ia_openinfo+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-liaf $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char ia_openinfo ();
+int
+main (void)
+{
+return ia_openinfo ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_iaf_ia_openinfo=yes
+else $as_nop
+ ac_cv_lib_iaf_ia_openinfo=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iaf_ia_openinfo" >&5
+printf "%s\n" "$ac_cv_lib_iaf_ia_openinfo" >&6; }
+if test "x$ac_cv_lib_iaf_ia_openinfo" = xyes
+then :
+
+ LIBS="$LIBS -liaf"
+
+ for ac_func in set_id
+do :
+ ac_fn_c_check_func "$LINENO" "set_id" "ac_cv_func_set_id"
+if test "x$ac_cv_func_set_id" = xyes
+then :
+ printf "%s\n" "#define HAVE_SET_ID 1" >>confdefs.h
+ SSHDLIBS="$SSHDLIBS -liaf"
+
+printf "%s\n" "#define HAVE_LIBIAF 1" >>confdefs.h
+
+
+fi
+
+done
+
+fi
+
+LIBS="$saved_LIBS"
+
+# Check for crypt() in libcrypt. If we have it, we only need it for sshd.
+saved_LIBS="$LIBS"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5
+printf %s "checking for crypt in -lcrypt... " >&6; }
+if test ${ac_cv_lib_crypt_crypt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcrypt $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+char crypt ();
+int
+main (void)
+{
+return crypt ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_crypt_crypt=yes
+else $as_nop
+ ac_cv_lib_crypt_crypt=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5
+printf "%s\n" "$ac_cv_lib_crypt_crypt" >&6; }
+if test "x$ac_cv_lib_crypt_crypt" = xyes
+then :
+
+ LIBS="-lcrypt $LIBS"
+ SSHDLIBS="-lcrypt $SSHDLIBS"
+
+fi
+
+ac_fn_c_check_func "$LINENO" "crypt" "ac_cv_func_crypt"
+if test "x$ac_cv_func_crypt" = xyes
+then :
+ printf "%s\n" "#define HAVE_CRYPT 1" >>confdefs.h
+
+fi
+
+LIBS="$saved_LIBS"
# Check for PAM libs
PAM_MSG="no"
# Check whether --with-pam was given.
-if test "${with_pam+set}" = set; then :
+if test ${with_pam+y}
+then :
withval=$with_pam;
if test "x$withval" != "xno" ; then
if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
@@ -15191,11 +16802,12 @@ if test "${with_pam+set}" = set; then :
fi
saved_LIBS="$LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15204,43 +16816,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h
LIBS="-ldl $LIBS"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_set_item in -lpam" >&5
-$as_echo_n "checking for pam_set_item in -lpam... " >&6; }
-if ${ac_cv_lib_pam_pam_set_item+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pam_set_item in -lpam" >&5
+printf %s "checking for pam_set_item in -lpam... " >&6; }
+if test ${ac_cv_lib_pam_pam_set_item+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpam $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15249,61 +16859,50 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pam_set_item ();
int
-main ()
+main (void)
{
return pam_set_item ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pam_pam_set_item=yes
-else
+else $as_nop
ac_cv_lib_pam_pam_set_item=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_set_item" >&5
-$as_echo "$ac_cv_lib_pam_pam_set_item" >&6; }
-if test "x$ac_cv_lib_pam_pam_set_item" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPAM 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_set_item" >&5
+printf "%s\n" "$ac_cv_lib_pam_pam_set_item" >&6; }
+if test "x$ac_cv_lib_pam_pam_set_item" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBPAM 1" >>confdefs.h
LIBS="-lpam $LIBS"
-else
+else $as_nop
as_fn_error $? "*** libpam missing" "$LINENO" 5
fi
- for ac_func in pam_getenvlist
-do :
- ac_fn_c_check_func "$LINENO" "pam_getenvlist" "ac_cv_func_pam_getenvlist"
-if test "x$ac_cv_func_pam_getenvlist" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PAM_GETENVLIST 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pam_getenvlist" "ac_cv_func_pam_getenvlist"
+if test "x$ac_cv_func_pam_getenvlist" = xyes
+then :
+ printf "%s\n" "#define HAVE_PAM_GETENVLIST 1" >>confdefs.h
fi
-done
- for ac_func in pam_putenv
-do :
- ac_fn_c_check_func "$LINENO" "pam_putenv" "ac_cv_func_pam_putenv"
-if test "x$ac_cv_func_pam_putenv" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PAM_PUTENV 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pam_putenv" "ac_cv_func_pam_putenv"
+if test "x$ac_cv_func_pam_putenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_PAM_PUTENV 1" >>confdefs.h
fi
-done
LIBS="$saved_LIBS"
@@ -15311,7 +16910,7 @@ done
SSHDLIBS="$SSHDLIBS -lpam"
-$as_echo "#define USE_PAM 1" >>confdefs.h
+printf "%s\n" "#define USE_PAM 1" >>confdefs.h
if test $ac_cv_lib_dl_dlopen = yes; then
@@ -15332,14 +16931,13 @@ fi
# Check whether --with-pam-service was given.
-if test "${with_pam_service+set}" = set; then :
+if test ${with_pam_service+y}
+then :
withval=$with_pam_service;
if test "x$withval" != "xno" && \
test "x$withval" != "xyes" ; then
-cat >>confdefs.h <<_ACEOF
-#define SSHD_PAM_SERVICE "$withval"
-_ACEOF
+printf "%s\n" "#define SSHD_PAM_SERVICE \"$withval\"" >>confdefs.h
fi
@@ -15350,8 +16948,8 @@ fi
# Check for older PAM
if test "x$PAM_MSG" = "xyes" ; then
# Check PAM strerror arguments (old PAM)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pam_strerror takes only one argument" >&5
-$as_echo_n "checking whether pam_strerror takes only one argument... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pam_strerror takes only one argument" >&5
+printf %s "checking whether pam_strerror takes only one argument... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15363,7 +16961,7 @@ $as_echo_n "checking whether pam_strerror takes only one argument... " >&6; }
#endif
int
-main ()
+main (void)
{
(void)pam_strerror((pam_handle_t *)NULL, -1);
@@ -15372,21 +16970,22 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else $as_nop
-$as_echo "#define HAVE_OLD_PAM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_OLD_PAM 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
PAM_MSG="yes (old library)"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
case "$host" in
@@ -15399,7 +16998,8 @@ case "$host" in
esac
# Check whether --with-privsep-user was given.
-if test "${with_privsep_user+set}" = set; then :
+if test ${with_privsep_user+y}
+then :
withval=$with_privsep_user;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -15411,33 +17011,29 @@ fi
if test "x$SSH_PRIVSEP_USER" = "xCYGWIN_SSH_PRIVSEP_USER" ; then
-cat >>confdefs.h <<_ACEOF
-#define SSH_PRIVSEP_USER CYGWIN_SSH_PRIVSEP_USER
-_ACEOF
+printf "%s\n" "#define SSH_PRIVSEP_USER CYGWIN_SSH_PRIVSEP_USER" >>confdefs.h
else
-cat >>confdefs.h <<_ACEOF
-#define SSH_PRIVSEP_USER "$SSH_PRIVSEP_USER"
-_ACEOF
+printf "%s\n" "#define SSH_PRIVSEP_USER \"$SSH_PRIVSEP_USER\"" >>confdefs.h
fi
if test "x$have_linux_no_new_privs" = "x1" ; then
-ac_fn_c_check_decl "$LINENO" "SECCOMP_MODE_FILTER" "ac_cv_have_decl_SECCOMP_MODE_FILTER" "
+ac_fn_check_decl "$LINENO" "SECCOMP_MODE_FILTER" "ac_cv_have_decl_SECCOMP_MODE_FILTER" "
#include <sys/types.h>
#include <linux/seccomp.h>
-"
-if test "x$ac_cv_have_decl_SECCOMP_MODE_FILTER" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SECCOMP_MODE_FILTER" = xyes
+then :
have_seccomp_filter=1
fi
-
fi
if test "x$have_seccomp_filter" = "x1" ; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking kernel for seccomp_filter support" >&5
-$as_echo_n "checking kernel for seccomp_filter support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking kernel for seccomp_filter support" >&5
+printf %s "checking kernel for seccomp_filter support... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15449,7 +17045,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#include <sys/prctl.h>
int
-main ()
+main (void)
{
int i = $seccomp_audit_arch;
errno = 0;
@@ -15459,27 +17055,67 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
# Disable seccomp filter as a target
have_seccomp_filter=0
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
+ac_fn_c_check_member "$LINENO" "struct pollfd" "fd" "ac_cv_member_struct_pollfd_fd" "
+#include <sys/types.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
+#ifdef HAVE_SYS_POLL_H
+#include <sys/poll.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_pollfd_fd" = xyes
+then :
+
+printf "%s\n" "#define HAVE_STRUCT_POLLFD_FD 1" >>confdefs.h
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "nfds_t" "ac_cv_type_nfds_t" "
+#include <sys/types.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
+#ifdef HAVE_SYS_POLL_H
+#include <sys/poll.h>
+#endif
+
+"
+if test "x$ac_cv_type_nfds_t" = xyes
+then :
+
+printf "%s\n" "#define HAVE_NFDS_T 1" >>confdefs.h
+
+
+fi
+
+
# Decide which sandbox style to use
sandbox_arg=""
# Check whether --with-sandbox was given.
-if test "${with_sandbox+set}" = set; then :
+if test ${with_sandbox+y}
+then :
withval=$with_sandbox;
if test "x$withval" = "xyes" ; then
sandbox_arg=""
@@ -15491,18 +17127,20 @@ if test "${with_sandbox+set}" = set; then :
fi
+if test "x$sandbox_arg" != "xno"; then
# POSIX specifies that poll() "shall fail with EINVAL if the nfds argument
# is greater than OPEN_MAX". On some platforms that includes implementions
-# ofselect in userspace on top of poll() so check both work with rlimit NOFILES
-# so check that both work before enabling the rlimit sandbox.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if select and/or poll works with descriptor rlimit" >&5
-$as_echo_n "checking if select and/or poll works with descriptor rlimit... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming no" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming no" >&2;}
+# of select in userspace on top of poll() so check both work with rlimit
+# NOFILES so check that both work before enabling the rlimit sandbox.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if select and/or poll works with descriptor rlimit" >&5
+printf %s "checking if select and/or poll works with descriptor rlimit... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming no" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming no" >&2;}
select_works_with_rlimit=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15524,7 +17162,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
struct rlimit rl_zero;
@@ -15559,13 +17197,14 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
select_works_with_rlimit=yes
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
select_works_with_rlimit=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15573,54 +17212,15 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
-ac_fn_c_check_member "$LINENO" "struct pollfd" "fd" "ac_cv_member_struct_pollfd_fd" "
-#include <sys/types.h>
-#ifdef HAVE_POLL_H
-#include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-
-"
-if test "x$ac_cv_member_struct_pollfd_fd" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_POLLFD_FD 1
-_ACEOF
-
-
-fi
-
-
-ac_fn_c_check_type "$LINENO" "nfds_t" "ac_cv_type_nfds_t" "
-#include <sys/types.h>
-#ifdef HAVE_POLL_H
-#include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-
-"
-if test "x$ac_cv_type_nfds_t" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_NFDS_T 1
-_ACEOF
-
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if setrlimit(RLIMIT_NOFILE,{0,0}) works" >&5
-$as_echo_n "checking if setrlimit(RLIMIT_NOFILE,{0,0}) works... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setrlimit(RLIMIT_NOFILE,{0,0}) works" >&5
+printf %s "checking if setrlimit(RLIMIT_NOFILE,{0,0}) works... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming yes" >&2;}
rlimit_nofile_zero_works=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15633,7 +17233,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
struct rlimit rl_zero;
@@ -15647,13 +17247,14 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
rlimit_nofile_zero_works=yes
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
rlimit_nofile_zero_works=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15661,13 +17262,14 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if setrlimit RLIMIT_FSIZE works" >&5
-$as_echo_n "checking if setrlimit RLIMIT_FSIZE works... " >&6; }
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
-$as_echo "$as_me: WARNING: cross compiling: assuming yes" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setrlimit RLIMIT_FSIZE works" >&5
+printf %s "checking if setrlimit RLIMIT_FSIZE works... " >&6; }
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming yes" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: assuming yes" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15676,7 +17278,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
struct rlimit rl_zero;
@@ -15688,20 +17290,22 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define SANDBOX_SKIP_RLIMIT_FSIZE 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_SKIP_RLIMIT_FSIZE 1" >>confdefs.h
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+fi
if test "x$sandbox_arg" = "xpledge" || \
( test -z "$sandbox_arg" && test "x$ac_cv_func_pledge" = "xyes" ) ; then
@@ -15709,7 +17313,7 @@ if test "x$sandbox_arg" = "xpledge" || \
as_fn_error $? "pledge sandbox requires pledge(2) support" "$LINENO" 5
SANDBOX_STYLE="pledge"
-$as_echo "#define SANDBOX_PLEDGE 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_PLEDGE 1" >>confdefs.h
elif test "x$sandbox_arg" = "xsystrace" || \
( test -z "$sandbox_arg" && test "x$have_systr_policy_kill" = "x1" ) ; then
@@ -15717,7 +17321,7 @@ elif test "x$sandbox_arg" = "xsystrace" || \
as_fn_error $? "systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support" "$LINENO" 5
SANDBOX_STYLE="systrace"
-$as_echo "#define SANDBOX_SYSTRACE 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_SYSTRACE 1" >>confdefs.h
elif test "x$sandbox_arg" = "xdarwin" || \
( test -z "$sandbox_arg" && test "x$ac_cv_func_sandbox_init" = "xyes" && \
@@ -15727,7 +17331,7 @@ elif test "x$sandbox_arg" = "xdarwin" || \
as_fn_error $? "Darwin seatbelt sandbox requires sandbox.h and sandbox_init function" "$LINENO" 5
SANDBOX_STYLE="darwin"
-$as_echo "#define SANDBOX_DARWIN 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_DARWIN 1" >>confdefs.h
elif test "x$sandbox_arg" = "xseccomp_filter" || \
( test -z "$sandbox_arg" && \
@@ -15748,7 +17352,7 @@ elif test "x$sandbox_arg" = "xseccomp_filter" || \
as_fn_error $? "seccomp_filter sandbox requires prctl function" "$LINENO" 5
SANDBOX_STYLE="seccomp_filter"
-$as_echo "#define SANDBOX_SECCOMP_FILTER 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_SECCOMP_FILTER 1" >>confdefs.h
elif test "x$sandbox_arg" = "xcapsicum" || \
( test -z "$sandbox_arg" && \
@@ -15761,7 +17365,7 @@ elif test "x$sandbox_arg" = "xcapsicum" || \
as_fn_error $? "capsicum sandbox requires cap_rights_limit function" "$LINENO" 5
SANDBOX_STYLE="capsicum"
-$as_echo "#define SANDBOX_CAPSICUM 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_CAPSICUM 1" >>confdefs.h
elif test "x$sandbox_arg" = "xrlimit" || \
( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" && \
@@ -15773,19 +17377,19 @@ elif test "x$sandbox_arg" = "xrlimit" || \
as_fn_error $? "rlimit sandbox requires select to work with rlimit" "$LINENO" 5
SANDBOX_STYLE="rlimit"
-$as_echo "#define SANDBOX_RLIMIT 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_RLIMIT 1" >>confdefs.h
elif test "x$sandbox_arg" = "xsolaris" || \
( test -z "$sandbox_arg" && test "x$SOLARIS_PRIVS" = "xyes" ) ; then
SANDBOX_STYLE="solaris"
-$as_echo "#define SANDBOX_SOLARIS 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_SOLARIS 1" >>confdefs.h
elif test -z "$sandbox_arg" || test "x$sandbox_arg" = "xno" || \
test "x$sandbox_arg" = "xnone" || test "x$sandbox_arg" = "xnull" ; then
SANDBOX_STYLE="none"
-$as_echo "#define SANDBOX_NULL 1" >>confdefs.h
+printf "%s\n" "#define SANDBOX_NULL 1" >>confdefs.h
else
as_fn_error $? "unsupported --with-sandbox" "$LINENO" 5
@@ -15798,29 +17402,26 @@ fi
# Check for long long datatypes
ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
-if test "x$ac_cv_type_long_long" = xyes; then :
+if test "x$ac_cv_type_long_long" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LONG_LONG 1
-_ACEOF
+printf "%s\n" "#define HAVE_LONG_LONG 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "unsigned long long" "ac_cv_type_unsigned_long_long" "$ac_includes_default"
-if test "x$ac_cv_type_unsigned_long_long" = xyes; then :
+if test "x$ac_cv_type_unsigned_long_long" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNSIGNED_LONG_LONG 1
-_ACEOF
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "long double" "ac_cv_type_long_double" "$ac_includes_default"
-if test "x$ac_cv_type_long_double" = xyes; then :
+if test "x$ac_cv_type_long_double" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LONG_DOUBLE 1
-_ACEOF
+printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
fi
@@ -15831,17 +17432,19 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short int" >&5
-$as_echo_n "checking size of short int... " >&6; }
-if ${ac_cv_sizeof_short_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short int))" "ac_cv_sizeof_short_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short int" >&5
+printf %s "checking size of short int... " >&6; }
+if test ${ac_cv_sizeof_short_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short int))" "ac_cv_sizeof_short_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_short_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (short int)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -15850,31 +17453,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short_int" >&5
-$as_echo "$ac_cv_sizeof_short_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short_int" >&5
+printf "%s\n" "$ac_cv_sizeof_short_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT_INT $ac_cv_sizeof_short_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_SHORT_INT $ac_cv_sizeof_short_int" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+if test ${ac_cv_sizeof_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (int)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -15883,31 +17486,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+printf "%s\n" "$ac_cv_sizeof_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long int" >&5
-$as_echo_n "checking size of long int... " >&6; }
-if ${ac_cv_sizeof_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long int))" "ac_cv_sizeof_long_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long int" >&5
+printf %s "checking size of long int... " >&6; }
+if test ${ac_cv_sizeof_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long int))" "ac_cv_sizeof_long_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long int)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -15916,31 +17519,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_int" >&5
-$as_echo "$ac_cv_sizeof_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_int" >&5
+printf "%s\n" "$ac_cv_sizeof_long_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_INT $ac_cv_sizeof_long_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG_INT $ac_cv_sizeof_long_int" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long int" >&5
-$as_echo_n "checking size of long long int... " >&6; }
-if ${ac_cv_sizeof_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long int))" "ac_cv_sizeof_long_long_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long int" >&5
+printf %s "checking size of long long int... " >&6; }
+if test ${ac_cv_sizeof_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long int))" "ac_cv_sizeof_long_long_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long_long_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long long int)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -15949,25 +17552,24 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long_int" >&5
-$as_echo "$ac_cv_sizeof_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long_int" >&5
+printf "%s\n" "$ac_cv_sizeof_long_long_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG_INT $ac_cv_sizeof_long_long_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG_LONG_INT $ac_cv_sizeof_long_long_int" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
-$as_echo_n "checking size of time_t... " >&6; }
-if ${ac_cv_sizeof_time_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+printf %s "checking size of time_t... " >&6; }
+if test ${ac_cv_sizeof_time_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
@@ -15978,12 +17580,13 @@ else
#endif
-"; then :
+"
+then :
-else
+else $as_nop
if test "$ac_cv_type_time_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (time_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -15992,14 +17595,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-$as_echo "$ac_cv_sizeof_time_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
+printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_TIME_T $ac_cv_sizeof_time_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
@@ -16010,15 +17611,16 @@ fi
# compute LLONG_MIN and LLONG_MAX if we don't know them.
if test -z "$have_llong_max" && test -z "$have_long_long_max"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for max value of long long" >&5
-$as_echo_n "checking for max value of long long... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for max value of long long" >&5
+printf %s "checking for max value of long long... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16060,7 +17662,7 @@ fprint_ll(FILE *f, long long n)
}
int
-main ()
+main (void)
{
FILE *f;
@@ -16101,32 +17703,29 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
llong_min=`$AWK '{print $1}' conftest.llminmax`
llong_max=`$AWK '{print $2}' conftest.llminmax`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $llong_max" >&5
-$as_echo "$llong_max" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $llong_max" >&5
+printf "%s\n" "$llong_max" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define LLONG_MAX ${llong_max}LL
-_ACEOF
+printf "%s\n" "#define LLONG_MAX ${llong_max}LL" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for min value of long long" >&5
-$as_echo_n "checking for min value of long long... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $llong_min" >&5
-$as_echo "$llong_min" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for min value of long long" >&5
+printf %s "checking for min value of long long... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $llong_min" >&5
+printf "%s\n" "$llong_min" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define LLONG_MIN ${llong_min}LL
-_ACEOF
+printf "%s\n" "#define LLONG_MIN ${llong_min}LL" >>confdefs.h
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -16135,7 +17734,7 @@ fi
fi
-ac_fn_c_check_decl "$LINENO" "UINT32_MAX" "ac_cv_have_decl_UINT32_MAX" "
+ac_fn_check_decl "$LINENO" "UINT32_MAX" "ac_cv_have_decl_UINT32_MAX" "
#ifdef HAVE_SYS_LIMITS_H
# include <sys/limits.h>
#endif
@@ -16146,85 +17745,87 @@ ac_fn_c_check_decl "$LINENO" "UINT32_MAX" "ac_cv_have_decl_UINT32_MAX" "
# include <stdint.h>
#endif
-"
-if test "x$ac_cv_have_decl_UINT32_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_UINT32_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_UINT32_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_UINT32_MAX $ac_have_decl" >>confdefs.h
# More checks for data types
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int type" >&5
-$as_echo_n "checking for u_int type... " >&6; }
-if ${ac_cv_have_u_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for u_int type" >&5
+printf %s "checking for u_int type... " >&6; }
+if test ${ac_cv_have_u_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
u_int a; a = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_u_int="yes"
-else
+else $as_nop
ac_cv_have_u_int="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_int" >&5
-$as_echo "$ac_cv_have_u_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_int" >&5
+printf "%s\n" "$ac_cv_have_u_int" >&6; }
if test "x$ac_cv_have_u_int" = "xyes" ; then
-$as_echo "#define HAVE_U_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_U_INT 1" >>confdefs.h
have_u_int=1
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for intXX_t types" >&5
-$as_echo_n "checking for intXX_t types... " >&6; }
-if ${ac_cv_have_intxx_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for intXX_t types" >&5
+printf %s "checking for intXX_t types... " >&6; }
+if test ${ac_cv_have_intxx_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
int8_t a; int16_t b; int32_t c; a = b = c = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_intxx_t="yes"
-else
+else $as_nop
ac_cv_have_intxx_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_intxx_t" >&5
-$as_echo "$ac_cv_have_intxx_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_intxx_t" >&5
+printf "%s\n" "$ac_cv_have_intxx_t" >&6; }
if test "x$ac_cv_have_intxx_t" = "xyes" ; then
-$as_echo "#define HAVE_INTXX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INTXX_T 1" >>confdefs.h
have_intxx_t=1
fi
@@ -16232,39 +17833,41 @@ fi
if (test -z "$have_intxx_t" && \
test "x$ac_cv_header_stdint_h" = "xyes")
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intXX_t types in stdint.h" >&5
-$as_echo_n "checking for intXX_t types in stdint.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for intXX_t types in stdint.h" >&5
+printf %s "checking for intXX_t types in stdint.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdint.h>
int
-main ()
+main (void)
{
int8_t a; int16_t b; int32_t c; a = b = c = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_INTXX_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INTXX_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for int64_t type" >&5
-$as_echo_n "checking for int64_t type... " >&6; }
-if ${ac_cv_have_int64_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for int64_t type" >&5
+printf %s "checking for int64_t type... " >&6; }
+if test ${ac_cv_have_int64_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16279,7 +17882,7 @@ else
#endif
int
-main ()
+main (void)
{
int64_t a; a = 1;
@@ -16288,118 +17891,124 @@ int64_t a; a = 1;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_int64_t="yes"
-else
+else $as_nop
ac_cv_have_int64_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_int64_t" >&5
-$as_echo "$ac_cv_have_int64_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_int64_t" >&5
+printf "%s\n" "$ac_cv_have_int64_t" >&6; }
if test "x$ac_cv_have_int64_t" = "xyes" ; then
-$as_echo "#define HAVE_INT64_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INT64_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t types" >&5
-$as_echo_n "checking for u_intXX_t types... " >&6; }
-if ${ac_cv_have_u_intxx_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t types" >&5
+printf %s "checking for u_intXX_t types... " >&6; }
+if test ${ac_cv_have_u_intxx_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_u_intxx_t="yes"
-else
+else $as_nop
ac_cv_have_u_intxx_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_intxx_t" >&5
-$as_echo "$ac_cv_have_u_intxx_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_intxx_t" >&5
+printf "%s\n" "$ac_cv_have_u_intxx_t" >&6; }
if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
-$as_echo "#define HAVE_U_INTXX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_U_INTXX_T 1" >>confdefs.h
have_u_intxx_t=1
fi
if test -z "$have_u_intxx_t" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t types in sys/socket.h" >&5
-$as_echo_n "checking for u_intXX_t types in sys/socket.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for u_intXX_t types in sys/socket.h" >&5
+printf %s "checking for u_intXX_t types in sys/socket.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/socket.h>
int
-main ()
+main (void)
{
u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_U_INTXX_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_U_INTXX_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int64_t types" >&5
-$as_echo_n "checking for u_int64_t types... " >&6; }
-if ${ac_cv_have_u_int64_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for u_int64_t types" >&5
+printf %s "checking for u_int64_t types... " >&6; }
+if test ${ac_cv_have_u_int64_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
u_int64_t a; a = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_u_int64_t="yes"
-else
+else $as_nop
ac_cv_have_u_int64_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_int64_t" >&5
-$as_echo "$ac_cv_have_u_int64_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_int64_t" >&5
+printf "%s\n" "$ac_cv_have_u_int64_t" >&6; }
if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
-$as_echo "#define HAVE_U_INT64_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_U_INT64_T 1" >>confdefs.h
have_u_int64_t=1
fi
@@ -16407,40 +18016,42 @@ fi
if (test -z "$have_u_int64_t" && \
test "x$ac_cv_header_sys_bitypes_h" = "xyes")
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int64_t type in sys/bitypes.h" >&5
-$as_echo_n "checking for u_int64_t type in sys/bitypes.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for u_int64_t type in sys/bitypes.h" >&5
+printf %s "checking for u_int64_t type in sys/bitypes.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/bitypes.h>
int
-main ()
+main (void)
{
u_int64_t a; a = 1
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_U_INT64_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_U_INT64_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test -z "$have_u_intxx_t" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types" >&5
-$as_echo_n "checking for uintXX_t types... " >&6; }
-if ${ac_cv_have_uintxx_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types" >&5
+printf %s "checking for uintXX_t types... " >&6; }
+if test ${ac_cv_have_uintxx_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16448,7 +18059,7 @@ else
#include <sys/types.h>
int
-main ()
+main (void)
{
uint8_t a;
@@ -16460,20 +18071,21 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_uintxx_t="yes"
-else
+else $as_nop
ac_cv_have_uintxx_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_uintxx_t" >&5
-$as_echo "$ac_cv_have_uintxx_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_uintxx_t" >&5
+printf "%s\n" "$ac_cv_have_uintxx_t" >&6; }
if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
-$as_echo "#define HAVE_UINTXX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UINTXX_T 1" >>confdefs.h
fi
fi
@@ -16481,77 +18093,79 @@ fi
if (test -z "$have_uintxx_t" && \
test "x$ac_cv_header_stdint_h" = "xyes")
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types in stdint.h" >&5
-$as_echo_n "checking for uintXX_t types in stdint.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types in stdint.h" >&5
+printf %s "checking for uintXX_t types in stdint.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdint.h>
int
-main ()
+main (void)
{
uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_UINTXX_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_UINTXX_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if (test -z "$have_uintxx_t" && \
test "x$ac_cv_header_inttypes_h" = "xyes")
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types in inttypes.h" >&5
-$as_echo_n "checking for uintXX_t types in inttypes.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uintXX_t types in inttypes.h" >&5
+printf %s "checking for uintXX_t types in inttypes.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <inttypes.h>
int
-main ()
+main (void)
{
uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_UINTXX_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_UINTXX_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
test "x$ac_cv_header_sys_bitypes_h" = "xyes")
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5
-$as_echo_n "checking for intXX_t and u_intXX_t types in sys/bitypes.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for intXX_t and u_intXX_t types in sys/bitypes.h" >&5
+printf %s "checking for intXX_t and u_intXX_t types in sys/bitypes.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/bitypes.h>
int
-main ()
+main (void)
{
int8_t a; int16_t b; int32_t c;
@@ -16562,55 +18176,58 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_U_INTXX_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_U_INTXX_T 1" >>confdefs.h
- $as_echo "#define HAVE_INTXX_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INTXX_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_char" >&5
-$as_echo_n "checking for u_char... " >&6; }
-if ${ac_cv_have_u_char+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for u_char" >&5
+printf %s "checking for u_char... " >&6; }
+if test ${ac_cv_have_u_char+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
u_char foo; foo = 125;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_u_char="yes"
-else
+else $as_nop
ac_cv_have_u_char="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_char" >&5
-$as_echo "$ac_cv_have_u_char" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_u_char" >&5
+printf "%s\n" "$ac_cv_have_u_char" >&6; }
if test "x$ac_cv_have_u_char" = "xyes" ; then
-$as_echo "#define HAVE_U_CHAR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_U_CHAR 1" >>confdefs.h
fi
@@ -16621,11 +18238,10 @@ ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "
#endif
"
-if test "x$ac_cv_type_intmax_t" = xyes; then :
+if test "x$ac_cv_type_intmax_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTMAX_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h
fi
@@ -16636,11 +18252,10 @@ ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "
#endif
"
-if test "x$ac_cv_type_uintmax_t" = xyes; then :
+if test "x$ac_cv_type_uintmax_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UINTMAX_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h
fi
@@ -16650,15 +18265,17 @@ fi
ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include <sys/types.h>
#include <sys/socket.h>
"
-if test "x$ac_cv_type_socklen_t" = xyes; then :
+if test "x$ac_cv_type_socklen_t" = xyes
+then :
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t equivalent" >&5
-$as_echo_n "checking for socklen_t equivalent... " >&6; }
- if ${curl_cv_socklen_t_equiv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socklen_t equivalent" >&5
+printf %s "checking for socklen_t equivalent... " >&6; }
+ if test ${curl_cv_socklen_t_equiv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# Systems have either "struct sockaddr *" or
# "void *" as the second argument to getpeername
@@ -16674,7 +18291,7 @@ else
int getpeername (int, $arg2 *, $t *);
int
-main ()
+main (void)
{
$t len;
@@ -16685,13 +18302,14 @@ main ()
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
curl_cv_socklen_t_equiv="$t"
break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
done
@@ -16701,12 +18319,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $curl_cv_socklen_t_equiv" >&5
-$as_echo "$curl_cv_socklen_t_equiv" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_socklen_t_equiv" >&5
+printf "%s\n" "$curl_cv_socklen_t_equiv" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define socklen_t $curl_cv_socklen_t_equiv
-_ACEOF
+printf "%s\n" "#define socklen_t $curl_cv_socklen_t_equiv" >>confdefs.h
fi
@@ -16714,21 +18330,19 @@ fi
ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include <signal.h>
"
-if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
+if test "x$ac_cv_type_sig_atomic_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SIG_ATOMIC_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "sighandler_t" "ac_cv_type_sighandler_t" "#include <signal.h>
"
-if test "x$ac_cv_type_sighandler_t" = xyes; then :
+if test "x$ac_cv_type_sighandler_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGHANDLER_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_SIGHANDLER_T 1" >>confdefs.h
fi
@@ -16746,11 +18360,10 @@ ac_fn_c_check_type "$LINENO" "fsblkcnt_t" "ac_cv_type_fsblkcnt_t" "
#endif
"
-if test "x$ac_cv_type_fsblkcnt_t" = xyes; then :
+if test "x$ac_cv_type_fsblkcnt_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_FSBLKCNT_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_FSBLKCNT_T 1" >>confdefs.h
fi
@@ -16767,11 +18380,10 @@ ac_fn_c_check_type "$LINENO" "fsfilcnt_t" "ac_cv_type_fsfilcnt_t" "
#endif
"
-if test "x$ac_cv_type_fsfilcnt_t" = xyes; then :
+if test "x$ac_cv_type_fsfilcnt_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_FSFILCNT_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_FSFILCNT_T 1" >>confdefs.h
fi
@@ -16797,11 +18409,10 @@ ac_fn_c_check_member "$LINENO" "struct statfs" "f_files" "ac_cv_member_struct_st
#endif
"
-if test "x$ac_cv_member_struct_statfs_f_files" = xyes; then :
+if test "x$ac_cv_member_struct_statfs_f_files" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_FILES 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STATFS_F_FILES 1" >>confdefs.h
fi
@@ -16825,11 +18436,10 @@ ac_fn_c_check_member "$LINENO" "struct statfs" "f_flags" "ac_cv_member_struct_st
#endif
"
-if test "x$ac_cv_member_struct_statfs_f_flags" = xyes; then :
+if test "x$ac_cv_member_struct_statfs_f_flags" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STATFS_F_FLAGS 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STATFS_F_FLAGS 1" >>confdefs.h
fi
@@ -16839,134 +18449,139 @@ fi
ac_fn_c_check_type "$LINENO" "in_addr_t" "ac_cv_type_in_addr_t" "#include <sys/types.h>
#include <netinet/in.h>
"
-if test "x$ac_cv_type_in_addr_t" = xyes; then :
+if test "x$ac_cv_type_in_addr_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_IN_ADDR_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_IN_ADDR_T 1" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "in_port_t" "ac_cv_type_in_port_t" "#include <sys/types.h>
#include <netinet/in.h>
"
-if test "x$ac_cv_type_in_port_t" = xyes; then :
+if test "x$ac_cv_type_in_port_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_IN_PORT_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_IN_PORT_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size_t" >&5
-$as_echo_n "checking for size_t... " >&6; }
-if ${ac_cv_have_size_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for size_t" >&5
+printf %s "checking for size_t... " >&6; }
+if test ${ac_cv_have_size_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
size_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_size_t="yes"
-else
+else $as_nop
ac_cv_have_size_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_size_t" >&5
-$as_echo "$ac_cv_have_size_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_size_t" >&5
+printf "%s\n" "$ac_cv_have_size_t" >&6; }
if test "x$ac_cv_have_size_t" = "xyes" ; then
-$as_echo "#define HAVE_SIZE_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SIZE_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
-$as_echo_n "checking for ssize_t... " >&6; }
-if ${ac_cv_have_ssize_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
+printf %s "checking for ssize_t... " >&6; }
+if test ${ac_cv_have_ssize_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
ssize_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_ssize_t="yes"
-else
+else $as_nop
ac_cv_have_ssize_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ssize_t" >&5
-$as_echo "$ac_cv_have_ssize_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ssize_t" >&5
+printf "%s\n" "$ac_cv_have_ssize_t" >&6; }
if test "x$ac_cv_have_ssize_t" = "xyes" ; then
-$as_echo "#define HAVE_SSIZE_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SSIZE_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5
-$as_echo_n "checking for clock_t... " >&6; }
-if ${ac_cv_have_clock_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5
+printf %s "checking for clock_t... " >&6; }
+if test ${ac_cv_have_clock_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <time.h>
int
-main ()
+main (void)
{
clock_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_clock_t="yes"
-else
+else $as_nop
ac_cv_have_clock_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_clock_t" >&5
-$as_echo "$ac_cv_have_clock_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_clock_t" >&5
+printf "%s\n" "$ac_cv_have_clock_t" >&6; }
if test "x$ac_cv_have_clock_t" = "xyes" ; then
-$as_echo "#define HAVE_CLOCK_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CLOCK_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sa_family_t" >&5
-$as_echo_n "checking for sa_family_t... " >&6; }
-if ${ac_cv_have_sa_family_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sa_family_t" >&5
+printf %s "checking for sa_family_t... " >&6; }
+if test ${ac_cv_have_sa_family_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16975,16 +18590,17 @@ else
#include <sys/socket.h>
int
-main ()
+main (void)
{
sa_family_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_sa_family_t="yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16993,107 +18609,113 @@ else
#include <netinet/in.h>
int
-main ()
+main (void)
{
sa_family_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_sa_family_t="yes"
-else
+else $as_nop
ac_cv_have_sa_family_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sa_family_t" >&5
-$as_echo "$ac_cv_have_sa_family_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sa_family_t" >&5
+printf "%s\n" "$ac_cv_have_sa_family_t" >&6; }
if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
-$as_echo "#define HAVE_SA_FAMILY_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SA_FAMILY_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pid_t" >&5
-$as_echo_n "checking for pid_t... " >&6; }
-if ${ac_cv_have_pid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pid_t" >&5
+printf %s "checking for pid_t... " >&6; }
+if test ${ac_cv_have_pid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
pid_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_pid_t="yes"
-else
+else $as_nop
ac_cv_have_pid_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pid_t" >&5
-$as_echo "$ac_cv_have_pid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_pid_t" >&5
+printf "%s\n" "$ac_cv_have_pid_t" >&6; }
if test "x$ac_cv_have_pid_t" = "xyes" ; then
-$as_echo "#define HAVE_PID_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PID_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mode_t" >&5
-$as_echo_n "checking for mode_t... " >&6; }
-if ${ac_cv_have_mode_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mode_t" >&5
+printf %s "checking for mode_t... " >&6; }
+if test ${ac_cv_have_mode_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
mode_t foo; foo = 1235;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_mode_t="yes"
-else
+else $as_nop
ac_cv_have_mode_t="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_mode_t" >&5
-$as_echo "$ac_cv_have_mode_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_mode_t" >&5
+printf "%s\n" "$ac_cv_have_mode_t" >&6; }
if test "x$ac_cv_have_mode_t" = "xyes" ; then
-$as_echo "#define HAVE_MODE_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MODE_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_storage" >&5
-$as_echo_n "checking for struct sockaddr_storage... " >&6; }
-if ${ac_cv_have_struct_sockaddr_storage+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_storage" >&5
+printf %s "checking for struct sockaddr_storage... " >&6; }
+if test ${ac_cv_have_struct_sockaddr_storage+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17102,35 +18724,37 @@ else
#include <sys/socket.h>
int
-main ()
+main (void)
{
struct sockaddr_storage s;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_struct_sockaddr_storage="yes"
-else
+else $as_nop
ac_cv_have_struct_sockaddr_storage="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_sockaddr_storage" >&5
-$as_echo "$ac_cv_have_struct_sockaddr_storage" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_sockaddr_storage" >&5
+printf "%s\n" "$ac_cv_have_struct_sockaddr_storage" >&6; }
if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
-$as_echo "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_in6" >&5
-$as_echo_n "checking for struct sockaddr_in6... " >&6; }
-if ${ac_cv_have_struct_sockaddr_in6+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct sockaddr_in6" >&5
+printf %s "checking for struct sockaddr_in6... " >&6; }
+if test ${ac_cv_have_struct_sockaddr_in6+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17139,35 +18763,37 @@ else
#include <netinet/in.h>
int
-main ()
+main (void)
{
struct sockaddr_in6 s; s.sin6_family = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_struct_sockaddr_in6="yes"
-else
+else $as_nop
ac_cv_have_struct_sockaddr_in6="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_sockaddr_in6" >&5
-$as_echo "$ac_cv_have_struct_sockaddr_in6" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_sockaddr_in6" >&5
+printf "%s\n" "$ac_cv_have_struct_sockaddr_in6" >&6; }
if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
-$as_echo "#define HAVE_STRUCT_SOCKADDR_IN6 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_IN6 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct in6_addr" >&5
-$as_echo_n "checking for struct in6_addr... " >&6; }
-if ${ac_cv_have_struct_in6_addr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct in6_addr" >&5
+printf %s "checking for struct in6_addr... " >&6; }
+if test ${ac_cv_have_struct_in6_addr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17176,27 +18802,28 @@ else
#include <netinet/in.h>
int
-main ()
+main (void)
{
struct in6_addr s; s.s6_addr[0] = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_struct_in6_addr="yes"
-else
+else $as_nop
ac_cv_have_struct_in6_addr="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_in6_addr" >&5
-$as_echo "$ac_cv_have_struct_in6_addr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_in6_addr" >&5
+printf "%s\n" "$ac_cv_have_struct_in6_addr" >&6; }
if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
-$as_echo "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h
ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_scope_id" "ac_cv_member_struct_sockaddr_in6_sin6_scope_id" "
@@ -17206,22 +18833,22 @@ $as_echo "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h
#include <netinet/in.h>
"
-if test "x$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" = xyes; then :
+if test "x$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1" >>confdefs.h
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct addrinfo" >&5
-$as_echo_n "checking for struct addrinfo... " >&6; }
-if ${ac_cv_have_struct_addrinfo+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct addrinfo" >&5
+printf %s "checking for struct addrinfo... " >&6; }
+if test ${ac_cv_have_struct_addrinfo+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17231,70 +18858,74 @@ else
#include <netdb.h>
int
-main ()
+main (void)
{
struct addrinfo s; s.ai_flags = AI_PASSIVE;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_struct_addrinfo="yes"
-else
+else $as_nop
ac_cv_have_struct_addrinfo="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_addrinfo" >&5
-$as_echo "$ac_cv_have_struct_addrinfo" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_addrinfo" >&5
+printf "%s\n" "$ac_cv_have_struct_addrinfo" >&6; }
if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
-$as_echo "#define HAVE_STRUCT_ADDRINFO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_ADDRINFO 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5
-$as_echo_n "checking for struct timeval... " >&6; }
-if ${ac_cv_have_struct_timeval+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5
+printf %s "checking for struct timeval... " >&6; }
+if test ${ac_cv_have_struct_timeval+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/time.h>
int
-main ()
+main (void)
{
struct timeval tv; tv.tv_sec = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_struct_timeval="yes"
-else
+else $as_nop
ac_cv_have_struct_timeval="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_timeval" >&5
-$as_echo "$ac_cv_have_struct_timeval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_timeval" >&5
+printf "%s\n" "$ac_cv_have_struct_timeval" >&6; }
if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
-$as_echo "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h
have_struct_timeval=1
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec" >&5
-$as_echo_n "checking for struct timespec... " >&6; }
-if ${ac_cv_have_struct_timespec+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec" >&5
+printf %s "checking for struct timespec... " >&6; }
+if test ${ac_cv_have_struct_timespec+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17307,27 +18938,28 @@ else
#endif
int
-main ()
+main (void)
{
struct timespec ts; ts.tv_sec = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_struct_timespec="yes"
-else
+else $as_nop
ac_cv_have_struct_timespec="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_timespec" >&5
-$as_echo "$ac_cv_have_struct_timespec" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_struct_timespec" >&5
+printf "%s\n" "$ac_cv_have_struct_timespec" >&6; }
if test "x$ac_cv_have_struct_timespec" = "xyes" ; then
-$as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
have_struct_timespec=1
fi
@@ -17341,11 +18973,12 @@ if test "x$ac_cv_have_int64_t" = "xno" && \
echo ""
exit 1;
else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
-$as_echo "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Assuming working snprintf()" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: Assuming working snprintf()" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17374,10 +19007,11 @@ main() { exit(0); }
#endif
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
true
-else
- $as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define BROKEN_SNPRINTF 1" >>confdefs.h
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -17390,11 +19024,12 @@ fi
# look for field 'ut_host' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_host field in utmp.h" >&5
-$as_echo_n "checking for ut_host field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_host field in utmp.h" >&5
+printf %s "checking for ut_host field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17402,38 +19037,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_host" >/dev/null 2>&1; then :
+ $EGREP "ut_host" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_HOST_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_HOST_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_host' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_host
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_host field in utmpx.h" >&5
-$as_echo_n "checking for ut_host field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_host field in utmpx.h" >&5
+printf %s "checking for ut_host field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17441,38 +19078,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_host" >/dev/null 2>&1; then :
+ $EGREP "ut_host" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_HOST_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_HOST_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'syslen' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"syslen
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for syslen field in utmpx.h" >&5
-$as_echo_n "checking for syslen field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for syslen field in utmpx.h" >&5
+printf %s "checking for syslen field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17480,38 +19119,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "syslen" >/dev/null 2>&1; then :
+ $EGREP "syslen" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_SYSLEN_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYSLEN_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_pid' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_pid
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_pid field in utmp.h" >&5
-$as_echo_n "checking for ut_pid field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_pid field in utmp.h" >&5
+printf %s "checking for ut_pid field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17519,38 +19160,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_pid" >/dev/null 2>&1; then :
+ $EGREP "ut_pid" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_PID_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PID_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_type' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_type field in utmp.h" >&5
-$as_echo_n "checking for ut_type field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_type field in utmp.h" >&5
+printf %s "checking for ut_type field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17558,38 +19201,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_type" >/dev/null 2>&1; then :
+ $EGREP "ut_type" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_TYPE_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TYPE_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_type' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_type
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_type field in utmpx.h" >&5
-$as_echo_n "checking for ut_type field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_type field in utmpx.h" >&5
+printf %s "checking for ut_type field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17597,38 +19242,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_type" >/dev/null 2>&1; then :
+ $EGREP "ut_type" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_TYPE_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TYPE_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_tv' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_tv field in utmp.h" >&5
-$as_echo_n "checking for ut_tv field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_tv field in utmp.h" >&5
+printf %s "checking for ut_tv field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17636,38 +19283,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_tv" >/dev/null 2>&1; then :
+ $EGREP "ut_tv" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_TV_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TV_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_id' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_id field in utmp.h" >&5
-$as_echo_n "checking for ut_id field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_id field in utmp.h" >&5
+printf %s "checking for ut_id field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17675,38 +19324,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_id" >/dev/null 2>&1; then :
+ $EGREP "ut_id" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_ID_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ID_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_id' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_id
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_id field in utmpx.h" >&5
-$as_echo_n "checking for ut_id field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_id field in utmpx.h" >&5
+printf %s "checking for ut_id field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17714,38 +19365,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_id" >/dev/null 2>&1; then :
+ $EGREP "ut_id" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_ID_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ID_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_addr' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr field in utmp.h" >&5
-$as_echo_n "checking for ut_addr field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_addr field in utmp.h" >&5
+printf %s "checking for ut_addr field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17753,38 +19406,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_addr" >/dev/null 2>&1; then :
+ $EGREP "ut_addr" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_ADDR_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ADDR_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_addr' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr field in utmpx.h" >&5
-$as_echo_n "checking for ut_addr field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_addr field in utmpx.h" >&5
+printf %s "checking for ut_addr field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17792,38 +19447,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_addr" >/dev/null 2>&1; then :
+ $EGREP "ut_addr" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_ADDR_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ADDR_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_addr_v6' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr_v6 field in utmp.h" >&5
-$as_echo_n "checking for ut_addr_v6 field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_addr_v6 field in utmp.h" >&5
+printf %s "checking for ut_addr_v6 field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17831,38 +19488,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_addr_v6" >/dev/null 2>&1; then :
+ $EGREP "ut_addr_v6" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_ADDR_V6_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ADDR_V6_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_addr_v6' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_addr_v6
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_addr_v6 field in utmpx.h" >&5
-$as_echo_n "checking for ut_addr_v6 field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_addr_v6 field in utmpx.h" >&5
+printf %s "checking for ut_addr_v6 field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17870,38 +19529,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_addr_v6" >/dev/null 2>&1; then :
+ $EGREP "ut_addr_v6" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_ADDR_V6_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ADDR_V6_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_exit' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_exit
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_exit field in utmp.h" >&5
-$as_echo_n "checking for ut_exit field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_exit field in utmp.h" >&5
+printf %s "checking for ut_exit field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17909,38 +19570,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_exit" >/dev/null 2>&1; then :
+ $EGREP "ut_exit" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_EXIT_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_EXIT_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_time' in header 'utmp.h'
ossh_safe=`echo "utmp.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_time field in utmp.h" >&5
-$as_echo_n "checking for ut_time field in utmp.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_time field in utmp.h" >&5
+printf %s "checking for ut_time field in utmp.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17948,38 +19611,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_time" >/dev/null 2>&1; then :
+ $EGREP "ut_time" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_TIME_IN_UTMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TIME_IN_UTMP 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_time' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_time
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_time field in utmpx.h" >&5
-$as_echo_n "checking for ut_time field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_time field in utmpx.h" >&5
+printf %s "checking for ut_time field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17987,38 +19652,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_time" >/dev/null 2>&1; then :
+ $EGREP "ut_time" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_TIME_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TIME_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_tv' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_tv
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_tv field in utmpx.h" >&5
-$as_echo_n "checking for ut_tv field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_tv field in utmpx.h" >&5
+printf %s "checking for ut_tv field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18026,38 +19693,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_tv" >/dev/null 2>&1; then :
+ $EGREP "ut_tv" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_TV_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TV_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# look for field 'ut_ss' in header 'utmpx.h'
ossh_safe=`echo "utmpx.h" | sed 'y%./+-%__p_%'`
ossh_varname="ossh_cv_$ossh_safe""_has_"ut_ss
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_ss field in utmpx.h" >&5
-$as_echo_n "checking for ut_ss field in utmpx.h... " >&6; }
- if eval \${$ossh_varname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ut_ss field in utmpx.h" >&5
+printf %s "checking for ut_ss field in utmpx.h... " >&6; }
+ if eval test \${$ossh_varname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18065,56 +19734,54 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "ut_ss" >/dev/null 2>&1; then :
+ $EGREP "ut_ss" >/dev/null 2>&1
+then :
eval "$ossh_varname=yes"
-else
+else $as_nop
eval "$ossh_varname=no"
fi
-rm -f conftest*
+rm -rf conftest*
fi
ossh_result=`eval 'echo $'"$ossh_varname"`
if test -n "`echo $ossh_varname`"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
-$as_echo "$ossh_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ossh_result" >&5
+printf "%s\n" "$ossh_result" >&6; }
if test "x$ossh_result" = "xyes"; then
-$as_echo "#define HAVE_SS_IN_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SS_IN_UTMPX 1" >>confdefs.h
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_blksize" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLKSIZE 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtim" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_mtim" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIM 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIM 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtime" "ac_cv_member_struct_stat_st_mtime" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtime" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_mtime" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_MTIME 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIME 1" >>confdefs.h
fi
@@ -18124,11 +19791,10 @@ ac_fn_c_check_member "$LINENO" "struct passwd" "pw_gecos" "ac_cv_member_struct_p
#include <pwd.h>
"
-if test "x$ac_cv_member_struct_passwd_pw_gecos" = xyes; then :
+if test "x$ac_cv_member_struct_passwd_pw_gecos" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PASSWD_PW_GECOS 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_GECOS 1" >>confdefs.h
fi
@@ -18137,11 +19803,10 @@ ac_fn_c_check_member "$LINENO" "struct passwd" "pw_class" "ac_cv_member_struct_p
#include <pwd.h>
"
-if test "x$ac_cv_member_struct_passwd_pw_class" = xyes; then :
+if test "x$ac_cv_member_struct_passwd_pw_class" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PASSWD_PW_CLASS 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_CLASS 1" >>confdefs.h
fi
@@ -18150,11 +19815,10 @@ ac_fn_c_check_member "$LINENO" "struct passwd" "pw_change" "ac_cv_member_struct_
#include <pwd.h>
"
-if test "x$ac_cv_member_struct_passwd_pw_change" = xyes; then :
+if test "x$ac_cv_member_struct_passwd_pw_change" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PASSWD_PW_CHANGE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_CHANGE 1" >>confdefs.h
fi
@@ -18163,11 +19827,10 @@ ac_fn_c_check_member "$LINENO" "struct passwd" "pw_expire" "ac_cv_member_struct_
#include <pwd.h>
"
-if test "x$ac_cv_member_struct_passwd_pw_expire" = xyes; then :
+if test "x$ac_cv_member_struct_passwd_pw_expire" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PASSWD_PW_EXPIRE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_PASSWD_PW_EXPIRE 1" >>confdefs.h
fi
@@ -18183,20 +19846,22 @@ ac_fn_c_check_member "$LINENO" "struct __res_state" "retrans" "ac_cv_member_stru
#include <resolv.h>
"
-if test "x$ac_cv_member_struct___res_state_retrans" = xyes; then :
+if test "x$ac_cv_member_struct___res_state_retrans" = xyes
+then :
-else
+else $as_nop
-$as_echo "#define __res_state state" >>confdefs.h
+printf "%s\n" "#define __res_state state" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ss_family field in struct sockaddr_storage" >&5
-$as_echo_n "checking for ss_family field in struct sockaddr_storage... " >&6; }
-if ${ac_cv_have_ss_family_in_struct_ss+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ss_family field in struct sockaddr_storage" >&5
+printf %s "checking for ss_family field in struct sockaddr_storage... " >&6; }
+if test ${ac_cv_have_ss_family_in_struct_ss+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18205,34 +19870,36 @@ else
#include <sys/socket.h>
int
-main ()
+main (void)
{
struct sockaddr_storage s; s.ss_family = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_ss_family_in_struct_ss="yes"
-else
+else $as_nop
ac_cv_have_ss_family_in_struct_ss="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ss_family_in_struct_ss" >&5
-$as_echo "$ac_cv_have_ss_family_in_struct_ss" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ss_family_in_struct_ss" >&5
+printf "%s\n" "$ac_cv_have_ss_family_in_struct_ss" >&6; }
if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
-$as_echo "#define HAVE_SS_FAMILY_IN_SS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SS_FAMILY_IN_SS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __ss_family field in struct sockaddr_storage" >&5
-$as_echo_n "checking for __ss_family field in struct sockaddr_storage... " >&6; }
-if ${ac_cv_have___ss_family_in_struct_ss+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __ss_family field in struct sockaddr_storage" >&5
+printf %s "checking for __ss_family field in struct sockaddr_storage... " >&6; }
+if test ${ac_cv_have___ss_family_in_struct_ss+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18241,35 +19908,37 @@ else
#include <sys/socket.h>
int
-main ()
+main (void)
{
struct sockaddr_storage s; s.__ss_family = 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have___ss_family_in_struct_ss="yes"
-else
+else $as_nop
ac_cv_have___ss_family_in_struct_ss="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___ss_family_in_struct_ss" >&5
-$as_echo "$ac_cv_have___ss_family_in_struct_ss" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___ss_family_in_struct_ss" >&5
+printf "%s\n" "$ac_cv_have___ss_family_in_struct_ss" >&6; }
if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
-$as_echo "#define HAVE___SS_FAMILY_IN_SS 1" >>confdefs.h
+printf "%s\n" "#define HAVE___SS_FAMILY_IN_SS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for msg_accrights field in struct msghdr" >&5
-$as_echo_n "checking for msg_accrights field in struct msghdr... " >&6; }
-if ${ac_cv_have_accrights_in_msghdr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for msg_accrights field in struct msghdr" >&5
+printf %s "checking for msg_accrights field in struct msghdr... " >&6; }
+if test ${ac_cv_have_accrights_in_msghdr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18280,7 +19949,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
#ifdef msg_accrights
@@ -18295,25 +19964,26 @@ exit(0);
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_accrights_in_msghdr="yes"
-else
+else $as_nop
ac_cv_have_accrights_in_msghdr="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_accrights_in_msghdr" >&5
-$as_echo "$ac_cv_have_accrights_in_msghdr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_accrights_in_msghdr" >&5
+printf "%s\n" "$ac_cv_have_accrights_in_msghdr" >&6; }
if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
-$as_echo "#define HAVE_ACCRIGHTS_IN_MSGHDR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ACCRIGHTS_IN_MSGHDR 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct statvfs.f_fsid is integral type" >&5
-$as_echo_n "checking if struct statvfs.f_fsid is integral type... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if struct statvfs.f_fsid is integral type" >&5
+printf %s "checking if struct statvfs.f_fsid is integral type... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18330,22 +20000,23 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#endif
int
-main ()
+main (void)
{
struct statvfs s; s.f_fsid = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fsid_t has member val" >&5
-$as_echo_n "checking if fsid_t has member val... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsid_t has member val" >&5
+printf %s "checking if fsid_t has member val... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18353,27 +20024,28 @@ $as_echo_n "checking if fsid_t has member val... " >&6; }
#include <sys/statvfs.h>
int
-main ()
+main (void)
{
fsid_t t; t.val[0] = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define FSID_HAS_VAL 1" >>confdefs.h
+printf "%s\n" "#define FSID_HAS_VAL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if f_fsid has member __val" >&5
-$as_echo_n "checking if f_fsid has member __val... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if f_fsid has member __val" >&5
+printf %s "checking if f_fsid has member __val... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18381,33 +20053,35 @@ $as_echo_n "checking if f_fsid has member __val... " >&6; }
#include <sys/statvfs.h>
int
-main ()
+main (void)
{
fsid_t t; t.__val[0] = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define FSID_HAS___VAL 1" >>confdefs.h
+printf "%s\n" "#define FSID_HAS___VAL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for msg_control field in struct msghdr" >&5
-$as_echo_n "checking for msg_control field in struct msghdr... " >&6; }
-if ${ac_cv_have_control_in_msghdr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for msg_control field in struct msghdr" >&5
+printf %s "checking for msg_control field in struct msghdr... " >&6; }
+if test ${ac_cv_have_control_in_msghdr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18418,7 +20092,7 @@ else
#include <stdlib.h>
int
-main ()
+main (void)
{
#ifdef msg_control
@@ -18433,133 +20107,141 @@ exit(0);
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_have_control_in_msghdr="yes"
-else
+else $as_nop
ac_cv_have_control_in_msghdr="no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_control_in_msghdr" >&5
-$as_echo "$ac_cv_have_control_in_msghdr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_control_in_msghdr" >&5
+printf "%s\n" "$ac_cv_have_control_in_msghdr" >&6; }
if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
-$as_echo "#define HAVE_CONTROL_IN_MSGHDR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CONTROL_IN_MSGHDR 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libc defines __progname" >&5
-$as_echo_n "checking if libc defines __progname... " >&6; }
-if ${ac_cv_libc_defines___progname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libc defines __progname" >&5
+printf %s "checking if libc defines __progname... " >&6; }
+if test ${ac_cv_libc_defines___progname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
extern char *__progname; printf("%s", __progname);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_libc_defines___progname="yes"
-else
+else $as_nop
ac_cv_libc_defines___progname="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines___progname" >&5
-$as_echo "$ac_cv_libc_defines___progname" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines___progname" >&5
+printf "%s\n" "$ac_cv_libc_defines___progname" >&6; }
if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
-$as_echo "#define HAVE___PROGNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE___PROGNAME 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __FUNCTION__" >&5
-$as_echo_n "checking whether $CC implements __FUNCTION__... " >&6; }
-if ${ac_cv_cc_implements___FUNCTION__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __FUNCTION__" >&5
+printf %s "checking whether $CC implements __FUNCTION__... " >&6; }
+if test ${ac_cv_cc_implements___FUNCTION__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
printf("%s", __FUNCTION__);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_cc_implements___FUNCTION__="yes"
-else
+else $as_nop
ac_cv_cc_implements___FUNCTION__="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_implements___FUNCTION__" >&5
-$as_echo "$ac_cv_cc_implements___FUNCTION__" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_implements___FUNCTION__" >&5
+printf "%s\n" "$ac_cv_cc_implements___FUNCTION__" >&6; }
if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
-$as_echo "#define HAVE___FUNCTION__ 1" >>confdefs.h
+printf "%s\n" "#define HAVE___FUNCTION__ 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __func__" >&5
-$as_echo_n "checking whether $CC implements __func__... " >&6; }
-if ${ac_cv_cc_implements___func__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC implements __func__" >&5
+printf %s "checking whether $CC implements __func__... " >&6; }
+if test ${ac_cv_cc_implements___func__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
printf("%s", __func__);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_cc_implements___func__="yes"
-else
+else $as_nop
ac_cv_cc_implements___func__="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_implements___func__" >&5
-$as_echo "$ac_cv_cc_implements___func__" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_implements___func__" >&5
+printf "%s\n" "$ac_cv_cc_implements___func__" >&6; }
if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
-$as_echo "#define HAVE___func__ 1" >>confdefs.h
+printf "%s\n" "#define HAVE___func__ 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether va_copy exists" >&5
-$as_echo_n "checking whether va_copy exists... " >&6; }
-if ${ac_cv_have_va_copy+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether va_copy exists" >&5
+printf %s "checking whether va_copy exists... " >&6; }
+if test ${ac_cv_have_va_copy+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18568,36 +20250,38 @@ else
va_list x,y;
int
-main ()
+main (void)
{
va_copy(x,y);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_have_va_copy="yes"
-else
+else $as_nop
ac_cv_have_va_copy="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_va_copy" >&5
-$as_echo "$ac_cv_have_va_copy" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_va_copy" >&5
+printf "%s\n" "$ac_cv_have_va_copy" >&6; }
if test "x$ac_cv_have_va_copy" = "xyes" ; then
-$as_echo "#define HAVE_VA_COPY 1" >>confdefs.h
+printf "%s\n" "#define HAVE_VA_COPY 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __va_copy exists" >&5
-$as_echo_n "checking whether __va_copy exists... " >&6; }
-if ${ac_cv_have___va_copy+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __va_copy exists" >&5
+printf %s "checking whether __va_copy exists... " >&6; }
+if test ${ac_cv_have___va_copy+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18606,143 +20290,151 @@ else
va_list x,y;
int
-main ()
+main (void)
{
__va_copy(x,y);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_have___va_copy="yes"
-else
+else $as_nop
ac_cv_have___va_copy="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___va_copy" >&5
-$as_echo "$ac_cv_have___va_copy" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have___va_copy" >&5
+printf "%s\n" "$ac_cv_have___va_copy" >&6; }
if test "x$ac_cv_have___va_copy" = "xyes" ; then
-$as_echo "#define HAVE___VA_COPY 1" >>confdefs.h
+printf "%s\n" "#define HAVE___VA_COPY 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getopt has optreset support" >&5
-$as_echo_n "checking whether getopt has optreset support... " >&6; }
-if ${ac_cv_have_getopt_optreset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getopt has optreset support" >&5
+printf %s "checking whether getopt has optreset support... " >&6; }
+if test ${ac_cv_have_getopt_optreset+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <getopt.h>
int
-main ()
+main (void)
{
extern int optreset; optreset = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_have_getopt_optreset="yes"
-else
+else $as_nop
ac_cv_have_getopt_optreset="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getopt_optreset" >&5
-$as_echo "$ac_cv_have_getopt_optreset" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getopt_optreset" >&5
+printf "%s\n" "$ac_cv_have_getopt_optreset" >&6; }
if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
-$as_echo "#define HAVE_GETOPT_OPTRESET 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETOPT_OPTRESET 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libc defines sys_errlist" >&5
-$as_echo_n "checking if libc defines sys_errlist... " >&6; }
-if ${ac_cv_libc_defines_sys_errlist+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libc defines sys_errlist" >&5
+printf %s "checking if libc defines sys_errlist... " >&6; }
+if test ${ac_cv_libc_defines_sys_errlist+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_libc_defines_sys_errlist="yes"
-else
+else $as_nop
ac_cv_libc_defines_sys_errlist="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines_sys_errlist" >&5
-$as_echo "$ac_cv_libc_defines_sys_errlist" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines_sys_errlist" >&5
+printf "%s\n" "$ac_cv_libc_defines_sys_errlist" >&6; }
if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
-$as_echo "#define HAVE_SYS_ERRLIST 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_ERRLIST 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libc defines sys_nerr" >&5
-$as_echo_n "checking if libc defines sys_nerr... " >&6; }
-if ${ac_cv_libc_defines_sys_nerr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libc defines sys_nerr" >&5
+printf %s "checking if libc defines sys_nerr... " >&6; }
+if test ${ac_cv_libc_defines_sys_nerr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
extern int sys_nerr; printf("%i", sys_nerr);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_libc_defines_sys_nerr="yes"
-else
+else $as_nop
ac_cv_libc_defines_sys_nerr="no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines_sys_nerr" >&5
-$as_echo "$ac_cv_libc_defines_sys_nerr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libc_defines_sys_nerr" >&5
+printf "%s\n" "$ac_cv_libc_defines_sys_nerr" >&6; }
if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
-$as_echo "#define HAVE_SYS_NERR 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_NERR 1" >>confdefs.h
fi
# Check libraries needed by DNS fingerprint support
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getrrsetbyname" >&5
-$as_echo_n "checking for library containing getrrsetbyname... " >&6; }
-if ${ac_cv_search_getrrsetbyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getrrsetbyname" >&5
+printf %s "checking for library containing getrrsetbyname... " >&6; }
+if test ${ac_cv_search_getrrsetbyname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18750,58 +20442,61 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getrrsetbyname ();
int
-main ()
+main (void)
{
return getrrsetbyname ();
;
return 0;
}
_ACEOF
-for ac_lib in '' resolv; do
+for ac_lib in '' resolv
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_getrrsetbyname=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_getrrsetbyname+:} false; then :
+ if test ${ac_cv_search_getrrsetbyname+y}
+then :
break
fi
done
-if ${ac_cv_search_getrrsetbyname+:} false; then :
+if test ${ac_cv_search_getrrsetbyname+y}
+then :
-else
+else $as_nop
ac_cv_search_getrrsetbyname=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getrrsetbyname" >&5
-$as_echo "$ac_cv_search_getrrsetbyname" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getrrsetbyname" >&5
+printf "%s\n" "$ac_cv_search_getrrsetbyname" >&6; }
ac_res=$ac_cv_search_getrrsetbyname
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-$as_echo "#define HAVE_GETRRSETBYNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETRRSETBYNAME 1" >>confdefs.h
-else
+else $as_nop
# Needed by our getrrsetbyname()
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing res_query" >&5
-$as_echo_n "checking for library containing res_query... " >&6; }
-if ${ac_cv_search_res_query+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing res_query" >&5
+printf %s "checking for library containing res_query... " >&6; }
+if test ${ac_cv_search_res_query+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18809,55 +20504,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char res_query ();
int
-main ()
+main (void)
{
return res_query ();
;
return 0;
}
_ACEOF
-for ac_lib in '' resolv; do
+for ac_lib in '' resolv
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_res_query=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_res_query+:} false; then :
+ if test ${ac_cv_search_res_query+y}
+then :
break
fi
done
-if ${ac_cv_search_res_query+:} false; then :
+if test ${ac_cv_search_res_query+y}
+then :
-else
+else $as_nop
ac_cv_search_res_query=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_query" >&5
-$as_echo "$ac_cv_search_res_query" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_query" >&5
+printf "%s\n" "$ac_cv_search_res_query" >&6; }
ac_res=$ac_cv_search_res_query
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dn_expand" >&5
-$as_echo_n "checking for library containing dn_expand... " >&6; }
-if ${ac_cv_search_dn_expand+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dn_expand" >&5
+printf %s "checking for library containing dn_expand... " >&6; }
+if test ${ac_cv_search_dn_expand+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18865,52 +20563,54 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dn_expand ();
int
-main ()
+main (void)
{
return dn_expand ();
;
return 0;
}
_ACEOF
-for ac_lib in '' resolv; do
+for ac_lib in '' resolv
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_dn_expand=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_dn_expand+:} false; then :
+ if test ${ac_cv_search_dn_expand+y}
+then :
break
fi
done
-if ${ac_cv_search_dn_expand+:} false; then :
+if test ${ac_cv_search_dn_expand+y}
+then :
-else
+else $as_nop
ac_cv_search_dn_expand=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dn_expand" >&5
-$as_echo "$ac_cv_search_dn_expand" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dn_expand" >&5
+printf "%s\n" "$ac_cv_search_dn_expand" >&6; }
ac_res=$ac_cv_search_dn_expand
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if res_query will link" >&5
-$as_echo_n "checking if res_query will link... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if res_query will link" >&5
+printf %s "checking if res_query will link... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18921,7 +20621,7 @@ $as_echo_n "checking if res_query will link... " >&6; }
#include <resolv.h>
int
-main ()
+main (void)
{
res_query (0, 0, 0, 0, 0);
@@ -18930,16 +20630,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
saved_LIBS="$LIBS"
LIBS="$LIBS -lresolv"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
-$as_echo_n "checking for res_query in -lresolv... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for res_query in -lresolv" >&5
+printf %s "checking for res_query in -lresolv... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18950,7 +20651,7 @@ $as_echo_n "checking for res_query in -lresolv... " >&6; }
#include <resolv.h>
int
-main ()
+main (void)
{
res_query (0, 0, 0, 0, 0);
@@ -18959,62 +20660,61 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
LIBS="$saved_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- for ac_func in _getshort _getlong
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "_getshort" "ac_cv_func__getshort"
+if test "x$ac_cv_func__getshort" = xyes
+then :
+ printf "%s\n" "#define HAVE__GETSHORT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "_getlong" "ac_cv_func__getlong"
+if test "x$ac_cv_func__getlong" = xyes
+then :
+ printf "%s\n" "#define HAVE__GETLONG 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "_getshort" "ac_cv_have_decl__getshort" "#include <sys/types.h>
+fi
+
+ ac_fn_check_decl "$LINENO" "_getshort" "ac_cv_have_decl__getshort" "#include <sys/types.h>
#include <arpa/nameser.h>
-"
-if test "x$ac_cv_have_decl__getshort" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__getshort" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__GETSHORT $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "_getlong" "ac_cv_have_decl__getlong" "#include <sys/types.h>
+printf "%s\n" "#define HAVE_DECL__GETSHORT $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "_getlong" "ac_cv_have_decl__getlong" "#include <sys/types.h>
#include <arpa/nameser.h>
-"
-if test "x$ac_cv_have_decl__getlong" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__getlong" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__GETLONG $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL__GETLONG $ac_have_decl" >>confdefs.h
ac_fn_c_check_member "$LINENO" "HEADER" "ad" "ac_cv_member_HEADER_ad" "#include <arpa/nameser.h>
"
-if test "x$ac_cv_member_HEADER_ad" = xyes; then :
+if test "x$ac_cv_member_HEADER_ad" = xyes
+then :
-$as_echo "#define HAVE_HEADER_AD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_HEADER_AD 1" >>confdefs.h
fi
@@ -19022,8 +20722,8 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if struct __res_state _res is an extern" >&5
-$as_echo_n "checking if struct __res_state _res is an extern... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if struct __res_state _res is an extern" >&5
+printf %s "checking if struct __res_state _res is an extern... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19037,7 +20737,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
extern struct __res_state _res;
int
-main ()
+main (void)
{
struct __res_state *volatile p = &_res; /* force resolution of _res */
@@ -19047,19 +20747,20 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define HAVE__RES_EXTERN 1" >>confdefs.h
+printf "%s\n" "#define HAVE__RES_EXTERN 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
# Check whether user wants SELinux support
@@ -19067,26 +20768,28 @@ SELINUX_MSG="no"
LIBSELINUX=""
# Check whether --with-selinux was given.
-if test "${with_selinux+set}" = set; then :
+if test ${with_selinux+y}
+then :
withval=$with_selinux; if test "x$withval" != "xno" ; then
save_LIBS="$LIBS"
-$as_echo "#define WITH_SELINUX 1" >>confdefs.h
+printf "%s\n" "#define WITH_SELINUX 1" >>confdefs.h
SELINUX_MSG="yes"
- ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
-if test "x$ac_cv_header_selinux_selinux_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
+if test "x$ac_cv_header_selinux_selinux_h" = xyes
+then :
-else
+else $as_nop
as_fn_error $? "SELinux support requires selinux.h header" "$LINENO" 5
fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setexeccon in -lselinux" >&5
-$as_echo_n "checking for setexeccon in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_setexeccon+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setexeccon in -lselinux" >&5
+printf %s "checking for setexeccon in -lselinux... " >&6; }
+if test ${ac_cv_lib_selinux_setexeccon+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lselinux $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19095,48 +20798,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char setexeccon ();
int
-main ()
+main (void)
{
return setexeccon ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_selinux_setexeccon=yes
-else
+else $as_nop
ac_cv_lib_selinux_setexeccon=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_setexeccon" >&5
-$as_echo "$ac_cv_lib_selinux_setexeccon" >&6; }
-if test "x$ac_cv_lib_selinux_setexeccon" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_setexeccon" >&5
+printf "%s\n" "$ac_cv_lib_selinux_setexeccon" >&6; }
+if test "x$ac_cv_lib_selinux_setexeccon" = xyes
+then :
LIBSELINUX="-lselinux"
LIBS="$LIBS -lselinux"
-else
+else $as_nop
as_fn_error $? "SELinux support requires libselinux library" "$LINENO" 5
fi
- for ac_func in getseuserbyname get_default_context_with_level
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getseuserbyname" "ac_cv_func_getseuserbyname"
+if test "x$ac_cv_func_getseuserbyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSEUSERBYNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "get_default_context_with_level" "ac_cv_func_get_default_context_with_level"
+if test "x$ac_cv_func_get_default_context_with_level" = xyes
+then :
+ printf "%s\n" "#define HAVE_GET_DEFAULT_CONTEXT_WITH_LEVEL 1" >>confdefs.h
fi
-done
LIBS="$save_LIBS $LIBSELINUX"
fi
@@ -19149,7 +20852,8 @@ fi
KRB5_MSG="no"
# Check whether --with-kerberos5 was given.
-if test "${with_kerberos5+set}" = set; then :
+if test ${with_kerberos5+y}
+then :
withval=$with_kerberos5; if test "x$withval" != "xno" ; then
if test "x$withval" = "xyes" ; then
KRB5ROOT="/usr/local"
@@ -19158,119 +20862,21 @@ if test "${with_kerberos5+set}" = set; then :
fi
-$as_echo "#define KRB5 1" >>confdefs.h
+printf "%s\n" "#define KRB5 1" >>confdefs.h
KRB5_MSG="yes"
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKGCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PKGCONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-PKGCONFIG=$ac_cv_path_PKGCONFIG
-if test -n "$PKGCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
-$as_echo "$PKGCONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKGCONFIG"; then
- ac_pt_PKGCONFIG=$PKGCONFIG
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ac_pt_PKGCONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
-if test -n "$ac_pt_PKGCONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
-$as_echo "$ac_pt_PKGCONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_pt_PKGCONFIG" = x; then
- PKGCONFIG="no"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- PKGCONFIG=$ac_pt_PKGCONFIG
- fi
-else
- PKGCONFIG="$ac_cv_path_PKGCONFIG"
-fi
-
use_pkgconfig_for_krb5=
if test "x$PKGCONFIG" != "xno"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about kerberos5" >&5
-$as_echo_n "checking if $PKGCONFIG knows about kerberos5... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $PKGCONFIG knows about kerberos5" >&5
+printf %s "checking if $PKGCONFIG knows about kerberos5... " >&6; }
if "$PKGCONFIG" krb5; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
use_pkgconfig_for_krb5=yes
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
if test "x$use_pkgconfig_for_krb5" = "xyes"; then
@@ -19278,56 +20884,58 @@ $as_echo "no" >&6; }
K5LIBS=`$PKGCONFIG --libs krb5`
CPPFLAGS="$CPPFLAGS $K5CFLAGS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gssapi support" >&5
-$as_echo_n "checking for gssapi support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gssapi support" >&5
+printf %s "checking for gssapi support... " >&6; }
if "$PKGCONFIG" krb5-gssapi; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define GSSAPI 1" >>confdefs.h
+printf "%s\n" "#define GSSAPI 1" >>confdefs.h
GSSCFLAGS="`$PKGCONFIG --cflags krb5-gssapi`"
GSSLIBS="`$PKGCONFIG --libs krb5-gssapi`"
CPPFLAGS="$CPPFLAGS $GSSCFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
-$as_echo_n "checking whether we are using Heimdal... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
+printf %s "checking whether we are using Heimdal... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
char *tmp = heimdal_version;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define HEIMDAL 1" >>confdefs.h
+printf "%s\n" "#define HEIMDAL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
else
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}krb5-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}krb5-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_KRB5CONF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_KRB5CONF+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $KRB5CONF in
[\\/]* | ?:[\\/]*)
ac_cv_path_KRB5CONF="$KRB5CONF" # Let the user override the test with a path.
@@ -19338,11 +20946,15 @@ as_dummy="$KRB5ROOT/bin:$PATH"
for as_dir in $as_dummy
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_KRB5CONF="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_KRB5CONF="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -19354,11 +20966,11 @@ esac
fi
KRB5CONF=$ac_cv_path_KRB5CONF
if test -n "$KRB5CONF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KRB5CONF" >&5
-$as_echo "$KRB5CONF" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $KRB5CONF" >&5
+printf "%s\n" "$KRB5CONF" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -19367,11 +20979,12 @@ if test -z "$ac_cv_path_KRB5CONF"; then
ac_pt_KRB5CONF=$KRB5CONF
# Extract the first word of "krb5-config", so it can be a program name with args.
set dummy krb5-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_KRB5CONF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_KRB5CONF+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $ac_pt_KRB5CONF in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_KRB5CONF="$ac_pt_KRB5CONF" # Let the user override the test with a path.
@@ -19382,11 +20995,15 @@ as_dummy="$KRB5ROOT/bin:$PATH"
for as_dir in $as_dummy
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_KRB5CONF="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_KRB5CONF="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -19398,11 +21015,11 @@ esac
fi
ac_pt_KRB5CONF=$ac_cv_path_ac_pt_KRB5CONF
if test -n "$ac_pt_KRB5CONF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_KRB5CONF" >&5
-$as_echo "$ac_pt_KRB5CONF" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_KRB5CONF" >&5
+printf "%s\n" "$ac_pt_KRB5CONF" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_KRB5CONF" = x; then
@@ -19410,8 +21027,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
KRB5CONF=$ac_pt_KRB5CONF
@@ -19425,76 +21042,79 @@ fi
K5LIBS="`$KRB5CONF --libs`"
CPPFLAGS="$CPPFLAGS $K5CFLAGS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gssapi support" >&5
-$as_echo_n "checking for gssapi support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gssapi support" >&5
+printf %s "checking for gssapi support... " >&6; }
if $KRB5CONF | grep gssapi >/dev/null ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define GSSAPI 1" >>confdefs.h
+printf "%s\n" "#define GSSAPI 1" >>confdefs.h
GSSCFLAGS="`$KRB5CONF --cflags gssapi`"
GSSLIBS="`$KRB5CONF --libs gssapi`"
CPPFLAGS="$CPPFLAGS $GSSCFLAGS"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
-$as_echo_n "checking whether we are using Heimdal... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
+printf %s "checking whether we are using Heimdal... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
char *tmp = heimdal_version;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define HEIMDAL 1" >>confdefs.h
+printf "%s\n" "#define HEIMDAL 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
else
CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
-$as_echo_n "checking whether we are using Heimdal... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
+printf %s "checking whether we are using Heimdal... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
char *tmp = heimdal_version;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define HEIMDAL 1" >>confdefs.h
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define HEIMDAL 1" >>confdefs.h
K5LIBS="-lkrb5"
K5LIBS="$K5LIBS -lcom_err -lasn1"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for net_write in -lroken" >&5
-$as_echo_n "checking for net_write in -lroken... " >&6; }
-if ${ac_cv_lib_roken_net_write+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for net_write in -lroken" >&5
+printf %s "checking for net_write in -lroken... " >&6; }
+if test ${ac_cv_lib_roken_net_write+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lroken $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19503,38 +21123,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char net_write ();
int
-main ()
+main (void)
{
return net_write ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_roken_net_write=yes
-else
+else $as_nop
ac_cv_lib_roken_net_write=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_roken_net_write" >&5
-$as_echo "$ac_cv_lib_roken_net_write" >&6; }
-if test "x$ac_cv_lib_roken_net_write" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_roken_net_write" >&5
+printf "%s\n" "$ac_cv_lib_roken_net_write" >&6; }
+if test "x$ac_cv_lib_roken_net_write" = xyes
+then :
K5LIBS="$K5LIBS -lroken"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes" >&5
-$as_echo_n "checking for des_cbc_encrypt in -ldes... " >&6; }
-if ${ac_cv_lib_des_des_cbc_encrypt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for des_cbc_encrypt in -ldes" >&5
+printf %s "checking for des_cbc_encrypt in -ldes... " >&6; }
+if test ${ac_cv_lib_des_des_cbc_encrypt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldes $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19543,46 +21163,46 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char des_cbc_encrypt ();
int
-main ()
+main (void)
{
return des_cbc_encrypt ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_des_des_cbc_encrypt=yes
-else
+else $as_nop
ac_cv_lib_des_des_cbc_encrypt=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des_des_cbc_encrypt" >&5
-$as_echo "$ac_cv_lib_des_des_cbc_encrypt" >&6; }
-if test "x$ac_cv_lib_des_des_cbc_encrypt" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_des_des_cbc_encrypt" >&5
+printf "%s\n" "$ac_cv_lib_des_des_cbc_encrypt" >&6; }
+if test "x$ac_cv_lib_des_des_cbc_encrypt" = xyes
+then :
K5LIBS="$K5LIBS -ldes"
fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
K5LIBS="-lkrb5 -lk5crypto -lcom_err"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dn_expand" >&5
-$as_echo_n "checking for library containing dn_expand... " >&6; }
-if ${ac_cv_search_dn_expand+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dn_expand" >&5
+printf %s "checking for library containing dn_expand... " >&6; }
+if test ${ac_cv_search_dn_expand+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19590,56 +21210,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dn_expand ();
int
-main ()
+main (void)
{
return dn_expand ();
;
return 0;
}
_ACEOF
-for ac_lib in '' resolv; do
+for ac_lib in '' resolv
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_dn_expand=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_dn_expand+:} false; then :
+ if test ${ac_cv_search_dn_expand+y}
+then :
break
fi
done
-if ${ac_cv_search_dn_expand+:} false; then :
+if test ${ac_cv_search_dn_expand+y}
+then :
-else
+else $as_nop
ac_cv_search_dn_expand=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dn_expand" >&5
-$as_echo "$ac_cv_search_dn_expand" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dn_expand" >&5
+printf "%s\n" "$ac_cv_search_dn_expand" >&6; }
ac_res=$ac_cv_search_dn_expand
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgssapi_krb5" >&5
-$as_echo_n "checking for gss_init_sec_context in -lgssapi_krb5... " >&6; }
-if ${ac_cv_lib_gssapi_krb5_gss_init_sec_context+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgssapi_krb5" >&5
+printf %s "checking for gss_init_sec_context in -lgssapi_krb5... " >&6; }
+if test ${ac_cv_lib_gssapi_krb5_gss_init_sec_context+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgssapi_krb5 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19648,39 +21271,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gss_init_sec_context ();
int
-main ()
+main (void)
{
return gss_init_sec_context ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gssapi_krb5_gss_init_sec_context=yes
-else
+else $as_nop
ac_cv_lib_gssapi_krb5_gss_init_sec_context=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&5
-$as_echo "$ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&6; }
-if test "x$ac_cv_lib_gssapi_krb5_gss_init_sec_context" = xyes; then :
- $as_echo "#define GSSAPI 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&5
+printf "%s\n" "$ac_cv_lib_gssapi_krb5_gss_init_sec_context" >&6; }
+if test "x$ac_cv_lib_gssapi_krb5_gss_init_sec_context" = xyes
+then :
+ printf "%s\n" "#define GSSAPI 1" >>confdefs.h
GSSLIBS="-lgssapi_krb5"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgssapi" >&5
-$as_echo_n "checking for gss_init_sec_context in -lgssapi... " >&6; }
-if ${ac_cv_lib_gssapi_gss_init_sec_context+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgssapi" >&5
+printf %s "checking for gss_init_sec_context in -lgssapi... " >&6; }
+if test ${ac_cv_lib_gssapi_gss_init_sec_context+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgssapi $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19689,39 +21312,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gss_init_sec_context ();
int
-main ()
+main (void)
{
return gss_init_sec_context ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gssapi_gss_init_sec_context=yes
-else
+else $as_nop
ac_cv_lib_gssapi_gss_init_sec_context=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_gss_init_sec_context" >&5
-$as_echo "$ac_cv_lib_gssapi_gss_init_sec_context" >&6; }
-if test "x$ac_cv_lib_gssapi_gss_init_sec_context" = xyes; then :
- $as_echo "#define GSSAPI 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_gss_init_sec_context" >&5
+printf "%s\n" "$ac_cv_lib_gssapi_gss_init_sec_context" >&6; }
+if test "x$ac_cv_lib_gssapi_gss_init_sec_context" = xyes
+then :
+ printf "%s\n" "#define GSSAPI 1" >>confdefs.h
GSSLIBS="-lgssapi"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgss" >&5
-$as_echo_n "checking for gss_init_sec_context in -lgss... " >&6; }
-if ${ac_cv_lib_gss_gss_init_sec_context+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gss_init_sec_context in -lgss" >&5
+printf %s "checking for gss_init_sec_context in -lgss... " >&6; }
+if test ${ac_cv_lib_gss_gss_init_sec_context+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgss $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19730,36 +21353,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gss_init_sec_context ();
int
-main ()
+main (void)
{
return gss_init_sec_context ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gss_gss_init_sec_context=yes
-else
+else $as_nop
ac_cv_lib_gss_gss_init_sec_context=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gss_gss_init_sec_context" >&5
-$as_echo "$ac_cv_lib_gss_gss_init_sec_context" >&6; }
-if test "x$ac_cv_lib_gss_gss_init_sec_context" = xyes; then :
- $as_echo "#define GSSAPI 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gss_gss_init_sec_context" >&5
+printf "%s\n" "$ac_cv_lib_gss_gss_init_sec_context" >&6; }
+if test "x$ac_cv_lib_gss_gss_init_sec_context" = xyes
+then :
+ printf "%s\n" "#define GSSAPI 1" >>confdefs.h
GSSLIBS="-lgss"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find any suitable gss-api library - build may fail" >&5
-$as_echo "$as_me: WARNING: Cannot find any suitable gss-api library - build may fail" >&2;}
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find any suitable gss-api library - build may fail" >&5
+printf "%s\n" "$as_me: WARNING: Cannot find any suitable gss-api library - build may fail" >&2;}
fi
@@ -19769,45 +21391,43 @@ fi
fi
- ac_fn_c_check_header_mongrel "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_h" = xyes
+then :
-else
+else $as_nop
unset ac_cv_header_gssapi_h
CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
- for ac_header in gssapi.h
+ for ac_header in gssapi.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GSSAPI_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_H 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find any suitable gss-api header - build may fail" >&5
-$as_echo "$as_me: WARNING: Cannot find any suitable gss-api header - build may fail" >&2;}
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find any suitable gss-api header - build may fail" >&5
+printf "%s\n" "$as_me: WARNING: Cannot find any suitable gss-api header - build may fail" >&2;}
fi
done
-
fi
-
oldCPP="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
- ac_fn_c_check_header_mongrel "$LINENO" "gssapi_krb5.h" "ac_cv_header_gssapi_krb5_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_krb5_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "gssapi_krb5.h" "ac_cv_header_gssapi_krb5_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_krb5_h" = xyes
+then :
-else
+else $as_nop
CPPFLAGS="$oldCPP"
fi
-
fi
fi
if test -n "${rpath_opt}" ; then
@@ -19817,51 +21437,52 @@ fi
blibpath="$blibpath:${KRB5ROOT}/lib"
fi
- for ac_header in gssapi.h gssapi/gssapi.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi.h" "ac_cv_header_gssapi_gssapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_gssapi_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_H 1" >>confdefs.h
-done
+fi
- for ac_header in gssapi_krb5.h gssapi/gssapi_krb5.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi_krb5.h" "ac_cv_header_gssapi_krb5_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_krb5_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_KRB5_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi_krb5.h" "ac_cv_header_gssapi_gssapi_krb5_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_gssapi_krb5_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_KRB5_H 1" >>confdefs.h
-done
+fi
- for ac_header in gssapi_generic.h gssapi/gssapi_generic.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi_generic.h" "ac_cv_header_gssapi_generic_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_generic_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_GENERIC_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi_generic.h" "ac_cv_header_gssapi_gssapi_generic_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_gssapi_generic_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_GENERIC_H 1" >>confdefs.h
-done
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing k_hasafs" >&5
-$as_echo_n "checking for library containing k_hasafs... " >&6; }
-if ${ac_cv_search_k_hasafs+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing k_hasafs" >&5
+printf %s "checking for library containing k_hasafs... " >&6; }
+if test ${ac_cv_search_k_hasafs+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19869,54 +21490,56 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char k_hasafs ();
int
-main ()
+main (void)
{
return k_hasafs ();
;
return 0;
}
_ACEOF
-for ac_lib in '' kafs; do
+for ac_lib in '' kafs
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_k_hasafs=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_k_hasafs+:} false; then :
+ if test ${ac_cv_search_k_hasafs+y}
+then :
break
fi
done
-if ${ac_cv_search_k_hasafs+:} false; then :
+if test ${ac_cv_search_k_hasafs+y}
+then :
-else
+else $as_nop
ac_cv_search_k_hasafs=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_k_hasafs" >&5
-$as_echo "$ac_cv_search_k_hasafs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_k_hasafs" >&5
+printf "%s\n" "$ac_cv_search_k_hasafs" >&6; }
ac_res=$ac_cv_search_k_hasafs
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-$as_echo "#define USE_AFS 1" >>confdefs.h
+printf "%s\n" "#define USE_AFS 1" >>confdefs.h
fi
- ac_fn_c_check_decl "$LINENO" "GSS_C_NT_HOSTBASED_SERVICE" "ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" "
+ ac_fn_check_decl "$LINENO" "GSS_C_NT_HOSTBASED_SERVICE" "ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" "
#ifdef HAVE_GSSAPI_H
# include <gssapi.h>
#elif defined(HAVE_GSSAPI_GSSAPI_H)
@@ -19929,30 +21552,35 @@ fi
# include <gssapi/gssapi_generic.h>
#endif
-"
-if test "x$ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_GSS_C_NT_HOSTBASED_SERVICE" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GSS_C_NT_HOSTBASED_SERVICE $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_GSS_C_NT_HOSTBASED_SERVICE $ac_have_decl" >>confdefs.h
saved_LIBS="$LIBS"
LIBS="$LIBS $K5LIBS"
- for ac_func in krb5_cc_new_unique krb5_get_error_message krb5_free_error_message
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "krb5_cc_new_unique" "ac_cv_func_krb5_cc_new_unique"
+if test "x$ac_cv_func_krb5_cc_new_unique" = xyes
+then :
+ printf "%s\n" "#define HAVE_KRB5_CC_NEW_UNIQUE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "krb5_get_error_message" "ac_cv_func_krb5_get_error_message"
+if test "x$ac_cv_func_krb5_get_error_message" = xyes
+then :
+ printf "%s\n" "#define HAVE_KRB5_GET_ERROR_MESSAGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "krb5_free_error_message" "ac_cv_func_krb5_free_error_message"
+if test "x$ac_cv_func_krb5_free_error_message" = xyes
+then :
+ printf "%s\n" "#define HAVE_KRB5_FREE_ERROR_MESSAGE 1" >>confdefs.h
fi
-done
LIBS="$saved_LIBS"
@@ -19964,12 +21592,14 @@ fi
+
# Looking for programs, paths and files
PRIVSEP_PATH=/var/empty
# Check whether --with-privsep-path was given.
-if test "${with_privsep_path+set}" = set; then :
+if test ${with_privsep_path+y}
+then :
withval=$with_privsep_path;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
@@ -19983,14 +21613,15 @@ fi
# Check whether --with-xauth was given.
-if test "${with_xauth+set}" = set; then :
+if test ${with_xauth+y}
+then :
withval=$with_xauth;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
xauth_path=$withval
fi
-else
+else $as_nop
TestPath="$PATH"
TestPath="${TestPath}${PATH_SEPARATOR}/usr/X/bin"
@@ -19999,11 +21630,12 @@ else
TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin"
# Extract the first word of "xauth", so it can be a program name with args.
set dummy xauth; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_xauth_path+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_xauth_path+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $xauth_path in
[\\/]* | ?:[\\/]*)
ac_cv_path_xauth_path="$xauth_path" # Let the user override the test with a path.
@@ -20013,11 +21645,15 @@ else
for as_dir in $TestPath
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_xauth_path="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_xauth_path="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -20029,11 +21665,11 @@ esac
fi
xauth_path=$ac_cv_path_xauth_path
if test -n "$xauth_path"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xauth_path" >&5
-$as_echo "$xauth_path" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xauth_path" >&5
+printf "%s\n" "$xauth_path" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -20047,7 +21683,8 @@ fi
STRIP_OPT=-s
# Check whether --enable-strip was given.
-if test "${enable_strip+set}" = set; then :
+if test ${enable_strip+y}
+then :
enableval=$enable_strip;
if test "x$enableval" = "xno" ; then
STRIP_OPT=
@@ -20063,9 +21700,7 @@ if test -z "$xauth_path" ; then
else
-cat >>confdefs.h <<_ACEOF
-#define XAUTH_PATH "$xauth_path"
-_ACEOF
+printf "%s\n" "#define XAUTH_PATH \"$xauth_path\"" >>confdefs.h
XAUTH_PATH=$xauth_path
@@ -20074,34 +21709,32 @@ fi
# Check for mail directory
# Check whether --with-maildir was given.
-if test "${with_maildir+set}" = set; then :
+if test ${with_maildir+y}
+then :
withval=$with_maildir;
if test "X$withval" != X && test "x$withval" != xno && \
test "x${withval}" != xyes; then
-cat >>confdefs.h <<_ACEOF
-#define MAIL_DIRECTORY "$withval"
-_ACEOF
+printf "%s\n" "#define MAIL_DIRECTORY \"$withval\"" >>confdefs.h
fi
-else
+else $as_nop
if test "X$maildir" != "X"; then
- cat >>confdefs.h <<_ACEOF
-#define MAIL_DIRECTORY "$maildir"
-_ACEOF
+ printf "%s\n" "#define MAIL_DIRECTORY \"$maildir\"" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking Discovering system mail directory" >&5
-$as_echo_n "checking Discovering system mail directory... " >&6; }
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Discovering system mail directory" >&5
+printf %s "checking Discovering system mail directory... " >&6; }
+ if test "$cross_compiling" = yes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&5
-$as_echo "$as_me: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: use --with-maildir=/path/to/mail" >&2;}
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20117,7 +21750,7 @@ else
#define DATA "conftest.maildir"
int
-main ()
+main (void)
{
FILE *fd;
@@ -20146,33 +21779,30 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
maildir_what=`awk -F: '{print $1}' conftest.maildir`
maildir=`awk -F: '{print $2}' conftest.maildir \
| sed 's|/$||'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using: $maildir from $maildir_what" >&5
-$as_echo "Using: $maildir from $maildir_what" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using: $maildir from $maildir_what" >&5
+printf "%s\n" "Using: $maildir from $maildir_what" >&6; }
if test "x$maildir_what" != "x_PATH_MAILDIR"; then
- cat >>confdefs.h <<_ACEOF
-#define MAIL_DIRECTORY "$maildir"
-_ACEOF
+ printf "%s\n" "#define MAIL_DIRECTORY \"$maildir\"" >>confdefs.h
fi
-else
+else $as_nop
if test "X$ac_status" = "X2";then
# our test program didn't find it. Default to /var/spool/mail
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using: default value of /var/spool/mail" >&5
-$as_echo "Using: default value of /var/spool/mail" >&6; }
- cat >>confdefs.h <<_ACEOF
-#define MAIL_DIRECTORY "/var/spool/mail"
-_ACEOF
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using: default value of /var/spool/mail" >&5
+printf "%s\n" "Using: default value of /var/spool/mail" >&6; }
+ printf "%s\n" "#define MAIL_DIRECTORY \"/var/spool/mail\"" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: *** not found ***" >&5
-$as_echo "*** not found ***" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: *** not found ***" >&5
+printf "%s\n" "*** not found ***" >&6; }
fi
fi
@@ -20187,18 +21817,19 @@ fi
# maildir
if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Disabling /dev/ptmx test" >&5
-$as_echo "$as_me: WARNING: cross compiling: Disabling /dev/ptmx test" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Disabling /dev/ptmx test" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: Disabling /dev/ptmx test" >&2;}
disable_ptmx_check=yes
fi
if test -z "$no_dev_ptmx" ; then
if test "x$disable_ptmx_check" != "xyes" ; then
- as_ac_File=`$as_echo "ac_cv_file_"/dev/ptmx"" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/ptmx\"" >&5
-$as_echo_n "checking for \"/dev/ptmx\"... " >&6; }
-if eval \${$as_ac_File+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_File=`printf "%s\n" "ac_cv_file_"/dev/ptmx"" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \"/dev/ptmx\"" >&5
+printf %s "checking for \"/dev/ptmx\"... " >&6; }
+if eval test \${$as_ac_File+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
test "$cross_compiling" = yes &&
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
if test -r ""/dev/ptmx""; then
@@ -20208,14 +21839,13 @@ else
fi
fi
eval ac_res=\$$as_ac_File
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DEV_PTMX 1
-_ACEOF
+printf "%s\n" "#define HAVE_DEV_PTMX 1" >>confdefs.h
have_dev_ptmx=1
@@ -20226,12 +21856,13 @@ fi
fi
if test ! -z "$cross_compiling" && test "x$cross_compiling" != "xyes"; then
- as_ac_File=`$as_echo "ac_cv_file_"/dev/ptc"" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/ptc\"" >&5
-$as_echo_n "checking for \"/dev/ptc\"... " >&6; }
-if eval \${$as_ac_File+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_File=`printf "%s\n" "ac_cv_file_"/dev/ptc"" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \"/dev/ptc\"" >&5
+printf %s "checking for \"/dev/ptc\"... " >&6; }
+if eval test \${$as_ac_File+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
test "$cross_compiling" = yes &&
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
if test -r ""/dev/ptc""; then
@@ -20241,14 +21872,13 @@ else
fi
fi
eval ac_res=\$$as_ac_File
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DEV_PTS_AND_PTC 1
-_ACEOF
+printf "%s\n" "#define HAVE_DEV_PTS_AND_PTC 1" >>confdefs.h
have_dev_ptc=1
@@ -20256,14 +21886,15 @@ _ACEOF
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Disabling /dev/ptc test" >&5
-$as_echo "$as_me: WARNING: cross compiling: Disabling /dev/ptc test" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: Disabling /dev/ptc test" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: Disabling /dev/ptc test" >&2;}
fi
# Options from here on. Some of these are preset by platform above
# Check whether --with-mantype was given.
-if test "${with_mantype+set}" = set; then :
+if test ${with_mantype+y}
+then :
withval=$with_mantype;
case "$withval" in
man|cat|doc)
@@ -20299,10 +21930,11 @@ fi
# Whether to disable shadow password support
# Check whether --with-shadow was given.
-if test "${with_shadow+set}" = set; then :
+if test ${with_shadow+y}
+then :
withval=$with_shadow;
if test "x$withval" = "xno" ; then
- $as_echo "#define DISABLE_SHADOW 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_SHADOW 1" >>confdefs.h
disable_shadow=yes
fi
@@ -20312,8 +21944,8 @@ fi
if test -z "$disable_shadow" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the systems has expire shadow information" >&5
-$as_echo_n "checking if the systems has expire shadow information... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the systems has expire shadow information" >&5
+printf %s "checking if the systems has expire shadow information... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20322,27 +21954,28 @@ $as_echo_n "checking if the systems has expire shadow information... " >&6; }
struct spwd sp;
int
-main ()
+main (void)
{
sp.sp_expire = sp.sp_lstchg = sp.sp_inact = 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sp_expire_available=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test "x$sp_expire_available" = "xyes" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define HAS_SHADOW_EXPIRE 1" >>confdefs.h
+printf "%s\n" "#define HAS_SHADOW_EXPIRE 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
@@ -20350,16 +21983,17 @@ fi
if test ! -z "$IPADDR_IN_DISPLAY" ; then
DISPLAY_HACK_MSG="yes"
-$as_echo "#define IPADDR_IN_DISPLAY 1" >>confdefs.h
+printf "%s\n" "#define IPADDR_IN_DISPLAY 1" >>confdefs.h
else
DISPLAY_HACK_MSG="no"
# Check whether --with-ipaddr-display was given.
-if test "${with_ipaddr_display+set}" = set; then :
+if test ${with_ipaddr_display+y}
+then :
withval=$with_ipaddr_display;
if test "x$withval" != "xno" ; then
- $as_echo "#define IPADDR_IN_DISPLAY 1" >>confdefs.h
+ printf "%s\n" "#define IPADDR_IN_DISPLAY 1" >>confdefs.h
DISPLAY_HACK_MSG="yes"
fi
@@ -20371,19 +22005,20 @@ fi
# check for /etc/default/login and use it if present.
# Check whether --enable-etc-default-login was given.
-if test "${enable_etc_default_login+set}" = set; then :
+if test ${enable_etc_default_login+y}
+then :
enableval=$enable_etc_default_login; if test "x$enableval" = "xno"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: /etc/default/login handling disabled" >&5
-$as_echo "$as_me: /etc/default/login handling disabled" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: /etc/default/login handling disabled" >&5
+printf "%s\n" "$as_me: /etc/default/login handling disabled" >&6;}
etc_default_login=no
else
etc_default_login=yes
fi
-else
+else $as_nop
if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes";
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking /etc/default/login" >&5
-$as_echo "$as_me: WARNING: cross compiling: not checking /etc/default/login" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: not checking /etc/default/login" >&5
+printf "%s\n" "$as_me: WARNING: cross compiling: not checking /etc/default/login" >&2;}
etc_default_login=no
else
etc_default_login=yes
@@ -20393,12 +22028,13 @@ fi
if test "x$etc_default_login" != "xno"; then
- as_ac_File=`$as_echo "ac_cv_file_"/etc/default/login"" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/etc/default/login\"" >&5
-$as_echo_n "checking for \"/etc/default/login\"... " >&6; }
-if eval \${$as_ac_File+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_File=`printf "%s\n" "ac_cv_file_"/etc/default/login"" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \"/etc/default/login\"" >&5
+printf %s "checking for \"/etc/default/login\"... " >&6; }
+if eval test \${$as_ac_File+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
test "$cross_compiling" = yes &&
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
if test -r ""/etc/default/login""; then
@@ -20408,15 +22044,16 @@ else
fi
fi
eval ac_res=\$$as_ac_File
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"
+then :
external_path_file=/etc/default/login
fi
if test "x$external_path_file" = "x/etc/default/login"; then
-$as_echo "#define HAVE_ETC_DEFAULT_LOGIN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ETC_DEFAULT_LOGIN 1" >>confdefs.h
fi
fi
@@ -20430,21 +22067,22 @@ fi
SERVER_PATH_MSG="(default)"
# Check whether --with-default-path was given.
-if test "${with_default_path+set}" = set; then :
+if test ${with_default_path+y}
+then :
withval=$with_default_path;
if test "x$external_path_file" = "x/etc/login.conf" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
--with-default-path=PATH has no effect on this system.
Edit /etc/login.conf instead." >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
--with-default-path=PATH has no effect on this system.
Edit /etc/login.conf instead." >&2;}
elif test "x$withval" != "xno" ; then
if test ! -z "$external_path_file" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
--with-default-path=PATH will only be used if PATH is not defined in
$external_path_file ." >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
--with-default-path=PATH will only be used if PATH is not defined in
$external_path_file ." >&2;}
fi
@@ -20452,23 +22090,24 @@ $external_path_file ." >&2;}
SERVER_PATH_MSG="$withval"
fi
-else
+else $as_nop
if test "x$external_path_file" = "x/etc/login.conf" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Make sure the path to scp is in /etc/login.conf" >&5
-$as_echo "$as_me: WARNING: Make sure the path to scp is in /etc/login.conf" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Make sure the path to scp is in /etc/login.conf" >&5
+printf "%s\n" "$as_me: WARNING: Make sure the path to scp is in /etc/login.conf" >&2;}
else
if test ! -z "$external_path_file" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
If PATH is defined in $external_path_file, ensure the path to scp is included,
otherwise scp will not work." >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
If PATH is defined in $external_path_file, ensure the path to scp is included,
otherwise scp will not work." >&2;}
fi
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
user_path="/usr/bin:/bin:/usr/sbin:/sbin"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20491,7 +22130,7 @@ else
#define DATA "conftest.stdpath"
int
-main ()
+main (void)
{
FILE *fd;
@@ -20510,9 +22149,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
user_path=`cat conftest.stdpath`
-else
+else $as_nop
user_path="/usr/bin:/bin:/usr/sbin:/sbin"
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -20535,8 +22175,8 @@ fi
echo $user_path | grep "^$t_bindir" > /dev/null 2>&1
if test $? -ne 0 ; then
user_path=$user_path:$t_bindir
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Adding $t_bindir to USER_PATH so scp will work" >&5
-$as_echo "Adding $t_bindir to USER_PATH so scp will work" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Adding $t_bindir to USER_PATH so scp will work" >&5
+printf "%s\n" "Adding $t_bindir to USER_PATH so scp will work" >&6; }
fi
fi
fi
@@ -20545,9 +22185,7 @@ fi
if test "x$external_path_file" != "x/etc/login.conf" ; then
-cat >>confdefs.h <<_ACEOF
-#define USER_PATH "$user_path"
-_ACEOF
+printf "%s\n" "#define USER_PATH \"$user_path\"" >>confdefs.h
fi
@@ -20555,14 +22193,13 @@ fi
# Set superuser path separately to user path
# Check whether --with-superuser-path was given.
-if test "${with_superuser_path+set}" = set; then :
+if test ${with_superuser_path+y}
+then :
withval=$with_superuser_path;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
-cat >>confdefs.h <<_ACEOF
-#define SUPERUSER_PATH "$withval"
-_ACEOF
+printf "%s\n" "#define SUPERUSER_PATH \"$withval\"" >>confdefs.h
superuser_path=$withval
fi
@@ -20572,36 +22209,37 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we need to convert IPv4 in IPv6-mapped addresses" >&5
-$as_echo_n "checking if we need to convert IPv4 in IPv6-mapped addresses... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we need to convert IPv4 in IPv6-mapped addresses" >&5
+printf %s "checking if we need to convert IPv4 in IPv6-mapped addresses... " >&6; }
IPV4_IN6_HACK_MSG="no"
# Check whether --with-4in6 was given.
-if test "${with_4in6+set}" = set; then :
+if test ${with_4in6+y}
+then :
withval=$with_4in6;
if test "x$withval" != "xno" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-$as_echo "#define IPV4_IN_IPV6 1" >>confdefs.h
+printf "%s\n" "#define IPV4_IN_IPV6 1" >>confdefs.h
IPV4_IN6_HACK_MSG="yes"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-else
+else $as_nop
if test "x$inet6_default_4in6" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5
-$as_echo "yes (default)" >&6; }
- $as_echo "#define IPV4_IN_IPV6 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5
+printf "%s\n" "yes (default)" >&6; }
+ printf "%s\n" "#define IPV4_IN_IPV6 1" >>confdefs.h
IPV4_IN6_HACK_MSG="yes"
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (default)" >&5
-$as_echo "no (default)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (default)" >&5
+printf "%s\n" "no (default)" >&6; }
fi
@@ -20612,11 +22250,12 @@ fi
BSD_AUTH_MSG=no
# Check whether --with-bsd-auth was given.
-if test "${with_bsd_auth+set}" = set; then :
+if test ${with_bsd_auth+y}
+then :
withval=$with_bsd_auth;
if test "x$withval" != "xno" ; then
-$as_echo "#define BSD_AUTH 1" >>confdefs.h
+printf "%s\n" "#define BSD_AUTH 1" >>confdefs.h
BSD_AUTH_MSG=yes
fi
@@ -20637,14 +22276,15 @@ fi
# Check whether --with-pid-dir was given.
-if test "${with_pid_dir+set}" = set; then :
+if test ${with_pid_dir+y}
+then :
withval=$with_pid_dir;
if test -n "$withval" && test "x$withval" != "xno" && \
test "x${withval}" != "xyes"; then
piddir=$withval
if test ! -d $piddir ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** no $piddir directory on this system **" >&5
-$as_echo "$as_me: WARNING: ** no $piddir directory on this system **" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ** no $piddir directory on this system **" >&5
+printf "%s\n" "$as_me: WARNING: ** no $piddir directory on this system **" >&2;}
fi
fi
@@ -20653,17 +22293,16 @@ fi
-cat >>confdefs.h <<_ACEOF
-#define _PATH_SSH_PIDDIR "$piddir"
-_ACEOF
+printf "%s\n" "#define _PATH_SSH_PIDDIR \"$piddir\"" >>confdefs.h
# Check whether --enable-lastlog was given.
-if test "${enable_lastlog+set}" = set; then :
+if test ${enable_lastlog+y}
+then :
enableval=$enable_lastlog;
if test "x$enableval" = "xno" ; then
- $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_LASTLOG 1" >>confdefs.h
fi
@@ -20671,10 +22310,11 @@ if test "${enable_lastlog+set}" = set; then :
fi
# Check whether --enable-utmp was given.
-if test "${enable_utmp+set}" = set; then :
+if test ${enable_utmp+y}
+then :
enableval=$enable_utmp;
if test "x$enableval" = "xno" ; then
- $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_UTMP 1" >>confdefs.h
fi
@@ -20682,11 +22322,12 @@ if test "${enable_utmp+set}" = set; then :
fi
# Check whether --enable-utmpx was given.
-if test "${enable_utmpx+set}" = set; then :
+if test ${enable_utmpx+y}
+then :
enableval=$enable_utmpx;
if test "x$enableval" = "xno" ; then
-$as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_UTMPX 1" >>confdefs.h
fi
@@ -20694,10 +22335,11 @@ $as_echo "#define DISABLE_UTMPX 1" >>confdefs.h
fi
# Check whether --enable-wtmp was given.
-if test "${enable_wtmp+set}" = set; then :
+if test ${enable_wtmp+y}
+then :
enableval=$enable_wtmp;
if test "x$enableval" = "xno" ; then
- $as_echo "#define DISABLE_WTMP 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_WTMP 1" >>confdefs.h
fi
@@ -20705,11 +22347,12 @@ if test "${enable_wtmp+set}" = set; then :
fi
# Check whether --enable-wtmpx was given.
-if test "${enable_wtmpx+set}" = set; then :
+if test ${enable_wtmpx+y}
+then :
enableval=$enable_wtmpx;
if test "x$enableval" = "xno" ; then
-$as_echo "#define DISABLE_WTMPX 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_WTMPX 1" >>confdefs.h
fi
@@ -20717,10 +22360,11 @@ $as_echo "#define DISABLE_WTMPX 1" >>confdefs.h
fi
# Check whether --enable-libutil was given.
-if test "${enable_libutil+set}" = set; then :
+if test ${enable_libutil+y}
+then :
enableval=$enable_libutil;
if test "x$enableval" = "xno" ; then
- $as_echo "#define DISABLE_LOGIN 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_LOGIN 1" >>confdefs.h
fi
@@ -20728,11 +22372,12 @@ if test "${enable_libutil+set}" = set; then :
fi
# Check whether --enable-pututline was given.
-if test "${enable_pututline+set}" = set; then :
+if test ${enable_pututline+y}
+then :
enableval=$enable_pututline;
if test "x$enableval" = "xno" ; then
-$as_echo "#define DISABLE_PUTUTLINE 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_PUTUTLINE 1" >>confdefs.h
fi
@@ -20740,11 +22385,12 @@ $as_echo "#define DISABLE_PUTUTLINE 1" >>confdefs.h
fi
# Check whether --enable-pututxline was given.
-if test "${enable_pututxline+set}" = set; then :
+if test ${enable_pututxline+y}
+then :
enableval=$enable_pututxline;
if test "x$enableval" = "xno" ; then
-$as_echo "#define DISABLE_PUTUTXLINE 1" >>confdefs.h
+printf "%s\n" "#define DISABLE_PUTUTXLINE 1" >>confdefs.h
fi
@@ -20753,10 +22399,11 @@ fi
# Check whether --with-lastlog was given.
-if test "${with_lastlog+set}" = set; then :
+if test ${with_lastlog+y}
+then :
withval=$with_lastlog;
if test "x$withval" = "xno" ; then
- $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_LASTLOG 1" >>confdefs.h
elif test -n "$withval" && test "x${withval}" != "xyes"; then
conf_lastlog_location=$withval
@@ -20767,8 +22414,8 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines LASTLOG_FILE" >&5
-$as_echo_n "checking if your system defines LASTLOG_FILE... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if your system defines LASTLOG_FILE" >&5
+printf %s "checking if your system defines LASTLOG_FILE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20785,22 +22432,23 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#endif
int
-main ()
+main (void)
{
char *lastlog = LASTLOG_FILE;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines _PATH_LASTLOG" >&5
-$as_echo_n "checking if your system defines _PATH_LASTLOG... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if your system defines _PATH_LASTLOG" >&5
+printf %s "checking if your system defines _PATH_LASTLOG... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20814,27 +22462,28 @@ $as_echo_n "checking if your system defines _PATH_LASTLOG... " >&6; }
#endif
int
-main ()
+main (void)
{
char *lastlog = _PATH_LASTLOG;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
system_lastlog_path=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test -z "$conf_lastlog_location"; then
if test x"$system_lastlog_path" = x"no" ; then
@@ -20844,22 +22493,20 @@ if test -z "$conf_lastlog_location"; then
fi
done
if test -z "$conf_lastlog_location"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ** Cannot find lastlog **" >&5
-$as_echo "$as_me: WARNING: ** Cannot find lastlog **" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ** Cannot find lastlog **" >&5
+printf "%s\n" "$as_me: WARNING: ** Cannot find lastlog **" >&2;}
fi
fi
fi
if test -n "$conf_lastlog_location"; then
-cat >>confdefs.h <<_ACEOF
-#define CONF_LASTLOG_FILE "$conf_lastlog_location"
-_ACEOF
+printf "%s\n" "#define CONF_LASTLOG_FILE \"$conf_lastlog_location\"" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines UTMP_FILE" >&5
-$as_echo_n "checking if your system defines UTMP_FILE... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if your system defines UTMP_FILE" >&5
+printf %s "checking if your system defines UTMP_FILE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20870,23 +22517,24 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#endif
int
-main ()
+main (void)
{
char *utmp = UTMP_FILE;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
system_utmp_path=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test -z "$conf_utmp_location"; then
if test x"$system_utmp_path" = x"no" ; then
for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
@@ -20895,21 +22543,19 @@ if test -z "$conf_utmp_location"; then
fi
done
if test -z "$conf_utmp_location"; then
- $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_UTMP 1" >>confdefs.h
fi
fi
fi
if test -n "$conf_utmp_location"; then
-cat >>confdefs.h <<_ACEOF
-#define CONF_UTMP_FILE "$conf_utmp_location"
-_ACEOF
+printf "%s\n" "#define CONF_UTMP_FILE \"$conf_utmp_location\"" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines WTMP_FILE" >&5
-$as_echo_n "checking if your system defines WTMP_FILE... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if your system defines WTMP_FILE" >&5
+printf %s "checking if your system defines WTMP_FILE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20920,23 +22566,24 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#endif
int
-main ()
+main (void)
{
char *wtmp = WTMP_FILE;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
system_wtmp_path=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test -z "$conf_wtmp_location"; then
if test x"$system_wtmp_path" = x"no" ; then
for f in /usr/adm/wtmp /var/log/wtmp; do
@@ -20945,21 +22592,19 @@ if test -z "$conf_wtmp_location"; then
fi
done
if test -z "$conf_wtmp_location"; then
- $as_echo "#define DISABLE_WTMP 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_WTMP 1" >>confdefs.h
fi
fi
fi
if test -n "$conf_wtmp_location"; then
-cat >>confdefs.h <<_ACEOF
-#define CONF_WTMP_FILE "$conf_wtmp_location"
-_ACEOF
+printf "%s\n" "#define CONF_WTMP_FILE \"$conf_wtmp_location\"" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if your system defines WTMPX_FILE" >&5
-$as_echo_n "checking if your system defines WTMPX_FILE... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if your system defines WTMPX_FILE" >&5
+printf %s "checking if your system defines WTMPX_FILE... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -20973,41 +22618,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#endif
int
-main ()
+main (void)
{
char *wtmpx = WTMPX_FILE;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
system_wtmpx_path=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test -z "$conf_wtmpx_location"; then
if test x"$system_wtmpx_path" = x"no" ; then
- $as_echo "#define DISABLE_WTMPX 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_WTMPX 1" >>confdefs.h
fi
else
-cat >>confdefs.h <<_ACEOF
-#define CONF_WTMPX_FILE "$conf_wtmpx_location"
-_ACEOF
+printf "%s\n" "#define CONF_WTMPX_FILE \"$conf_wtmpx_location\"" >>confdefs.h
fi
if test ! -z "$blibpath" ; then
LDFLAGS="$LDFLAGS $blibflags$blibpath"
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&5
-$as_echo "$as_me: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&5
+printf "%s\n" "$as_me: WARNING: Please check and edit blibpath in LDFLAGS in Makefile" >&2;}
fi
ac_fn_c_check_member "$LINENO" "struct lastlog" "ll_line" "ac_cv_member_struct_lastlog_ll_line" "
@@ -21025,12 +22669,13 @@ ac_fn_c_check_member "$LINENO" "struct lastlog" "ll_line" "ac_cv_member_struct_l
#endif
"
-if test "x$ac_cv_member_struct_lastlog_ll_line" = xyes; then :
+if test "x$ac_cv_member_struct_lastlog_ll_line" = xyes
+then :
-else
+else $as_nop
if test x$SKIP_DISABLE_LASTLOG_DEFINE != "xyes" ; then
- $as_echo "#define DISABLE_LASTLOG 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_LASTLOG 1" >>confdefs.h
fi
@@ -21052,13 +22697,14 @@ ac_fn_c_check_member "$LINENO" "struct utmp" "ut_line" "ac_cv_member_struct_utmp
#endif
"
-if test "x$ac_cv_member_struct_utmp_ut_line" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_line" = xyes
+then :
-else
+else $as_nop
- $as_echo "#define DISABLE_UTMP 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_UTMP 1" >>confdefs.h
- $as_echo "#define DISABLE_WTMP 1" >>confdefs.h
+ printf "%s\n" "#define DISABLE_WTMP 1" >>confdefs.h
fi
@@ -21071,11 +22717,11 @@ if test "x$ac_cv_func_getaddrinfo" != "xyes" ; then
else
TEST_SSH_IPV6=yes
fi
-ac_fn_c_check_decl "$LINENO" "BROKEN_GETADDRINFO" "ac_cv_have_decl_BROKEN_GETADDRINFO" "$ac_includes_default"
-if test "x$ac_cv_have_decl_BROKEN_GETADDRINFO" = xyes; then :
+ac_fn_check_decl "$LINENO" "BROKEN_GETADDRINFO" "ac_cv_have_decl_BROKEN_GETADDRINFO" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_BROKEN_GETADDRINFO" = xyes
+then :
TEST_SSH_IPV6=no
fi
-
TEST_SSH_IPV6=$TEST_SSH_IPV6
TEST_SSH_UTF8=$TEST_SSH_UTF8
@@ -21126,8 +22772,8 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -21157,15 +22803,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
/^ac_cv_env_/b end
t clear
:clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
@@ -21179,8 +22825,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;}
fi
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -21197,7 +22843,7 @@ U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -21214,8 +22860,8 @@ LTLIBOBJS=$ac_ltlibobjs
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
@@ -21238,14 +22884,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -21255,46 +22903,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -21303,13 +22951,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -21318,8 +22959,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -21331,30 +22976,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -21367,13 +22992,14 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -21400,18 +23026,20 @@ as_fn_unset ()
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
+
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -21423,12 +23051,13 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
@@ -21459,7 +23088,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -21481,6 +23110,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -21494,6 +23127,12 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -21535,7 +23174,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -21544,7 +23183,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -21607,7 +23246,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by OpenSSH $as_me Portable, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -21665,14 +23304,16 @@ $config_headers
Report bugs to <openssh-unix-dev@mindrot.org>."
_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
OpenSSH config.status Portable
-configured by $0, generated by GNU Autoconf 2.69,
+configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -21712,15 +23353,15 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ printf "%s\n" "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
+ printf "%s\n" "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -21728,7 +23369,7 @@ do
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
@@ -21737,7 +23378,7 @@ do
as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
@@ -21765,7 +23406,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
@@ -21779,7 +23420,7 @@ exec 5>>config.log
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ printf "%s\n" "$ac_log"
} >&5
_ACEOF
@@ -21811,8 +23452,8 @@ done
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
fi
# Have a temporary directory for convenience. Make it in the build tree
@@ -22148,7 +23789,7 @@ do
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
@@ -22156,17 +23797,17 @@ do
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
@@ -22183,7 +23824,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -22207,9 +23848,9 @@ $as_echo X"$ac_file" |
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -22271,8 +23912,8 @@ ac_sed_dataroot='
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
@@ -22316,9 +23957,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
@@ -22334,20 +23975,20 @@ which seems to be undefined. Please make sure it is defined" >&2;}
#
if test x"$ac_file" != x-; then
{
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
@@ -22388,8 +24029,8 @@ if test "$no_create" != yes; then
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
@@ -22455,6 +24096,12 @@ echo " Compiler flags: ${CFLAGS}"
echo "Preprocessor flags: ${CPPFLAGS}"
echo " Linker flags: ${LDFLAGS}"
echo " Libraries: ${LIBS}"
+if test ! -z "${CHANNELLIBS}"; then
+echo " +for channels: ${CHANNELLIBS}"
+fi
+if test ! -z "${LIBFIDO2}"; then
+echo " +for FIDO2: ${LIBFIDO2}"
+fi
if test ! -z "${SSHDLIBS}"; then
echo " +for sshd: ${SSHDLIBS}"
fi
diff --git a/configure.ac b/configure.ac
index c285ea32b13d..de60a1b1fe80 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,6 +16,14 @@
AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([ssh.c])
+
+# Check for stale configure as early as possible.
+for i in $srcdir/configure.ac $srcdir/m4/*.m4; do
+ if test "$i" -nt "$srcdir/configure"; then
+ AC_MSG_ERROR([$i newer than configure, run autoreconf])
+ fi
+done
+
AC_LANG([C])
AC_CONFIG_HEADERS([config.h])
@@ -54,6 +62,7 @@ AC_PATH_PROG([SH], [sh])
AC_PATH_PROG([GROFF], [groff])
AC_PATH_PROG([NROFF], [nroff awf])
AC_PATH_PROG([MANDOC], [mandoc])
+AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
AC_SUBST([TEST_SHELL], [sh])
dnl select manpage formatter to be used to build "cat" format pages.
@@ -504,12 +513,24 @@ AC_CHECK_HEADERS([sys/audit.h], [], [], [
])
# sys/capsicum.h requires sys/types.h
-AC_CHECK_HEADERS([sys/capsicum.h], [], [], [
+AC_CHECK_HEADERS([sys/capsicum.h capsicum_helpers.h], [], [], [
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
])
+AC_MSG_CHECKING([for caph_cache_tzdata])
+AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[ #include <capsicum_helpers.h> ]],
+ [[caph_cache_tzdata();]])],
+ [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_CAPH_CACHE_TZDATA], [1],
+ [Define if you have caph_cache_tzdata])
+ ],
+ [ AC_MSG_RESULT([no]) ]
+)
+
# net/route.h requires sys/socket.h and sys/types.h.
# sys/sysctl.h also requires sys/param.h
AC_CHECK_HEADERS([net/route.h sys/sysctl.h], [], [], [
@@ -661,7 +682,6 @@ case "$host" in
AC_DEFINE([DISABLE_WTMP], [1], [Define if you don't want to use wtmp])
;;
*-*-cygwin*)
- check_for_libcrypt_later=1
LIBS="$LIBS /usr/lib/textreadmode.o"
AC_DEFINE([HAVE_CYGWIN], [1], [Define if you are on Cygwin])
AC_DEFINE([USE_PIPES], [1], [Use PIPES instead of a socketpair()])
@@ -740,7 +760,7 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
[System poll(2) implementation is broken])
;;
*-*-dragonfly*)
- SSHDLIBS="$SSHDLIBS -lcrypt"
+ SSHDLIBS="$SSHDLIBS"
TEST_MALLOC_OPTIONS="AFGJPRX"
;;
*-*-haiku*)
@@ -831,7 +851,6 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"])
;;
*-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
- check_for_libcrypt_later=1
AC_DEFINE([PAM_TTY_KLUDGE])
AC_DEFINE([LOCKED_PASSWD_PREFIX], ["!"])
AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV])
@@ -841,7 +860,6 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
*-*-linux*)
no_dev_ptmx=1
use_pie=auto
- check_for_libcrypt_later=1
check_for_openpty_ctty_bug=1
dnl Target SUSv3/POSIX.1-2001 plus BSD specifics.
dnl _DEFAULT_SOURCE is the new name for _BSD_SOURCE
@@ -926,6 +944,9 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
s390-*)
seccomp_audit_arch=AUDIT_ARCH_S390
;;
+ powerpc-*)
+ seccomp_audit_arch=AUDIT_ARCH_PPC
+ ;;
powerpc64-*)
seccomp_audit_arch=AUDIT_ARCH_PPC64
;;
@@ -981,7 +1002,6 @@ mips-sony-bsd|mips-sony-newsos4)
SONY=1
;;
*-*-netbsd*)
- check_for_libcrypt_before=1
if test "x$withval" != "xno" ; then
rpath_opt="-R"
fi
@@ -996,7 +1016,6 @@ mips-sony-bsd|mips-sony-newsos4)
[NetBSD read function is sometimes redirected, breaking atomicio comparisons against it])
;;
*-*-freebsd*)
- check_for_libcrypt_later=1
AC_DEFINE([LOCKED_PASSWD_PREFIX], ["*LOCKED*"], [Account locked with pw(1)])
AC_DEFINE([SSH_TUN_FREEBSD], [1], [Open tunnel devices the FreeBSD way])
AC_CHECK_HEADER([net/if_tap.h], ,
@@ -1169,7 +1188,6 @@ mips-sony-bsd|mips-sony-newsos4)
AC_DEFINE([PASSWD_NEEDS_USERNAME])
AC_DEFINE([BROKEN_TCGETATTR_ICANON])
TEST_SHELL=$SHELL # let configure find us a capable shell
- check_for_libcrypt_later=1
case "$host" in
*-*-sysv5SCO_SV*) # SCO OpenServer 6.x
maildir=/var/spool/mail
@@ -1378,18 +1396,21 @@ AC_ARG_WITH([zlib],
fi ]
)
+# These libraries are needed for anything that links in the channel code.
+CHANNELLIBS=""
AC_MSG_CHECKING([for zlib])
if test "x${zlib}" = "xno"; then
AC_MSG_RESULT([no])
else
- AC_MSG_RESULT([yes])
- AC_DEFINE([WITH_ZLIB], [1], [Enable zlib])
+ saved_LIBS="$LIBS"
+ CHANNELLIBS="$CHANNELLIBS -lz"
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([WITH_ZLIB], [1], [Enable zlib])
AC_CHECK_HEADER([zlib.h], ,[AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***])])
- AC_CHECK_LIB([z], [deflate], ,
+ AC_CHECK_LIB([z], [deflate], [],
[
saved_CPPFLAGS="$CPPFLAGS"
saved_LDFLAGS="$LDFLAGS"
- save_LIBS="$LIBS"
dnl Check default zlib install dir
if test -n "${rpath_opt}"; then
LDFLAGS="-L/usr/local/lib ${rpath_opt}/usr/local/lib ${saved_LDFLAGS}"
@@ -1397,7 +1418,6 @@ else
LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}"
fi
CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
- LIBS="$LIBS -lz"
AC_TRY_LINK_FUNC([deflate], [AC_DEFINE([HAVE_LIBZ])],
[
AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***])
@@ -1454,6 +1474,7 @@ See http://www.gzip.org/zlib/ for details.])
],
[ AC_MSG_WARN([cross compiling: not checking zlib version]) ]
)
+ LIBS="$saved_LIBS"
fi
dnl UnixWare 2.x
@@ -1654,7 +1675,6 @@ AC_ARG_WITH([libedit],
[ --with-libedit[[=PATH]] Enable libedit support for sftp],
[ if test "x$withval" != "xno" ; then
if test "x$withval" = "xyes" ; then
- AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
if test "x$PKGCONFIG" != "xno"; then
AC_MSG_CHECKING([if $PKGCONFIG knows about libedit])
if "$PKGCONFIG" libedit; then
@@ -1859,6 +1879,7 @@ AC_CHECK_FUNCS([ \
futimes \
getaddrinfo \
getcwd \
+ getentropy \
getgrouplist \
getline \
getnameinfo \
@@ -1946,6 +1967,7 @@ AC_CHECK_FUNCS([ \
swap32 \
sysconf \
tcgetpgrp \
+ timegm \
timingsafe_bcmp \
truncate \
unsetenv \
@@ -2011,13 +2033,8 @@ AC_ARG_ENABLE([security-key],
enable_sk_internal=
AC_ARG_WITH([security-key-builtin],
[ --with-security-key-builtin include builtin U2F/FIDO support],
- [
- if test "x$withval" != "xno" ; then
- enable_sk_internal=yes
- fi
- ]
+ [ enable_sk_internal=$withval ]
)
-test "x$disable_sk" != "x" && enable_sk_internal=""
AC_SEARCH_LIBS([dlopen], [dl])
AC_CHECK_FUNCS([dlopen])
@@ -2095,7 +2112,7 @@ AC_CHECK_DECLS([O_NONBLOCK], , ,
#endif
])
-AC_CHECK_DECLS([ftruncate], , ,
+AC_CHECK_DECLS([ftruncate, getentropy], , ,
[
#include <sys/types.h>
#include <unistd.h>
@@ -2695,8 +2712,10 @@ AC_ARG_WITH([ssl-engine],
]
)
+nocrypto_saved_LIBS="$LIBS"
if test "x$openssl" = "xyes" ; then
LIBS="-lcrypto $LIBS"
+ CHANNELLIBS="-lcrypto $CHANNELLIBS"
AC_TRY_LINK_FUNC([RAND_add], ,
[AC_MSG_ERROR([*** working libcrypto not found, check config.log])])
AC_CHECK_HEADER([openssl/opensslv.h], ,
@@ -2789,8 +2808,14 @@ if test "x$openssl" = "xyes" ; then
;;
101*) ;; # 1.1.x
200*) ;; # LibreSSL
- 300*) ;; # OpenSSL 3
- 301*) ;; # OpenSSL development branch.
+ 300*)
+ # OpenSSL 3; we use the 1.1x API
+ CPPFLAGS="$CPPFLAGS -DOPENSSL_API_COMPAT=0x10100000L"
+ ;;
+ 301*)
+ # OpenSSL development branch; request 1.1x API
+ CPPFLAGS="$CPPFLAGS -DOPENSSL_API_COMPAT=0x10100000L"
+ ;;
*)
AC_MSG_ERROR([Unknown/unsupported OpenSSL version ("$ssl_library_ver")])
;;
@@ -2806,6 +2831,15 @@ if test "x$openssl" = "xyes" ; then
]
)
+ case "$host" in
+ x86_64-*)
+ case "$ssl_library_ver" in
+ 3000004*)
+ AC_MSG_ERROR([OpenSSL 3.0.4 has a potential RCE in its RSA implementation (CVE-2022-2274)])
+ ;;
+ esac
+ esac
+
# Sanity check OpenSSL headers
AC_MSG_CHECKING([whether OpenSSL's headers match the library])
AC_RUN_IFELSE(
@@ -2852,7 +2886,6 @@ if test "x$openssl" = "xyes" ; then
],
[
AC_MSG_RESULT([no])
- saved_LIBS="$LIBS"
LIBS="$LIBS -ldl"
AC_MSG_CHECKING([if programs using OpenSSL need -ldl])
AC_LINK_IFELSE(
@@ -2860,10 +2893,10 @@ if test "x$openssl" = "xyes" ; then
[[ ERR_load_crypto_strings(); ]])],
[
AC_MSG_RESULT([yes])
+ CHANNELLIBS="$CHANNELLIBS -ldl"
],
[
AC_MSG_RESULT([no])
- LIBS="$saved_LIBS"
]
)
]
@@ -2871,8 +2904,8 @@ if test "x$openssl" = "xyes" ; then
AC_CHECK_FUNCS([ \
BN_is_prime_ex \
+ DES_crypt \
DSA_generate_parameters_ex \
- EVP_CIPHER_CTX_ctrl \
EVP_DigestFinal_ex \
EVP_DigestInit_ex \
EVP_MD_CTX_cleanup \
@@ -2967,57 +3000,6 @@ if test "x$openssl" = "xyes" ; then
]
)
- # Check for OpenSSL with EVP_aes_*ctr
- AC_MSG_CHECKING([whether OpenSSL has AES CTR via EVP])
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[
- #include <stdlib.h>
- #include <string.h>
- #include <openssl/evp.h>
- ]], [[
- exit(EVP_aes_128_ctr() == NULL ||
- EVP_aes_192_cbc() == NULL ||
- EVP_aes_256_cbc() == NULL);
- ]])],
- [
- AC_MSG_RESULT([yes])
- AC_DEFINE([OPENSSL_HAVE_EVPCTR], [1],
- [libcrypto has EVP AES CTR])
- ],
- [
- AC_MSG_RESULT([no])
- ]
- )
-
- # Check for OpenSSL with EVP_aes_*gcm
- AC_MSG_CHECKING([whether OpenSSL has AES GCM via EVP])
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[
- #include <stdlib.h>
- #include <string.h>
- #include <openssl/evp.h>
- ]], [[
- exit(EVP_aes_128_gcm() == NULL ||
- EVP_aes_256_gcm() == NULL ||
- EVP_CTRL_GCM_SET_IV_FIXED == 0 ||
- EVP_CTRL_GCM_IV_GEN == 0 ||
- EVP_CTRL_GCM_SET_TAG == 0 ||
- EVP_CTRL_GCM_GET_TAG == 0 ||
- EVP_CIPHER_CTX_ctrl(NULL, 0, 0, NULL) == 0);
- ]])],
- [
- AC_MSG_RESULT([yes])
- AC_DEFINE([OPENSSL_HAVE_EVPGCM], [1],
- [libcrypto has EVP AES GCM])
- ],
- [
- AC_MSG_RESULT([no])
- unsupported_algorithms="$unsupported_cipers \
- aes128-gcm@openssh.com \
- aes256-gcm@openssh.com"
- ]
- )
-
AC_MSG_CHECKING([if EVP_DigestUpdate returns an int])
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[
@@ -3038,19 +3020,6 @@ if test "x$openssl" = "xyes" ; then
]
)
- # Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
- # because the system crypt() is more featureful.
- if test "x$check_for_libcrypt_before" = "x1"; then
- AC_CHECK_LIB([crypt], [crypt])
- fi
-
- # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
- # version in OpenSSL.
- if test "x$check_for_libcrypt_later" = "x1"; then
- AC_CHECK_LIB([crypt], [crypt], [LIBS="$LIBS -lcrypt"])
- fi
- AC_CHECK_FUNCS([crypt DES_crypt])
-
# Check for SHA256, SHA384 and SHA512 support in OpenSSL
AC_CHECK_FUNCS([EVP_sha256 EVP_sha384 EVP_sha512])
@@ -3162,10 +3131,6 @@ if test "x$openssl" = "xyes" ; then
ecdsa-sha2-nistp521 \
ecdsa-sha2-nistp521-cert-v01@openssh.com"
fi
-
-else
- AC_CHECK_LIB([crypt], [crypt], [LIBS="$LIBS -lcrypt"])
- AC_CHECK_FUNCS([crypt])
fi
# PKCS11/U2F depend on OpenSSL and dlopen().
@@ -3206,8 +3171,7 @@ fi
AC_MSG_RESULT([$enable_sk])
# Now check for built-in security key support.
-if test "x$enable_sk" = "xyes" -a "x$enable_sk_internal" = "xyes" ; then
- AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
+if test "x$enable_sk" = "xyes" -a "x$enable_sk_internal" != "xno" ; then
use_pkgconfig_for_libfido2=
if test "x$PKGCONFIG" != "xno"; then
AC_MSG_CHECKING([if $PKGCONFIG knows about libfido2])
@@ -3225,33 +3189,45 @@ if test "x$enable_sk" = "xyes" -a "x$enable_sk_internal" = "xyes" ; then
LIBFIDO2="-lfido2 -lcbor"
fi
OTHERLIBS=`echo $LIBFIDO2 | sed 's/-lfido2//'`
+ fido2_error=
AC_CHECK_LIB([fido2], [fido_init],
- [
- AC_SUBST([LIBFIDO2])
- AC_DEFINE([ENABLE_SK_INTERNAL], [],
- [Enable for built-in U2F/FIDO support])
- enable_sk="built-in"
- ], [ AC_MSG_ERROR([no usable libfido2 found]) ],
+ [ ],
+ [ fido2_error="missing/unusable libfido2" ],
[ $OTHERLIBS ]
)
- saved_LIBS="$LIBS"
- LIBS="$LIBS $LIBFIDO2"
- AC_CHECK_FUNCS([ \
- fido_assert_set_clientdata \
- fido_cred_prot \
- fido_cred_set_prot \
- fido_cred_set_clientdata \
- fido_dev_get_touch_begin \
- fido_dev_get_touch_status \
- fido_dev_supports_cred_prot \
- ])
- LIBS="$saved_LIBS"
AC_CHECK_HEADER([fido.h], [],
- AC_MSG_ERROR([missing fido.h from libfido2]))
+ [ fido2_error="missing fido.h from libfido2" ])
AC_CHECK_HEADER([fido/credman.h], [],
- AC_MSG_ERROR([missing fido/credman.h from libfido2]),
- [#include <fido.h>]
+ [ fido2_error="missing fido/credman.h from libfido2" ],
+ [ #include <fido.h> ]
)
+ AC_MSG_CHECKING([for usable libfido2 installation])
+ if test ! -z "$fido2_error" ; then
+ AC_MSG_RESULT([$fido2_error])
+ if test "x$enable_sk_internal" = "xyes" ; then
+ AC_MSG_ERROR([No usable libfido2 library/headers found])
+ fi
+ LIBFIDO2=""
+ else
+ AC_MSG_RESULT([yes])
+ AC_SUBST([LIBFIDO2])
+ AC_DEFINE([ENABLE_SK_INTERNAL], [],
+ [Enable for built-in U2F/FIDO support])
+ enable_sk="built-in"
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBFIDO2"
+ AC_CHECK_FUNCS([ \
+ fido_assert_set_clientdata \
+ fido_cred_prot \
+ fido_cred_set_prot \
+ fido_cred_set_clientdata \
+ fido_dev_get_touch_begin \
+ fido_dev_get_touch_status \
+ fido_dev_supports_cred_prot \
+ fido_dev_is_winhello \
+ ])
+ LIBS="$saved_LIBS"
+ fi
fi
AC_CHECK_FUNCS([ \
@@ -3260,17 +3236,6 @@ AC_CHECK_FUNCS([ \
arc4random_stir \
arc4random_uniform \
])
-
-saved_LIBS="$LIBS"
-AC_CHECK_LIB([iaf], [ia_openinfo], [
- LIBS="$LIBS -liaf"
- AC_CHECK_FUNCS([set_id], [SSHDLIBS="$SSHDLIBS -liaf"
- AC_DEFINE([HAVE_LIBIAF], [1],
- [Define if system has libiaf that supports set_id])
- ])
-])
-LIBS="$saved_LIBS"
-
### Configure cryptographic random number support
# Check whether OpenSSL seeds itself
@@ -3387,6 +3352,26 @@ elif test "x$openssl" = "xno" ; then
else
AC_MSG_ERROR([OpenSSH has no source of random numbers. Please configure OpenSSL with an entropy source or re-run configure using one of the --with-prngd-port or --with-prngd-socket options])
fi
+LIBS="$nocrypto_saved_LIBS"
+
+saved_LIBS="$LIBS"
+AC_CHECK_LIB([iaf], [ia_openinfo], [
+ LIBS="$LIBS -liaf"
+ AC_CHECK_FUNCS([set_id], [SSHDLIBS="$SSHDLIBS -liaf"
+ AC_DEFINE([HAVE_LIBIAF], [1],
+ [Define if system has libiaf that supports set_id])
+ ])
+])
+LIBS="$saved_LIBS"
+
+# Check for crypt() in libcrypt. If we have it, we only need it for sshd.
+saved_LIBS="$LIBS"
+AC_CHECK_LIB([crypt], [crypt], [
+ LIBS="-lcrypt $LIBS"
+ SSHDLIBS="-lcrypt $SSHDLIBS"
+])
+AC_CHECK_FUNCS([crypt])
+LIBS="$saved_LIBS"
# Check for PAM libs
PAM_MSG="no"
@@ -3514,6 +3499,26 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
)
fi
+AC_CHECK_MEMBERS([struct pollfd.fd], [], [], [[
+#include <sys/types.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
+#ifdef HAVE_SYS_POLL_H
+#include <sys/poll.h>
+#endif
+]])
+
+AC_CHECK_TYPES([nfds_t], , , [
+#include <sys/types.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
+#ifdef HAVE_SYS_POLL_H
+#include <sys/poll.h>
+#endif
+])
+
# Decide which sandbox style to use
sandbox_arg=""
AC_ARG_WITH([sandbox],
@@ -3527,12 +3532,13 @@ AC_ARG_WITH([sandbox],
]
)
+if test "x$sandbox_arg" != "xno"; then
# POSIX specifies that poll() "shall fail with EINVAL if the nfds argument
# is greater than OPEN_MAX". On some platforms that includes implementions
-# ofselect in userspace on top of poll() so check both work with rlimit NOFILES
-# so check that both work before enabling the rlimit sandbox.
-AC_MSG_CHECKING([if select and/or poll works with descriptor rlimit])
-AC_RUN_IFELSE(
+# of select in userspace on top of poll() so check both work with rlimit
+# NOFILES so check that both work before enabling the rlimit sandbox.
+ AC_MSG_CHECKING([if select and/or poll works with descriptor rlimit])
+ AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
@@ -3585,30 +3591,10 @@ AC_RUN_IFELSE(
select_works_with_rlimit=no],
[AC_MSG_WARN([cross compiling: assuming no])
select_works_with_rlimit=no]
-)
-
-AC_CHECK_MEMBERS([struct pollfd.fd], [], [], [[
-#include <sys/types.h>
-#ifdef HAVE_POLL_H
-#include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-]])
-
-AC_CHECK_TYPES([nfds_t], , , [
-#include <sys/types.h>
-#ifdef HAVE_POLL_H
-#include <poll.h>
-#endif
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-])
+ )
-AC_MSG_CHECKING([if setrlimit(RLIMIT_NOFILE,{0,0}) works])
-AC_RUN_IFELSE(
+ AC_MSG_CHECKING([if setrlimit(RLIMIT_NOFILE,{0,0}) works])
+ AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
#include <sys/types.h>
#ifdef HAVE_SYS_TIME_H
@@ -3631,10 +3617,10 @@ AC_RUN_IFELSE(
rlimit_nofile_zero_works=no],
[AC_MSG_WARN([cross compiling: assuming yes])
rlimit_nofile_zero_works=yes]
-)
+ )
-AC_MSG_CHECKING([if setrlimit RLIMIT_FSIZE works])
-AC_RUN_IFELSE(
+ AC_MSG_CHECKING([if setrlimit RLIMIT_FSIZE works])
+ AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/resource.h>
@@ -3650,7 +3636,8 @@ AC_RUN_IFELSE(
AC_DEFINE(SANDBOX_SKIP_RLIMIT_FSIZE, 1,
[setrlimit RLIMIT_FSIZE works])],
[AC_MSG_WARN([cross compiling: assuming yes])]
-)
+ )
+fi
if test "x$sandbox_arg" = "xpledge" || \
( test -z "$sandbox_arg" && test "x$ac_cv_func_pledge" = "xyes" ) ; then
@@ -4655,7 +4642,6 @@ AC_ARG_WITH([kerberos5],
AC_DEFINE([KRB5], [1], [Define if you want Kerberos 5 support])
KRB5_MSG="yes"
- AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
use_pkgconfig_for_krb5=
if test "x$PKGCONFIG" != "xno"; then
AC_MSG_CHECKING([if $PKGCONFIG knows about kerberos5])
@@ -4807,6 +4793,7 @@ AC_ARG_WITH([kerberos5],
)
AC_SUBST([GSSLIBS])
AC_SUBST([K5LIBS])
+AC_SUBST([CHANNELLIBS])
# Looking for programs, paths and files
@@ -5623,6 +5610,12 @@ echo " Compiler flags: ${CFLAGS}"
echo "Preprocessor flags: ${CPPFLAGS}"
echo " Linker flags: ${LDFLAGS}"
echo " Libraries: ${LIBS}"
+if test ! -z "${CHANNELLIBS}"; then
+echo " +for channels: ${CHANNELLIBS}"
+fi
+if test ! -z "${LIBFIDO2}"; then
+echo " +for FIDO2: ${LIBFIDO2}"
+fi
if test ! -z "${SSHDLIBS}"; then
echo " +for sshd: ${SSHDLIBS}"
fi
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec
index b8ba8bae0469..124afccd1dcb 100644
--- a/contrib/redhat/openssh.spec
+++ b/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
-%global ver 9.0p1
+%global ver 9.1p1
%global rel 1%{?dist}
# OpenSSH privilege separation requires a user & group ID
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec
index 28b9086f4cab..32bd8c189b87 100644
--- a/contrib/suse/openssh.spec
+++ b/contrib/suse/openssh.spec
@@ -13,7 +13,7 @@
Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
Name: openssh
-Version: 9.0p1
+Version: 9.1p1
URL: https://www.openssh.com/
Release: 1
Source0: openssh-%{version}.tar.gz
diff --git a/int32_minmax.inc b/int32_minmax.inc
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/int32_minmax.inc
+++ /dev/null
diff --git a/krl.c b/krl.c
index 17b88edde777..473a9d737953 100644
--- a/krl.c
+++ b/krl.c
@@ -14,7 +14,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $OpenBSD: krl.c,v 1.53 2021/06/04 06:19:07 djm Exp $ */
+/* $OpenBSD: krl.c,v 1.54 2022/04/28 02:53:31 djm Exp $ */
#include "includes.h"
@@ -1388,7 +1388,7 @@ krl_dump(struct ssh_krl *krl, FILE *f)
error("sshkey_fingerprint failed");
continue;
}
- fprintf(f, "hash: SHA256:%s # %s\n", fp, sshkey_ssh_name(key));
+ fprintf(f, "hash: %s # %s\n", fp, sshkey_ssh_name(key));
free(fp);
free(key);
}
diff --git a/misc.c b/misc.c
index 85d22369505d..f2135803737a 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.c,v 1.175 2022/03/20 08:51:21 djm Exp $ */
+/* $OpenBSD: misc.c,v 1.177 2022/08/11 01:56:51 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
* Copyright (c) 2005-2020 Damien Miller. All rights reserved.
@@ -2399,15 +2399,26 @@ parse_absolute_time(const char *s, uint64_t *tp)
struct tm tm;
time_t tt;
char buf[32], *fmt;
+ const char *cp;
+ size_t l;
+ int is_utc = 0;
*tp = 0;
+ l = strlen(s);
+ if (l > 1 && strcasecmp(s + l - 1, "Z") == 0) {
+ is_utc = 1;
+ l--;
+ } else if (l > 3 && strcasecmp(s + l - 3, "UTC") == 0) {
+ is_utc = 1;
+ l -= 3;
+ }
/*
* POSIX strptime says "The application shall ensure that there
* is white-space or other non-alphanumeric characters between
* any two conversion specifications" so arrange things this way.
*/
- switch (strlen(s)) {
+ switch (l) {
case 8: /* YYYYMMDD */
fmt = "%Y-%m-%d";
snprintf(buf, sizeof(buf), "%.4s-%.2s-%.2s", s, s + 4, s + 6);
@@ -2427,10 +2438,15 @@ parse_absolute_time(const char *s, uint64_t *tp)
}
memset(&tm, 0, sizeof(tm));
- if (strptime(buf, fmt, &tm) == NULL)
- return SSH_ERR_INVALID_FORMAT;
- if ((tt = mktime(&tm)) < 0)
+ if ((cp = strptime(buf, fmt, &tm)) == NULL || *cp != '\0')
return SSH_ERR_INVALID_FORMAT;
+ if (is_utc) {
+ if ((tt = timegm(&tm)) < 0)
+ return SSH_ERR_INVALID_FORMAT;
+ } else {
+ if ((tt = mktime(&tm)) < 0)
+ return SSH_ERR_INVALID_FORMAT;
+ }
/* success */
*tp = (uint64_t)tt;
return 0;
@@ -2793,3 +2809,20 @@ lookup_env_in_list(const char *env, char * const *envs, size_t nenvs)
}
return NULL;
}
+
+const char *
+lookup_setenv_in_list(const char *env, char * const *envs, size_t nenvs)
+{
+ char *name, *cp;
+ const char *ret;
+
+ name = xstrdup(env);
+ if ((cp = strchr(name, '=')) == NULL) {
+ free(name);
+ return NULL; /* not env=val */
+ }
+ *cp = '\0';
+ ret = lookup_env_in_list(name, envs, nenvs);
+ free(name);
+ return ret;
+}
diff --git a/misc.h b/misc.h
index 2e1b5fecaa01..7ef75bd0929c 100644
--- a/misc.h
+++ b/misc.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.h,v 1.99 2021/11/13 21:14:13 deraadt Exp $ */
+/* $OpenBSD: misc.h,v 1.100 2022/06/03 04:30:47 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -179,6 +179,8 @@ void child_set_env(char ***envp, u_int *envsizep, const char *name,
const char *value);
const char *lookup_env_in_list(const char *env,
char * const *envs, size_t nenvs);
+const char *lookup_setenv_in_list(const char *env,
+ char * const *envs, size_t nenvs);
int argv_split(const char *, int *, char ***, int);
char *argv_assemble(int, char **argv);
diff --git a/moduli b/moduli
index 1362f20e1bd1..c580e1773469 100644
--- a/moduli
+++ b/moduli
@@ -1,383 +1,420 @@
-# $OpenBSD: moduli,v 1.31 2021/09/28 11:10:05 dtucker Exp $
+# $OpenBSD: moduli,v 1.32 2022/04/20 01:13:47 dtucker Exp $
# Time Type Tests Tries Size Generator Modulus
-20210524220022 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F806ABBEB
-20210524220025 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F807D248B
-20210524220034 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F80D9BC9F
-20210524220041 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F812A0A37
-20210524220046 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F8155AB97
-20210524220054 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F81B2848B
-20210524220056 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F81C13007
-20210524220118 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F82930D03
-20210524220122 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F82BE877B
-20210524220127 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F82EBBF97
-20210524220132 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F8320C043
-20210524220137 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F83476BCB
-20210524220154 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F83FA204B
-20210524220159 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F842A67EB
-20210524220217 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F84E7FEDB
-20210524220251 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F86503997
-20210524220256 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F867E7587
-20210524220301 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F86A47F7B
-20210524220302 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F86A754D3
-20210524220304 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F86BFB23F
-20210524220310 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F86F871FB
-20210524220313 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87125B7F
-20210524220316 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87290AD7
-20210524220323 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F876DECFB
-20210524220330 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87B31B33
-20210524220332 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87BD0977
-20210524220333 2 6 100 2047 5 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87C5168F
-20210524220335 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87D5CCB3
-20210524220337 2 6 100 2047 2 C117F4B631CA032FD2F00AC0D9A5473D8E56DA246FC44FD594BF5657D399E453728341CC920EE9127729637683D268CA3B62F5CB61C7D4F08D3F202D67DBBBD88498043861190549649D82E7793A1874FE0E8ED0B460E3442DD4DFC2301A1B6D8FA36C7CAD084B2FFEF2205E3CE46B030E4618C7B50656BF9FB60592B1FA32E91E0D536A12E601317F0562F547FF44DF33377ABAB2A2991EC99887712BFD9C78BBAA8759B09577706493F50A416F472D6F7B9532959A8899FACEB55B012E8FE8131AA45E1851FFAA3572E489FF4AAE89ECB583C98CC29ADBB1E9677AE2517D6BC1BC13C5A18A232FAD4CDC6E580FEC730D070D49E88A23C528A4985F87DBEA23
-20210524220355 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A44F8E93
-20210524220404 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A4A0C6AF
-20210524220412 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A4EF1E03
-20210524220414 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A4F93C23
-20210524220420 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A535963B
-20210524220424 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A5566833
-20210524220425 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A5599617
-20210524220426 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A55EC4A7
-20210524220436 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A5BD5EB7
-20210524220445 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A619258B
-20210524220451 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A650122B
-20210524220501 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A6B04DA7
-20210524220513 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A725B467
-20210524220528 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A7C40A4B
-20210524220537 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A825DA4F
-20210524220559 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A906849F
-20210524220603 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A92B2543
-20210524220606 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A946A62B
-20210524220611 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A96E9F73
-20210524220612 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A9741957
-20210524220613 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A977BF53
-20210524220614 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A9808FE3
-20210524220616 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A994D8CB
-20210524220618 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A99CAF0B
-20210524220624 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A9D53ABF
-20210524220627 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01A9F1F75B
-20210524220644 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AAB771E7
-20210524220645 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AAB8D6C3
-20210524220650 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AAE8CD27
-20210524220652 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AAFAE557
-20210524220656 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AB231D03
-20210524220658 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AB2F512F
-20210524220700 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AB3ED6AF
-20210524220706 2 6 100 2047 5 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01AB7A3DDF
-20210524220712 2 6 100 2047 2 CDA33E2E7179C731632DFF6272815DAAC78E971B46095FA70FD7153B8FEC3061C37064D6D6961EA44D04D20222E7071AF123319EE4B70C6C6C7F5EC5BF6F4556A9636794FE249A109E9292CAE57FE40829089D99A5731AC08639F090500DAA9ECD8D56C83368EA05DEB9A1C37C82C0E84396128BF47B2222A7312DC06F7220DB671F16302E8C9ACEB9034E4955EC08E27C9E708FF81884B81CFB3DD2D662D0A60A5DAA91EBD69F564B8B2A565637663A4D444BA4BBEE7F029BB44AE1EA2182F39A1E2ABFDE297432932295FCF1DB704EFCD3A30A9EF881D6090480232D8893B9F7608037E1B5A2A09DD9E590C63ED28A82EFF89135E05E010710FC01ABB48B1B
-20210524221547 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505902F721263
-20210524221723 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059030ED9F9B
-20210524221800 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903179F84F
-20210524221940 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB850590331E399B
-20210524222007 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB850590338E4BEB
-20210524222013 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB850590339E72DB
-20210524222057 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903458ADC7
-20210524222125 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059034C60DC3
-20210524222149 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903527AD67
-20210524222206 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB850590356715BF
-20210524222226 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059035B2AF7F
-20210524222240 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059035E27D63
-20210524222530 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059038AD337F
-20210524222550 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059038FF50F7
-20210524222711 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903A587DBB
-20210524222722 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903A7E2593
-20210524222813 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903B518C67
-20210524222821 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903B6BA4B3
-20210524222927 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903C7ADF53
-20210524222944 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903CB9378F
-20210524223124 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903E4E0F63
-20210524223132 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505903E680D03
-20210524223318 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505904017708B
-20210524223328 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059040391D6B
-20210524223340 2 6 100 3071 5 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB8505904064990F
-20210524223418 2 6 100 3071 2 C1064E3791D96D66CA94320FDDA0DD731891FE4D4E4BCB5C8C2A22E33BE0C071BDD6B55DF0A474F1123F6AA3CDBB043EE9972052E3422BAAF9CBB6C1E77E2817F0266F0018351110EE2017EDE4312F0E0ABECA6585F15630FE2228BC03E4DEC84F31650177D712CDE77D6D6D2B0B391F64CD792A6C14BF9A16011EE673183465882595613087535464AC29A1138E1FB2B1024693A368700447307B43435E1BC718CD239396943F22BBF861EA0098069CAB7976B13C60A9CDD4BEDE6DF3659D61188E161D2D5A02CADDCCB547319E02211D00445BE47F5484F673239D7796CB1E1D3FF1558DA0ACD3AB17C6B3D8C3F00DFBBBF69F3B600E98DDC1FB0C0F79FC2E2F88C891F7BACAD4023331B623DF6835B2A7E881E59F0B7CE676208717E3AA51FBEDD7E9EE62527F253762C7B6A3D987DF800D2FB66DFE4F9588BEAA938DD9FAA5916186746FBC25A357F57D0E03442EEA6D067F19ABB96865474A250C73F66FE0FC5B5847CAB8F2CE25765A52A27223BD725C7ECFCF55EAAB85059040FCE473
-20210524223453 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB455657B
-20210524223634 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB5FCC833
-20210524223659 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB65DD6F3
-20210524223732 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB6E02573
-20210524223739 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB6F4ED87
-20210524223745 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB7068FBB
-20210524223826 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB7A2859B
-20210524223848 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB7EE3B1B
-20210524223936 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB8AE2333
-20210524224015 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB93EC75B
-20210524224018 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EB944D10F
-20210524224136 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBA7C4FC7
-20210524224213 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBB023E7F
-20210524224228 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBB36560F
-20210524224236 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBB4F6853
-20210524224323 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBC0F75BB
-20210524224346 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBC62CB7B
-20210524224413 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBCC9AD0B
-20210524224441 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBD2F9967
-20210524224508 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBD92D627
-20210524224722 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBF92432B
-20210524224733 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EBFB7A837
-20210524224832 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC09EA30F
-20210524224841 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC0B86AD3
-20210524224843 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC0B88DBF
-20210524225050 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC2C17DEB
-20210524225054 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC2C967DB
-20210524225112 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC30CDA43
-20210524225123 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC3311D0F
-20210524225247 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC4813D2B
-20210524225254 2 6 100 3071 2 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC4923E73
-20210524225346 2 6 100 3071 5 C6D582E2863DD842704EDE65181452A2A54FD6112537B792F2AF066D30656086948D10BD502D46881AA1766656F36A4BDDCCAF0893BA661A1E7952ED0CC9FD481640C27E1513322DA51E6CF68B2659BFED70ACA5F3D45188E2DCE57C05479C7564EB1573D3A039E815105E5BED13E0810D70E388766005C2DE1ADA9855EB53BF83EFABFCB67D8BDC4156C639A547EBDCB3EB980DCD81A44255F1EFCEAE2367482CD7AC7C7B68CA9536B6548F5323C1F46C9ADB084274D82387B7005D7D964CF53F4FCD2EF3337466DEB47BF46DA8501BCDAC4579FE0512B1D6C2AFDF933E9C6B89B25CCD5066B103D59FF1CB96DD4E427520CC06DEE74325885FD48E20E6DA45009CFD337511AF8081C2BC4341306DB2F2BFEB6912F7176D07161162D1BF8B603B0500EDAE3985D29BE88F3F94E98F91A73BA3CCAD9F35EBF6F95F179DA44AD4255AE983FBF8A8BD9458ED7D3AC7E410735FF90ECB32029C5A7D562A33C295F6262E6E91AA15444B971D565A6F90CD898E700B4EE15FE1ADABD3EA6EC562D397
-20210524230435 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375A8B66EEB
-20210524230743 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375AA1B04D7
-20210524231138 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375ABDA60AB
-20210524231337 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375ACBB313B
-20210524231610 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375ADDB3D53
-20210524231810 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375AEB7413F
-20210524231830 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375AED5921B
-20210524231850 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375AEF2A0D7
-20210524232438 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B19B5B17
-20210524232556 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B23127DB
-20210524233441 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B624C5D3
-20210524233915 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B81FBBEF
-20210524234022 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B89ABD27
-20210524234251 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B9AA7603
-20210524234341 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375B9FF196B
-20210524234859 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375BC541C47
-20210524234945 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375BCA418EB
-20210524235116 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375BD49C877
-20210524235639 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375BFB1B0BB
-20210524235928 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C0F703EB
-20210525000202 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C21C5393
-20210525000215 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C22B072B
-20210525000220 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C22DB943
-20210525000241 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C24E57CF
-20210525000519 2 6 100 4095 5 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C37CDA8F
-20210525000617 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C3E42EBB
-20210525000910 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C52F623B
-20210525000950 2 6 100 4095 2 DF313B012B87BCB41D4138171AA4A3ACBBCE90E58F3142966241384A0C0FFB78A3AAF92DFD19BAEF944D6323266A2BF7DAD5B917587B37D446A09EC84E519C10C981F1F59D7BF098A174589ACE1272D2BEDBC6703AE8F728E2EEC81F0C8F5E3E77991C632A664FAB45A584FD7A34133DB362EC04B2EFC6EC3F6C609C3ECEFB6223BA4CF06792D3A623F8FA4E1C78603B22B8AF856C8435AA6B25EEEB5C90F24572236182A79EE6A31331B4A78F1EFDE526AE53EA6C30F93DC2AEB3790E8AA728CE26D13080F84CC81ABB03E8E8E653368825D488461676BACF9BAAEDDA84A2E0E3524F407DD717A1DEC0D46C8FCF63F6F8952BCF1B19C03425F5AAB759ECD3C1E943756694A0F32CB0F765FB5EE410AFA6BAA30B0C96F4E65C76741BD067048DFF657B4C7C43336F200951448F3348AD241D9EBA14EE8CD8C023EF049835B6F6A6A4BA8B45CFF29C5252521494750C51972D2D448E357EA1B5A7230DCEFE9F2404E1D1C857E2DBFA18ABEA6369D958870D5657E3C6465748E2E10F851F9301B26F0A4AEF77F134C52A9391F7C92783FD7A2E378B5CE9F6D0ADA2B1EADC9BC9959E30E3821B2473DC1E2F3529DAE96B9E09BB0BC7806F41D7F39CEC690DB9F3DCCDFD92FA5DBF29FA26E5F55D87ED627E7788120A76ADDF2F2F28323F0950E1D9EAAC4270A6D66269978BB7382055BE7C36CE63446899C7ADF725F375C573F39B
-20210525001816 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FBF7D2A3
-20210525001921 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FC6DAC53
-20210525001926 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FC6F3373
-20210525002309 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FE12C677
-20210525002320 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FE1E59AB
-20210525002338 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FE3AB02F
-20210525002359 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FE5BF4C3
-20210525002601 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB091FF3C869B
-20210525002851 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09200739083
-20210525003041 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920140797B
-20210525003049 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092014502F3
-20210525003141 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09201A2B9FF
-20210525003223 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09201EA8A9B
-20210525003231 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09201F326F3
-20210525003352 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092028EFD83
-20210525003809 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920482BA13
-20210525003923 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09205072CA3
-20210525004024 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09205780163
-20210525004148 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920617E947
-20210525004457 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092077D9FDB
-20210525004558 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09207ED990B
-20210525004731 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092089EB6C3
-20210525004805 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09208D77E3B
-20210525004822 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09208EF6DA3
-20210525005103 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920A21B82B
-20210525005232 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920AC6072B
-20210525005335 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920B39092B
-20210525005400 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920B611A73
-20210525005804 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920D2EF2A7
-20210525005836 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0920D66062F
-20210525010525 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921066C17F
-20210525010559 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09210A11893
-20210525010655 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921101CC03
-20210525010715 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092111F033F
-20210525011027 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921284AEC3
-20210525011247 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092138697D7
-20210525011345 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09213EAC66B
-20210525011758 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09215CA5E7F
-20210525011827 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09215F9F6DB
-20210525011950 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092168F25FB
-20210525012059 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09217019A9B
-20210525012441 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB092189F6357
-20210525012731 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB09219DE687B
-20210525012806 2 6 100 4095 5 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921A19486F
-20210525012959 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921AE8C22B
-20210525013036 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921B277E7B
-20210525013100 2 6 100 4095 2 D26A87E5A681F2A0E0231EC9449860176D2F9282C1D6E791D912B84987AAEF8BBCDE27FCC3A31FD76A78509ACB3673A0091330E077333D6682329E65ED16DAB1DC98ED93D911BCC3B63FF1271937AE5CE43688C0322530126BCC852EBA388F6B5B9AFF6808DD0B17790AD76F462EA9F0438F1E5A622C921E50A0358335806DD4A574C8117028E6DD07A42F09C3CDE7B5B9CD8914CEE9116E2F952862EFDB94F826D826C8EF15C468E80F916E09F4C411483E2C3CBDBF1CEE282F1144D17F9F681B0B238337941C1C5DEAB7DD52F0EC84A5C8B9FEEF5AA7EEA118FDF857B8BC0190C81A8D2E446E58C5F18DE1CFDD4680E04C89D421E1DEF67BC5A6FBA6B525FB06C263624A5D668A36F2254F9ADC7366544CE3A388B31675E3886801F9DFB571BA159C7D20B6175711387D696741F64FD689DC61F775028924BCCFC0197844340F61BB7EF0370B3FA53CFEEF65B4058B4CA1B25290DEB7E9ED829154430B7008A5E4174FCCAD783F3C8D1CE61014AF4299527B81B9F4D6EA4DEDEE89DD042FBDB6F0ED861CD7073F59AE181C5922BF8B480F7C71E2EC6CB6EA922FBA8C7383AA72001AA4A0AF633CD82D423B880E4AA3B96921BA8CE3EAB0337BAF49F37576905D811D657E3420C8C41C9BC693ACA6C94B34102F54FB370D597A1F9C00ED602927871F79C396D778FA4C968D2CD48788196EFB9511315087B9AEB0921B4B1893
-20210525015106 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081BF2FBF4B
-20210525015719 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081C01C9317
-20210525022943 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081C51E7ABF
-20210525025621 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081C92AC0FF
-20210525030139 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081C9F26EFB
-20210525030310 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081CA22ECE3
-20210525033123 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081CE69BC83
-20210525035425 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081D1EA340F
-20210525042046 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081D5E1F147
-20210525044151 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081D906177B
-20210525045703 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081DB34C7EB
-20210525050443 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081DC53F8C7
-20210525050557 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081DC7921BB
-20210525051327 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081DD90DF33
-20210525051635 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081DE04D46F
-20210525052745 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081DFAB207B
-20210525053701 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081E102FFA3
-20210525060524 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081E525193F
-20210525061916 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081E723D123
-20210525062421 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081E7DAEAA3
-20210525062728 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081E8449753
-20210525064313 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081EA8CAE5B
-20210525072251 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081F04FCEC3
-20210525082731 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081F9AA3067
-20210525090241 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB3081FEACB11B
-20210525093810 2 6 100 6143 2 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB308203BF9E43
-20210525094831 2 6 100 6143 5 CAED937BA3084DFE7B4C1B59AC23C7EA9F28E677B8AFA536E9079DECED93EDAAEFB2C757F9E7AE4E90C4C68C8C937CAA8A0FB92A36FBBD24F777D579E264E8750B365A59AF83C5925262981B301C94CA57CE2A4825438EE089B2E0A5A8D90B51B7DB6044383542685F2D543030403741A6337C0280866A08D15BBFF32D9326073E6F8BAE510E66CF5A5DC6C7D96EFA13984EA383224CD59C7F8A49BA170EBD0BCF896FAD0FD67AB88D4D25CC81D29FFB7062328C9BA3BCD7EB107B74FAC05412D7677C058604F544B2EE8548E9372064C0CEB79BADEF8755F86E8DC894BD043DE697ECE323D624156B731D99C12FD1F42BB2FCADF8CFFEAB8DB59F9CB5843C1A01018DB3E415B4BF00D7F3F20FAAD86938C6B3061BC2A4ED0D18FAD01B1E53D0C8D41D208189D6E341E167B4B975236701B76C72097A34AAC46F4781185A7A63E4FB4A3CDDAB793EE4DFBA3D57481AF41ACD06A45F8D59D33FEBABCD3B98675A9C3F54B0AB42CFCABCA47021C709867AB12F830C4E93AE48AE5EBDD109E3F672AAE6A2EFFEAF07648D3110EE52627D44C8EA35482502C1CDC7B655F4D4A5E7DA1A064E138D00A9CC85DA5E833221AC5FF62F7871B53A8CE279AD441A5795D092F257C9BD2A871D098B3583ED9876342351C063BC2EA9FF111D245FE68A6A087B9E0B7AB0C47F2C6BD98A5CB4DFC57B71A1CF13A83308DA1E3BEB572AFDA9B88F05CCE1DBE359A44E849CAE4AB6196262877B119EDF241326C0F523ACF04DDF90601DC0D4107B935444D5C9E019B340227A386996D071BAA64D62FA049F285F12366ACDD439FCD3D0BAF9C37519177AAC6CF3B6986BAB5F68BDC9FB6E3B82FA157BE36D452FC0EDC4CDB95F9677F97C0F98725F275EAE0FF15C53957D1EFA9CABCE7B68FC186F117C40C5D24BD982A7F21AD6FE4A9CAC6C763FB68DD0B1C725E5DBC4522B86A42B02E3F5E704595977829607FDEB0922C497A9A93F327FA921D8BFBCD9C18272506A1A9F23171787FCBA72E4670C857D089DB5A22AE801EEBD567D48D697EBF25E6183374FC4C47C1747C3F69E650333F6F7ABEB30820532247F
-20210525101346 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7A84C1DCF
-20210525102328 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7A9C0F78B
-20210525102507 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7A9F844D3
-20210525105019 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7ADB803E7
-20210525110206 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7AF734957
-20210525110823 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7B0605EAB
-20210525113051 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7B3C762EB
-20210525114458 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7B5E9D203
-20210525120436 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7B8DCCD03
-20210525120944 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7B9A11BE3
-20210525122534 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7BBFCC14F
-20210525140523 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7CAD4CEEB
-20210525141051 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7CB96ECE3
-20210525141705 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7CC76C197
-20210525145447 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7D1FC10C3
-20210525152246 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7D605451B
-20210525153139 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7D73E819B
-20210525153550 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7D7D225C3
-20210525161421 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7DD5B0F27
-20210525163744 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7E0BFFE7B
-20210525165044 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7E29682EB
-20210525172301 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7E730C6C3
-20210525172835 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7E7F17D9F
-20210525173319 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7E89CD397
-20210525174552 2 6 100 6143 2 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7EA6442E3
-20210525175415 2 6 100 6143 5 E14FDFEE7787F1C28112A16D64FE7C953E3A963B98675E5C078465D774DDD60D0689616D88E223B1D75C4D124BD32324D828137D8AF145AED00162977FA394F7D9657F5E892CDAC98461E41CCF76B3F42471E8DC112FB82F65AD55AE55ADE7F3B85C9EE6E914F2DEE618D55A9FA0F72F6C03664BCDAEDC64ACD9DAE85B0396321F79565522DE272B5D041155C8949BE08B5B09712887BE1E20C31FE5A5A90E0F9610000EF7E1BBA8C7EF3A9F7E3BD2710BCA36C5390673FC55FC47CF63A356472C491229E283A236DB444E75BCD2F43B0FF35B809E6336314945B725912A1C3423141007FFC129C65CCD772966D9E394AECC3252F9C9AD019950C188FE8922A959E19F226B33235BA30D0F3B163F21BE8964C67D0CD118EB7EDBE0DB21762006A115ECCF829452B51E533AC29A836DC6CF40135FCB31B77A287E5CD377A0A80D7F2683A9D9E760F3EA479CFCE9627AFF5BF6AEC257043D71E0CC695D2DF4589C3255DBA1A2F58FA3F673C23FEF80366042BC0DBD7AE2556E3EA38577FC0CA9D56324CB084E6EBE01ADFAD00AB41CF94822FC7680A9007A6BA804A2242E8EDE7D599A46F59886D36E6B7F4AA20D92E682AFC1BB0BD5F5AC0203185B978F438508933EE2A85666467A95051DF1EA0C6366CC28D36030242A4B51820D043190B310D5D51DCE6A6AF333629FAEE5F3A6D88DDC325321A3767CF1C97B6B5FD8E2AC2E95C54F142BD4F5A5F5609E6D4BC09C55FA03F92BA35C006662FC08BEE197777F3E8CC1730F754447D349BF93AA8683D226EBD2FD872CB8383A03058AE9210891886DB9E4DB2300D109B2C32E26C460DA6E362F72214999EFDEED5E7299AA4C6A9DC9A9BB5A8D59374F92C339314BCEDFE44E5F805F37934C94FB6D8C8E2C9045BF0C1CE9A659A40937870F51F36947A89EA941990F743666D6B27C71CDF6366666E3623471945AB3F52F98C6034CE808AF2F10F21541A3B3C1CBF2A204770E10953F63913D1A5695C1A68E48D21F65C210097F931E4DD82A31BEE9EC842D8898A73CB84E236B8A10D3B7D8BE6097E4679CC8BE8C77A1CB824F6231E7EB8F5A57
-20210525183229 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816BFE560FB
-20210525190732 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816C2E82C7B
-20210525191937 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816C3EC147F
-20210525193159 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816C4F60C8B
-20210525194246 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816C5D97313
-20210525203443 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816CA459133
-20210525215204 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816D0DE4FDB
-20210525233543 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816D9A29577
-20210525234619 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816DA7ADFAB
-20210525235329 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816DB0B2673
-20210525235513 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816DB26C1CB
-20210526022844 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816E7D6D73B
-20210526023323 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816E82F077F
-20210526062933 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FB41731B
-20210526065151 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FCF0DCD3
-20210526070545 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FDF8DB8F
-20210526071052 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FE572613
-20210526071809 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FEDF35F3
-20210526072107 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FF13DABF
-20210526072624 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37816FF7318C7
-20210526081148 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F3781702F3953F
-20210526081939 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378170385D3EF
-20210526100857 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378170BEE7A0B
-20210526104252 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378170E7ACB07
-20210526104946 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378170EFA920B
-20210526105532 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378170F653A13
-20210526110401 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378171004A14B
-20210526110925 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378171065B293
-20210526123113 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F37817168DDC17
-20210526123356 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F3781716B7D3FB
-20210526135059 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378171C86775F
-20210526162058 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F3781727B688EB
-20210526173849 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378172D7A5213
-20210526175432 2 6 100 7679 2 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378172E9D4DF3
-20210526175746 2 6 100 7679 5 E3F4DC1A68758284B2950A16204A7D9CB3972B0E74E2CDF12518B48DA3F349640BFEDA5162CB2EC47E2593EDB3BB51D743F3F4948A4D940B37B724B6D7E5F5BFD44F9D3CFB0F6E2CC1B33AEB7FCA7C2E26EFC55208D15DD12B08925383346148CA7CEEE874499CBE6E5D34AF7EF47742F683398B5418E3FA261013922180C6EEB4250632A2F93CDC281E6E76A488FEB4CE7B4C9783A37201CE4B551B53EEBF291234454CD0A4DC1B78C2D0F1BF72EC5D64EDBE8CB662F373ED861194F02AFBC8B7133ED9BDDFEEBA8E7C19C58505DF691960346B4F9E0FC1076DE872E6CB4323B8AD7FB4B086B26E10A55ECEB23F6FE78A5224A0679E5EA529C1327D38EDCCD340788D6216D1388B33A8E93B41B0B13ECAB9B7D647BBFBA2181E752B9DE7230C13B38E0988CAD88E2B1F8B8B1C938B93BAD62F250289CE33E3BE77C04B8090B806B031C23413EAE7799E6FB6DFB02ACCD308EA8688245527ED4918ACE575748DC01C02A6420C9CEECCAF8CBA73F16282DEEC6697CF82C880E3FFC8FD149411C6AD19AAF3B30BF2EE89977B7536C9607777F6E4F6E83B84BB4D9B359EDA6A5A1167B6D352F4D6CCE10F2C974EB81CB1C75280406B2F891A7E500BD58648A5A88ACDD1A6D7A2D80690BB441E533171930ABA557A52BD2512E3FD9A3E5DE6A378E3FED42D6ED5480093D3B0E068F2A24B54FF43BEE12BDD5A646B4A2C1746C27328792A4B9528FB45F6AF56C6F917978B535D98C2441EE79D825E73BF97A7D49B5DC85B12B0C257DF6AF0907B771C5EA582C9DECDDC3CC1852AE403FDCA636DB4B111747646CF893260651567C4C63B391013CA9047AE7F77BCE46A16FBE54054CA8D74AE248A5C5A22B841D31B89C82C8D9567A03B249A07FC1CEFB03B569AB328B0028DA5F3D4D2E2BBE076D9DAAE0DA86DA2648E7311709D0A8C6083C42F9FE430418C2597BF533D294E15E53D5E045A95222A23F4CA7AC9FF35A0E1CBFB80227D800ADA8F79FE463F1C9FA0D8A4E9F6C42ACAB07B5A7CE6E1BB649264EF1EBBDE073A1892B3EDA5CF60D0921754A5848FE47F32168A094CAB1D242EF095BAAD113824511114B4714DDAAA585E3A653DEF46A70DB8D43E4813E6A03E5779B9A9194925CC967DF08F1EB9CEC35EA96BB3D78C40B0A4B8AA79D101CD8110E37119267CC3F2ADA62E3CA0F444C22CF5A73D46BBFDE56BBD1E4FC397A9D6975E77923B6E3AD4CAB4A4E3C5EEB01DC1B7690BF44197AAD7D1B802BB4F6494095E708F4A7F9642AAD64B0511037DC9A65663C4AA6046575A56226103E282B61286CFE6BD8672A3C297DB544E3CF08013BD2B32130D21E521351E9AA9F378172ED281E7
-20210526194658 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC72DF2567
-20210526205542 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC789BCF5B
-20210526211855 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC7A83E6AB
-20210526212819 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC7B4A5E7B
-20210526214431 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC7CA4162F
-20210526221404 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC7F1A2A03
-20210526224339 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC817DD633
-20210526232709 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC850A6253
-20210526233209 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC8568303F
-20210527003359 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC8A7766A3
-20210527004505 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC8B60FE03
-20210527005150 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC8BE3BDCF
-20210527010445 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC8CE83F03
-20210527012302 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC8E564BAB
-20210527031004 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC96F6A7D3
-20210527042035 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDC9C9071D3
-20210527051239 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCA0A5F80F
-20210527054907 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCA382DD3B
-20210527055430 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCA3E850B3
-20210527063343 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCA6FD9EFB
-20210527071327 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCAA0EBEC7
-20210527071630 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCAA41FB57
-20210527080058 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCADACEDC3
-20210527085945 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCB22EE113
-20210527101619 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCB8016A93
-20210527102548 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCB8B44C67
-20210527105317 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCBAC26CAF
-20210527111021 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCBC0189BB
-20210527120037 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCBFCB4D7B
-20210527120149 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCBFDA08E7
-20210527125327 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCC3B60853
-20210527125755 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCC4035243
-20210527133418 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCC6B03E83
-20210527141546 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCC9BF3B53
-20210527142810 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCCAA21133
-20210527143703 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCCB42B1A3
-20210527150004 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCCCEFC0DF
-20210527152242 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCCE94F76B
-20210527153438 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCCF7614B7
-20210527153537 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCCF7F4B23
-20210527155914 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCD13EEF3F
-20210527170116 2 6 100 7679 2 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCD5E5A47B
-20210527171119 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCD6975A67
-20210527173152 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCD815F687
-20210527180427 2 6 100 7679 5 C32E7FEED6DD76E659C6961141AEC4C2E086F62A1B6FBB851A142301550CCFC2E424C3D4B1B518D97BB7DBA9B7E0E40408EA5CE767F9276D112391D7D777FC14537F787F3ADD0DA7A45B64E1330E8F7A0D23C5AFB283E766F2BD69FD286599C68CFF239900CB849E720800D52B4D7FDFBE94C6B920AFD4FE3BAB7C9F19193F96ADC0EDE471FCFCD27ABFF54EFD8F589FD4FD5DF45FC03F832C4B137F4AEAE448E9FEC83A8E1BE47FA202A243BE467219C94A5B28908635E9794C4A4D471E17297E5584CAC109082787C01B8C32C3B0D89006EABD02F17D8BAA792C71A3CA3563501206E70786FC09605B91365EBC2F31EAA94778BB63895FE13ECEBDD005255672ED2768ACAA24E317FC4D4204AEF9B69C0A7EE845B3C228A878D385BE603145DFA087D480A41AEDFA887F7B058BBBEE7D702D83611132FDDF37D0ED1D1731B905D73CDCEF06F9F2BE2A1D01099A915F545F8FFE9B42B66C5FF5DDF2CFCD38B50D45620A364650F12A6E9E94D398FBA738ED66C764901F475CC0DB8B328343180DC70E77BAFC3D8F5CD168A9D9985BA98DD632FB6691B178DE4C276FD5EADABB891680118D0F1234C21AE7788981A33AEEB5D357C28B87F82E4D7314C2A5C9C756541C9CA0C038CA03EB4A75324BBD8DEB5817EDBE6EC15FEEE0E94DBADB19DB0C53467935672C9E8DA879D83619277D37109F4002884B45A69693E5E5C0919BB3A11C89D0BDE5B944602222405EA03F1CB8B8C171C1BD01489E5690EFBFD69CE50A3C7D57FB83857B18B98FFC999D0CA1CA5BFE196485D03E6CD9DE2964091827CC7FBD6D4708D6E8C27BD38A40CF06F713544A1A862DC650F13148A039BE09E55765E27E70490EA8D5AB67009A5834ED6972FF8D76F57B4EEE311E2F395C12DF65FB0DB8F9DD405F0CFEDF3BF08C391E628A0230B6F0ABBB4D07EC644DBBFBD4F48F9A89756F1004873C3D9F20E3566B6B1A2E1ABB6C7152EFB099723469A3D4408D0C27106E09D483C705E50556A35691C99B108D5629A3BFF434A196868E460046B26F4D1FC9725A3470229BF840C86EE0FE1239AF1992C6F7E960CAD0E0D82839CB67318A084AE5BBD8CE513C4DE6EC95B74F8CABADCD825775C36247B07F2CBDCF45B6C3ABF0C4EFED04733309D6CFEBE37871B9A4180A84A822742CD47496C310BCECB574EBED53C0BFDE574D49F3E180EF575B1BFB8799434305FAB7CB970AF999407F262FDBC13CC1809B1F34A962FE8D1348D52780C4AA173E769E70CAC6D8C2E97BF92F7624B4631952FC07FAF93E43A1A8C869C3423BD9A9387CFB4B5B8B2D8475174CCA1AF38CC64E514F0281D65A9AEE4876EB7CDCDA776E0F
-20210527185319 2 6 100 8191 5 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F513E1A12F
-20210527185735 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F51429194B
-20210527213255 2 6 100 8191 5 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F51F664F27
-20210527214610 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F52058B933
-20210528000741 2 6 100 8191 5 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F52A61610F
-20210528003717 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F52C738E73
-20210528014022 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F530CE1FFB
-20210528020015 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F5322397AB
-20210528050850 2 6 100 8191 5 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F53F20EBA7
-20210528054438 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F5418B5C4B
-20210528084340 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F54D8C79F3
-20210528091530 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F54FA20AAB
-20210528094806 2 6 100 8191 5 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F551BB35BF
-20210528123059 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F55C74EE33
-20210528123356 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F55C9BEE33
-20210528131007 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F55EF35FB3
-20210528131122 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F55EFEBC1B
-20210528133019 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F560345AEB
-20210528174944 2 6 100 8191 5 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F570F3AF57
-20210528180427 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F571DF3C6B
-20210528235428 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F587F3BDB3
-20210529021000 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F590536F63
-20210529024531 2 6 100 8191 2 F08476CF6891E7C1CE5A873D1D744FC41D579F53B1F877B0F280D44DF57BEBB3EFDEBC7B8DA48C885005E0F3D8167BE79FAA61DA67EAB112C599882D369A7446FFB888D483317B6A7E0A6AC0CCB6ADD70D511AD81FDCDD71D40C5A40B3627872CE2EDD092B2ED810F6F5F3AE3C02D97856002D646C750910C9B6917615BA8D8D0345514B5F7B37EF910BE98C8E42FF9F9C2FE04F3252C2894D67A033AB22CA3B1BFA9FEB208509654755F3B83121AB827BC481F2E435F68EA144ECCC19670F5C234369F97461A9AFEAE48917B2D767E925D3B94C6380F4A1891EE20A1413C358EC93C8D0D34E90C424BCA367AB4B7C63FDFA0931FB8735ECC5FE22694F8E2784389AC68974BBF1FB5196A5CFA63D30464968927752F1F8F216A07A467EFBCFD4078203DA384AC63A6A304AC56114D2BBDF9212F58BDE3AC556E168ACBF0AB63370D44E90D63E5CEDACA9D94F248B74A783E3852BE5BFF73E27F6FAE6BD0BE5A7A014262CBFB7ADB6A29477D9F2F5FB45E9AD5F16C07B06CA166455C83377C52BF61D06D8CCA11B692F7F05E96264C52295C73D6CD991190A54A2B097BFDBBA8B89A5DFCD1FF9DAFD24542B78FF5F00AF78890EA8297223CCAD28DEE98D829750A17298ABE7F3ED70E7370B1CDE1B4F23C24D69F0F4EA9F821B89BAA2D4577A247118EEF70F780FEF57DB587E1F3EAE54748615BE921CA766FC7EC2961E36EFB41CFC607B989ED0C4254057FD9D39715A35C872ED17407856C80C35F65BD181B181942CB5D62710FE60D0347FEEC2AC3ACE45EA72FCB4256EC07C0383B6CF930CF56CDB9803CEE74A66F83ABEF9C75A0D222BF02C3535B6E3C0DC3124A0E603B9E6A89A3BF636305D2174A2B379C4E36685993C8E8B4E44905D2D352B9EE9101910DCB6931C904D16CB0A079B6669DA3FF8F925A3119EF27F4164DA23405F8F135E454D09BEA876E27449E5884884A24833F3BE93165240285E43A3E4B296CAB04891F574787335DDF17085F77B37AFCD8221AB748FCB28CA2C664931C397E2CD70F8EC8D21C467A16A1F33EB1A5E9C0CA80EC81697A40FE6B01753AC39216301D9763D401DE1460DEC6BC546FDB648C79F9A7B80D6A8CD2AC8E09970D52B1FD4D780A51DBDDC4FDCB53A3D6DB50C6959C78AE8E1912BBD9B259159BEFE965834EB8F17F00A10DE857A49A6E94BA5E930998F283CB035C83174B17596B4C3ECFAC1912AB9799A92E2A01D6A0004753E3D2E5F8748A697D4007DF99C32C3E6C1C3DDDDEF90B9539D716DCF3F95CFC4CA0A9D9AD13E570C55A708986D1304740AAE543C4506D96DB45AC0547854735EFAB7814C8FF5029B256DA0C58E6BC618008117E92228B618103642E8AE533D5859178AB2B39E3B0D044195F531E8304DCA4B883E1B2DFDA12663E9D5FE976935CCC1594C6284A68C4CECAAF842F5927CEA53
-20210529031713 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CA36AA3B7
-20210529041139 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CA75D422B
-20210529050432 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CAB1C588B
-20210529050545 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CAB28E9FF
-20210529063055 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CB131E3CF
-20210529074241 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CB6403B37
-20210529084711 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CBAB7BD1B
-20210529091139 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CBC6896B3
-20210529091418 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CBC8EBF67
-20210529104434 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CC2D31FCB
-20210529114106 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CC6BA9507
-20210529124457 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CCB1266F7
-20210529130632 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CCC8BF0A7
-20210529154413 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CD7337777
-20210529171849 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CDD794B1B
-20210529201318 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CE8F228D7
-20210529210612 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CEC4AD6BB
-20210529211901 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CED1A6127
-20210529213817 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CEE51861B
-20210529215309 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CEF3757F3
-20210529215904 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CEF8E8187
-20210530010351 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CFB5346BB
-20210530015721 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CFE9B3287
-20210530020811 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2CFF416103
-20210530062143 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2D0EB89917
-20210530071701 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2D1208E667
-20210530095307 2 6 100 8191 2 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2D1B675F3B
-20210530111421 2 6 100 8191 5 D8A2E2F024645B5A3FB339A2EF06A3E46CD2AA808530C320F121CE1EEBEE128D6DB4C49492881B35E5AA8C43CAA07E7F69A5C4ECD0EE62A29FC191B9C0DD6955E23E831A0573135B9931D03A5BBCA961410CA287D08D53C0E8CFEC19534C4FECBAD0F2BE625802AF1B504F59A4A88DAA5F52F221E0E9E0DB1396F07EAF2CA88B79D8CF35EF154A69569C545CA1D04A07ADE3628243039985880B79972FB9F5070951D40C9D21C1729348152724531B270C9DEBB5B2C730C72F4EA3932DB44BD3C746E082856A4109A37BA979164881D5B8007807FF1A7E0C48F99DBBE1709585203E579AE201D295E720CDD45B3A8652A7CE878765E699727641410F840871B4362DC51A3D4D15980876649089CE845B5733497FB8E7B2568EF8627EC1BEE0434A3A72094132A0BA0CA102A440952285823FB09684A1C52468193F6E8A6CC9D935C13FCC661DED5CB84B5D5DF721447531787F78AB31AA1D6342460A8B896518640B7DCF3825B52D46469351EF17E586B661D5C0E792C0AA0B0309B8A4BECB3B267BB459C7452387FF6028EEC1C6DFAE3EE9452EB7A7CFB9CDD361B45FF29E6648BD94712BEF29A1C86C492231F710BC66BF8CF83F8765EF6DBA6857C733789DD71245F17C6FA03DD07FCFFBC450029776FDB4F4B411D4B4A98E090CB79B4CF990398FE1C147CE959C8C11D5DE9A4271EA4CA3D8A50A6F7081A2B0F95AA4AD80081511C357D9F15B7547F0A725EED4EE7FDDAE32A3D00512984928679C51375777E968FE3363DCC495300762C7C6D32F4088DB4D4D4449610D05E87CECADA742827EF2B4EF1D064CEB0EEBB01264306F3E24D6260483829576F88B8346764429722BFD0FE3845F541837ACFFEDA101E0E082F618630B741BE1A9E44C677A947FEC31F08EB338798617A09C38EF3FF31A677E62DCDBA2C56D37B1F16AD2B06F41D3E5CDE9A9B7179B6EC46DF99D857521DF29E8012A1AFE6F2F0658171F56EEA20E531C3B2E02864B130BB0BA476F23024DCCA6411CE1BBD1D5C9F5346DB36334117AAF7A1B4ABE86470CABDF862010F5AE3129CA17F36BA89EE3DB83641804EC2455ED75686342E9F339068A77258BBC292E05AF5C233F5B74CA83080CC5DAE01E977E2F7D1ADC36803398B81DAC22DE391F512912148392371C658C416C96C8C3035928EDBB418CF249C9C02793AE6661AB04B4C6C944F55B23CB5621511DACD8EC5C1ECD463620CAC79C38B6CC95FA8993482EA255246D30DA6EA67C677889F56CDF4466F5D968069E152B0BE30B64E1B18607035D7D15503D364B73BAB5582CDF290FE30D2EB7A4F6F797D80702CC448E1153A3A9D882445C73BA490388588F31FA6C14BA7DBFAD39E1CE6B0E2FAD69015F81FF6DAAC56420A478CF717DD952A0DC51B1E38113CF5EF2AC2EC08B6F6CB427A06AD990213C09DB2D2044A90F
+20220414072358 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5D1B922F
+20220414072402 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5D3FAAB3
+20220414072411 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5DA6E2EF
+20220414072429 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5E5C2677
+20220414072430 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5E5C4C6F
+20220414072435 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5E8EADAB
+20220414072436 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5E9B7C6F
+20220414072440 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5EBA84AB
+20220414072442 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5ECDB22B
+20220414072457 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB5F71BAC3
+20220414072517 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6044356F
+20220414072521 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB60678097
+20220414072523 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB607297CF
+20220414072528 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB60A2A627
+20220414072529 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB60AAC38F
+20220414072533 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB60CD7B87
+20220414072538 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB60F9FD4B
+20220414072540 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6103C8C7
+20220414072545 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB612FA3CF
+20220414072547 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6139A9BF
+20220414072548 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB613E9CC7
+20220414072553 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6171EBF3
+20220414072601 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB61BAEA33
+20220414072603 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB61CF5307
+20220414072606 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB61E8149F
+20220414072607 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB61EB7577
+20220414072607 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB61ED0BA3
+20220414072611 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB620FE4E3
+20220414072615 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB622D2F63
+20220414072616 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB623847EB
+20220414072628 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB62ABB94B
+20220414072638 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6312214F
+20220414072643 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB633E1C73
+20220414072647 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB63669B3B
+20220414072650 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB638220F7
+20220414072653 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6398ADAB
+20220414072654 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB639EBE43
+20220414072707 2 6 100 2047 2 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB641D23FB
+20220414072710 2 6 100 2047 5 F19C2D09AD49978F8A0C1B84168A4011A26F9CD516815934764A319FDC5975FA514AAF11B747D8CA6B3919532BEFB68FA118079473895674F3770F71FBB742F176883841EB3DE679BEF53C6AFE437A662F228B03C1E34B5A0D3909F608CEAA16C1F8131DE11E67878EFD918A89205E5E4DE323054010CA4711F25D466BB7727A016DD3F9F53BDBCE093055A4F2497ADEFB5A2500F9C5C3B0BCD88C6489F4C1CBC7CFB67BA6EABA0195794E4188CE9060F431041AD52FB9BAC4DF7FA536F585FBE67746CD57BFAD67567E9706C24D95C49BE95B759657C6BB5151E2AEA32F4CD557C40298A5C402101520EE8AAB8DFEED6FFC11AAF8036D6345923CFB6434F4DF
+20220414072729 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6436684F
+20220414072730 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF643C46A7
+20220414072734 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF64668B47
+20220414072739 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF648F9F5B
+20220414072741 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF64973923
+20220414072744 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF64B4BA7B
+20220414072749 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF64E993BB
+20220414072753 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6515105B
+20220414072757 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF65323FDB
+20220414072809 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF65A7F357
+20220414072813 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF65CC809F
+20220414072817 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF65F46043
+20220414072829 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF666C8F9B
+20220414072832 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF668915E3
+20220414072835 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF66A68853
+20220414072848 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF672C226F
+20220414072851 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF674E2523
+20220414072854 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF67616DDF
+20220414072857 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF677613DF
+20220414072900 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6792A07B
+20220414072903 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF67AC314F
+20220414072905 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF67B61CAB
+20220414072907 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF67CB88C3
+20220414072908 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF67CBC62B
+20220414072909 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF67D5028B
+20220414072925 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6879A003
+20220414072927 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF68874667
+20220414072929 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF68967B9B
+20220414072935 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF68D81493
+20220414072953 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF69A1B363
+20220414072957 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF69C2BBA3
+20220414072959 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF69D13857
+20220414073003 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF69EF96CB
+20220414073004 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF69F43F4B
+20220414073006 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6A06D42B
+20220414073016 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6A6A7103
+20220414073018 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6A7B9AFB
+20220414073018 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6A7BD38F
+20220414073019 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6A7F4A6F
+20220414073036 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6B2FC84F
+20220414073041 2 6 100 2047 2 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6B67F26B
+20220414073055 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6C025837
+20220414073058 2 6 100 2047 5 E28FC4E08A6D57BC5842065F7028D34B56B517A920144E422159168C0CF6F65E1C9CB385AD0BAFFDA8A78C13A1D32CDC4C0E695426E46F524468E9FF7E423C61B626710F9F3BB9F67F058AC00FFD91AFF9061C88EC8D698F974AA4D7070633D1B7982FA906ED686783E607438859AF0E23BA99392DE67A01D4E2CB47E005EFF3C0DEE0AFFA72D80AD54803FA4C341F6B1B8680C6EB9E3B4A93931485B1F0E92ADA1F3D3F049430454E0C51492C5502BE844CF7AFABC9B6ED351B59098B457C17BBDF6E90B63EBA42E0F03818AB4250668C0F55C0DD8F64D5EE5BFB47713E7935129A97C5B3F917972D7F75263D20B9664DEC37045C7659039593F3AF6C19C927
+20220414073921 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB839BF99CF
+20220414074048 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83B22A8CB
+20220414074055 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83B38DF4B
+20220414074204 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83C4E96FB
+20220414074223 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83C952457
+20220414074458 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83EF76EDB
+20220414074505 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83F0B3E5B
+20220414074508 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB83F1192F7
+20220414074657 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB840C320E3
+20220414074757 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB841ACDB2F
+20220414074809 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB841D33923
+20220414074813 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB841DCED47
+20220414074823 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB842009833
+20220414074835 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB842257813
+20220414074840 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB8423357CB
+20220414074844 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB8423B8E6B
+20220414074923 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB842CB64CB
+20220414075134 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB844C6295B
+20220414075206 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB8453EA8F3
+20220414075228 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB8458F2F8B
+20220414075251 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB845E71A57
+20220414075317 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB84648C5EF
+20220414075352 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB846C72BBF
+20220414075450 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB847A0F4F7
+20220414075521 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB84817FBD3
+20220414075541 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB84866A397
+20220414075556 2 6 100 3071 5 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB8489919F7
+20220414075630 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB84916DB03
+20220414075833 2 6 100 3071 2 C51B2203994018FE66AF950975C59F6B678BD895CBD976250E5513528EF9B03B85B0DD85C17B519B1D41CB11CFCF86F9649C411D746E8ADA9A743D09458BE956D59D6C471945A92E1A6AD2B519D24373242BDD1A13BDE5EAE3518F17F8D2EB158F5340F76212DE07E67816FCC95EABAA1568116D400FC2EE789EB0C097AC9E94DB7B6A861F35B7F57C58934FD6034B4352F83978CB943D63921D8B29BC30A5CB5069A31F550206767EAB17FF80BD34A849F05CEA09CE2B374D70B25DFC31DD546310C948F9DAF4E0C873FA5AC0221EF1D761F581AE4C8C890FCC7D16E5A82B4DB3C9C713A3A13E8039D62AB2DC9B4AD3B1BB721D985C2DD6333E9871F5E4D76AC163D90CC629CC81783087DBC70739200FB5703FF4BEA4202FBEAD26311123672F1E6CBD0DA429CD253E4F579D5FFECEF1DDA78D2AF6B6D8B9818E334D42DFF3F7ACAFD350421BC6C551C004FBE620D397EB602AD2CEDD0D61C9E22D622AF8197393CFEB7250F6D13CBC5CB7625242B0CD23B174F66B00BEDA0E4CB84AFEC0BB
+20220414075927 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA416BC45B7
+20220414075956 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4172ADEAF
+20220414080014 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4176C3D1B
+20220414080031 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA417A81CB7
+20220414080111 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41846F30B
+20220414080114 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4184B28B3
+20220414080215 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4193CE3E7
+20220414080230 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41972BB5B
+20220414080234 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4197B2B2B
+20220414080256 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA419CEB82F
+20220414080413 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41B04B177
+20220414080440 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41B6F0F87
+20220414080455 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41BA8FF03
+20220414080531 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41C38E9AF
+20220414080538 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41C4CE0D7
+20220414080549 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41C714107
+20220414080559 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41C93CC8F
+20220414080612 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41CC0E6F3
+20220414080632 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41D090397
+20220414080739 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41E0CE6AF
+20220414080844 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41F0FD883
+20220414080927 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41FAF88C3
+20220414080944 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA41FED798B
+20220414081010 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4204E96A3
+20220414081036 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA420AE22CF
+20220414081101 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA42108AABF
+20220414081119 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4214499C7
+20220414081154 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA421C7C413
+20220414081217 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4221AEE5F
+20220414081236 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA42261B5C3
+20220414081253 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4229C2F0F
+20220414081339 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4234DEBD3
+20220414081352 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4237ABDBF
+20220414081357 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA42388B4CF
+20220414081406 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA423A221F7
+20220414081420 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA423D608D3
+20220414081459 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4246BBC83
+20220414081542 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4250E9783
+20220414081700 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA42630DCAB
+20220414081734 2 6 100 3071 5 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA426B23DD7
+20220414081825 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA42776DBCB
+20220414081912 2 6 100 3071 2 F5A593C9AFA507A500AC0F2C6389F394E8818163FA32B928AC5A46FBC5556CFC88FC789A9EE0E99C002FC4E3DABCAA2BF268FD7FB49A26E986A300CAEEED3C55E43DD1681074B52C4DB264879CE4B96F2CBB172EBBEE34A7E87CC3818AB3E6AAF135C7CDB655F220B93C32B2CB69F538CCE40AF86994CB6D80D0456B3CAA38C46B0D09C0D26C8E67D4EE6E4FE219AC92FF244216E6DCB4267C0DA00E906730792FA9BDA189B9CE5D552B04F1314418936BF02B08FE3AC2033A6B17DF3956D1316FAA6347FD940DDA68FB8AAE1B42E225B2CB8C81BA82DD05A0284F4C08DA48B991DFC1DD08E8ED02AA3FAF82E34CAC009930DDA85040A5D380F8B9B79F69F46D860319636C5931E1C25EF07F5B3D9964ED066E8E0D1C9E73121907C3A27EDCDDBD231B0BAEB124C13F1EBAC60035DE0017D5B0DABA74763096E26F7C9A7394B73BB65A7733F2A69FA6B0D8543CE3D98C083DE93B48BF974556CE3B0230DE2B13D4BA011DB8272BA6DDAF54E0E26E10180C03397156FFCAE19A95ABA4282A042B
+20220414083041 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB23411639DA0F7DB
+20220414083420 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB23411639F33C3DB
+20220414083538 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB23411639FBF5323
+20220414083742 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A0A39C73
+20220414083748 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A0A515CB
+20220414083806 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A0BD1AC3
+20220414083844 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A0FE2EEF
+20220414083857 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A10F0FBB
+20220414084033 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A1B65ABF
+20220414084433 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A3641CDB
+20220414084513 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A3A411D3
+20220414084808 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A4E0E273
+20220414085212 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A6A1D0B3
+20220414085536 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163A81A77BF
+20220414090236 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163AB233EFB
+20220414090316 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163AB65D58B
+20220414090426 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163ABE1A11F
+20220414090629 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163ACC285FB
+20220414091059 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163AEC45C03
+20220414091158 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163AF2CCFF3
+20220414091314 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163AFB69BF7
+20220414091552 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B0D7D40F
+20220414091928 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B26330CB
+20220414092153 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B3673963
+20220414092830 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B62CC3A7
+20220414092943 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B6A8C34F
+20220414093010 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B6D25E3F
+20220414093441 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B8C7B5FF
+20220414093544 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B934C513
+20220414093731 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163B9EC8F87
+20220414093843 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163BA69E11B
+20220414093925 2 6 100 4095 2 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163BAB069A3
+20220414094303 2 6 100 4095 5 F32919EC12E2FE5DCC900B63D26BA6DD1030C9D818431D43D7629C26DF0B797B85C4DE6D39A179EFDBF452D6FAEAFF7D89C80E2BF78133324537D863C67C527C8C8D321CCB69E1B4A97675179F0D581560D1BB4CB5FC0EE1BBE740DC53E81D509A2AB1C502E02196CB7910868E93FE8151C148430654A623949C8C985F169D78CF7143FADEA9363103FABE79F14F966061DAE8202CE667C23877B4375148E3FE6969270D90C0BB11983A725320FE2E110452D56CD29924687638285FF60F528FBCC8F9F21D1AF2C150265F6846BABF083F10B43D92FCC02F5794034DE043ED9EDD2088E590314930FDECCAF3BDE0D07ED9DB167BF2AF1634EF88C77D3016BFC17B0903449E3611BE247665FD4A2A4F1D988C67BA1B81B4C9453ADF5C98EEB584C5FB25F8B0EA3606C80A459DD58B0D10E50FE9A7E062E9E918765B1C5D2BE056F846BC7BBA649F2BCE549B2FA5A55D3F31388C1EFEA4E8F2800A2A050E8468E8DDD4DA986C6496159A26E2CA9CA26415EE53F6403DAB022C1F19EC1B311A39495AF6A82BD1FD9AE47BF5C10B013E7CA7DAB015BDA7B60EFA5FF4916BC6CB81C5B6132AA9EF4E49716D98FB66C349CB956DDE33CAAE1BEA93AC395C84B3F58FCDAEF3F58F9DEF5F7EDB527578D1711A754BFE19718A41CA16FAB7C106194455EEAF4E0D4FA29D2BF224B328F7B546382F2FB4E8EE41C96ECAB2341163BC328B97
+20220414094931 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818DA7CECB7
+20220414095121 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818DB3FEE97
+20220414095821 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818DE590FC3
+20220414100127 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818DFAAB9F3
+20220414100220 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E005F20B
+20220414100244 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E029D1B3
+20220414100254 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E034AA33
+20220414100620 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E1B8C073
+20220414100630 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E1C2553B
+20220414101142 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E40A1E13
+20220414101258 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E48D9E87
+20220414101626 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E60387F3
+20220414101801 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E6A9F503
+20220414102152 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E84F18E7
+20220414102225 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E886BDBF
+20220414102443 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818E97C4BFB
+20220414102556 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EA01679F
+20220414102609 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EA10FE8F
+20220414102639 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EA3F86AB
+20220414102917 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EB641A1F
+20220414102948 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EB94F7A7
+20220414103222 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818ECA88E23
+20220414103323 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818ED15B99F
+20220414103354 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818ED44961B
+20220414103407 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818ED54ECC3
+20220414103413 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818ED5700CB
+20220414103734 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EEB53ED3
+20220414103800 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EEDDB6FF
+20220414104012 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818EFC5E0E3
+20220414104150 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818F0739283
+20220414104329 2 6 100 4095 5 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818F11E163F
+20220414105100 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818F451B803
+20220414110021 2 6 100 4095 2 E8B371757422F6F4C734F2E4380126789768169B37154E4E3A4A74A3DF6545653A5970CDE0F0BD17CCFDAABBEE7568E1285D5A704BB9739EAB680D7EF59C134D327B55CF4AD69A4128536E2F055F5FBF0DB661C322A4993E382B997B2A0C5E434678B1910862AE385C415FF811BA11727CFE39C559847E710AC2D4BDA8D658F2259887E78D54179287BFE112E9C532CB1D062419DFF6E031F82EC991523A1144385189A813DFACBC63D8DAD98199696715C6BC5A22A1943B2CFC4BDAD8473FBEB7BCEC204EC12CFDB1A9BB66DCF85B3121C9E1C3587960769115B2F27ACEEC29A1CDC717B7505A561051F0E88A3C51798CD829E234ED14C277E9635B3E05EB13FA36F117B46094CA68F45F3667D6E84E0214F1650BF080CC4CC5510D6569E0226E88CD842B2ACFBD31370B136E5FD22C6697090586F38323AB36FB5569FB0FD53BB4AF10C16F0B809C1FB5B1B1C56027244F5A174A37250721197CE425CB5E5C5A51D4A5EA4A1EBEED71511BBE0BFF03CB1AE76968166167A775AB1AD9C9665C6ACC04203E5B2E80AA9F7CF395C28EC432A36A97CDBB354E20BEA600F383D7729DE8B9DF5B16B721BEE8C6ADF51DA8EF5B7B3367EC8E6788F9772835586D09A9F8423AF1221CA87CBD54EC399E0BE49AEF19C017EEF36B3B18517DB2246EABBB21F6DF5CA2F4E1D178D0F42384CA192AA1461452BBC453FB59C54818F852CDBB
+20220414112534 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B97D57323
+20220414112820 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B9836476F
+20220414112915 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B98509153
+20220414113222 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B98BB7CAB
+20220414113851 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B99A6C927
+20220414115900 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B9C9A8187
+20220414121305 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31B9EAC674B
+20220414124550 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BA38974A7
+20220414124932 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BA40E655B
+20220414131030 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BA71F8DAF
+20220414131803 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BA82FCF2F
+20220414133154 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BAA30669B
+20220414133700 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BAAE42927
+20220414133729 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BAAECA503
+20220414135933 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BAE1D12A7
+20220414140132 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BAE5AE7DF
+20220414141651 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB08CFCFF
+20220414141714 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB091AD83
+20220414142320 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB168D7F3
+20220414143527 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB322E33B
+20220414144127 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB3F516CB
+20220414145100 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB545E7CF
+20220414145934 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB676BF17
+20220414150941 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB7E51E57
+20220414151158 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB831F3E3
+20220414151904 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BB92D7ACF
+20220414154448 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BBCD2236F
+20220414154556 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BBCF2D2B7
+20220414162116 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC1F88833
+20220414165146 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC6458233
+20220414165524 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC6C0DCC3
+20220414170020 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC7669C1B
+20220414170406 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC7E116A7
+20220414170516 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC802E3C7
+20220414171447 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC946FB1F
+20220414171849 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BC9D13AEB
+20220414173651 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BCC51B887
+20220414174909 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BCDFE595F
+20220414175707 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BCF0D967B
+20220414180209 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BCFB6BC33
+20220414180857 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD09DEC93
+20220414183147 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD3C3862B
+20220414183832 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD4AAE607
+20220414184336 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD559A367
+20220414184426 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD56C4CAB
+20220414185501 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD6D7EA1F
+20220414185956 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BD77C34DB
+20220414192107 2 6 100 6143 2 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BDA56DD2B
+20220414194147 2 6 100 6143 5 C008BA5D87ECC10B5E79F4C05438A7EAFA57C290A50C25A0DFD5FF2FF19F5D39568056AF4AA2FB56F1CEFB636A5E30D99379305FE9633EA9CF219FD87C501640F500E2AFAAF304B7EF862B6C4C8339B558E3B8F00AB714AD6460786AAE3B328D41806A94F270B4D1F13B958579F3C1A7ACB166FB2E5566ED4305AB36C357852B2ED67D4C877338D891E0FFBBDE512E976B754CA2BA1770D8CE7117D5CEB99715C99D97285F3744533CD9BE72A4FBE2CACD4796FA3EFCA27CCA1F7F96DC2A521CCD7776125A5DB2EE4A12B1DCFD797C47188CE5CB6859ACBB452F922F4FF7E2098CB090F83812A18D8DD9B7465B2572EED81332A84C1591F1BA1633B571423FE38BAA819B0AF2C30676B00EBD98D386FED880BB6D9FF4A05C206A8394E973350A597FC337260025BE097EB7409A182C500853B9C90A096708BB83A80F2EEF4EA23190B9CE095C92A1B675903B07149C34E9FFAF6908BCC27D495AFED5C652242B939F71690748895E93181C746CB6E94C2E58C97149F5F3FE3CE552F44AA859115AC5459C3CA343EAC5F98D076E661EE24E15F22FA81393F85E7D1B26FD4D6CC1DC7BFAC0E1C97438141A98D65EFD1592D4A1211DC089CEC0903DD7F333F55FFE70609FACDE7B7293036BAAB67E6DEE7FB82E16019AF642814BFF4AF6676446AE656ACD601812A86B8DB9A53A1EBB744ABDC7C88DBABE4AA023FC253B56B3B517DFE66156BE7DB0653B3DA80ACF010125D652C38DC91BBA2C247AD9F769A9C2F8FA16A0B0507CA632612F9AD03C5E281FFB3341A929E1EE9A946889AF525B348DE24362FABAE20E583D67B4624C96053960F4744BA71C1911D5A84B3615CC8F52E23C10C38E542B61969BD82257B2BE5B50EF63B5110D6D23B81D33176473020D363845C45BD03D2AEF81F2A87C1BADD4C1248A3004AE57562E38B0FB10124E23DFC0AB9257F5982748E39610A46A974459A2F30D852D560D45BAABEC8B8BE77F8AC9AC2424F69FBD9E23F226FD7FCBA827ACCC49E9EEDDF659ACA0E931B965401E416FB6969743B8CDEC4DEC49648D7C1B82B7B337AB496F9C5FD31BDD2AA5D7
+20220414200557 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE440858687646A1E9F
+20220414201020 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868765073AC7
+20220414201829 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE440858687663CEA53
+20220414203003 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868767F30C97
+20220414203735 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868769010163
+20220414204108 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE440858687697DB9D3
+20220414204650 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586876A4AA523
+20220414210821 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586876D725353
+20220414211625 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586876E9775FB
+20220414212842 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586877066A0AB
+20220414220717 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868776159A7B
+20220414232618 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586878185133F
+20220414233421 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868782A4E2C7
+20220414234330 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868783E43363
+20220415002146 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868789570393
+20220415004554 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586878CBF2353
+20220415005307 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586878DBC5B9B
+20220415011041 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868790357083
+20220415011858 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE440858687915FF2DB
+20220415011944 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586879171F173
+20220415015846 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868796EBC7E7
+20220415020913 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586879851976B
+20220415021312 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE44085868798D86EA3
+20220415023006 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586879B22E39F
+20220415030146 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE4408586879F87F92F
+20220415031549 2 6 100 6143 2 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE440858687A169CCAB
+20220415040641 2 6 100 6143 5 ECFEBE907ED5229E0F2A017AAC2F662065526E4CD6767D11B9BC47C5C4D0E39E232885C9039387645B0C61FC91A5B5F97A3A3264DC42DD48A30C3E923D467D8CDDD98F0DE77067BFB45F466CA03EC5B86BF836D9C6298948D315FF4627FE23F62CE3E722A3B60F7D9D6F97D4B10E30924ABF0E094D5155F57DFBD93B17A3E958816225D458E063A4785F4D04A131D6C3AEFF9B405648DC2E0A64F061AB428E6C3B69C65266514A729829756E016CF55D1A917D9CE64ECEA6EB081A85F177BDEED9062CA130A23BB3D90817644F84890C55BB158DA2C0F590826B7073E933EC081268331D56BFB282D4DA250EC39EF3E477BAC8E5B64B712F4457C5B116D0D491AC7AF0E68F3337A51AADA71152604FF386C9CCB4F67204F6A2FBDBE18E5AF591DDA0B5A93382BC210A549262C0A250EF2CB3D3009C4EA412324E359DBEFF97ADA37287D08C11ED12B170B06B8055BC5B17B3F464BFDE141A145A6393750FE9D5EF33C33A43B575091076A24A9E67C56C7B41F023C42166C89E57D001E9161E924A693FD3712355AD60EAC3BD8AC16BA15F5BEABEE3D014B7F5361D7EB36B3F594E1BB98F6813A2D88FD6FC9F008713334AE962B0CB4C07FDB32D549C0F24D127486707C29A7F5EC7F8601961D2E4C189BA3129E48D0D2215E70D9115AAD993E78565715E50EA0E336EA456D469A23368CFB3F0ED6B8AC77738B2A2AC0A7F155CF6D402687212585A2DD9EEAAF614387C7C8D3089D3F42DBD1A594233ABB618AAD84D52F8A234281F2B0F62E3FE23B1E7F28DD89F6F79572506F9B02021CE44914237C190C82F1E5CB395844550EF279E9B50FA1D5B7AE84FE9F31538546244BD4C86FDADB5974396692A7BBE7AD493834DD13418929F8EA0F44BBF8E3D9DFCEF170DF138351932FA05468DE9A922953DF5AB791406E89F752A378A0D98A957773EC3B952DAE04200C1944F30B43D80450F8F83AC4F688D806DE9C9C406D30FC0D9098BE612EF0C4AD2E80B2C746944C727A1015538A53C69280EE0F00D6601CAA6CB0EAF4D3DADBF849D4C1F8F1FD7D438619C70364DACE440858687A85F5E8F
+20220415055156 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E02A82E93B
+20220415055855 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E02B0AF64B
+20220415080431 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0357CD26B
+20220415104028 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0420DED43
+20220415110553 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0440C48AB
+20220415113849 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0469931F3
+20220415122158 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E04A10FEC3
+20220415125947 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E04CFE8C63
+20220415130450 2 6 100 7679 5 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E04D5A7257
+20220415133311 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E04F929113
+20220415135605 2 6 100 7679 5 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E05156D2E7
+20220415142115 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0534A50FB
+20220415151250 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E057418E9B
+20220415162045 2 6 100 7679 5 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E05C89A9FF
+20220415171606 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E060CD4F4B
+20220415180941 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E064E85D4B
+20220415194613 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E06C3089C3
+20220415202412 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E06F041BA3
+20220415204136 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0704DA05B
+20220415205914 2 6 100 7679 5 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E07193837F
+20220415225928 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E07A9B3103
+20220416005936 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E083760473
+20220416011857 2 6 100 7679 5 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E084DB18EF
+20220416014012 2 6 100 7679 5 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0865D0237
+20220416040204 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E090AFB413
+20220416043614 2 6 100 7679 2 D73E4A149D00067AF38F615C7920E3E58F83FDF73F493F4712369137702E94062D5E0857DA1D94CE7C7660F89D285B5DF0F8FC8A8CD2FF69819BED74B0F05EAA467BA2CB1337A7F6E9EE06670C393AD6C845C1743F511BEE7ED9D65AA1BF3FD41BD6F0EF131358CCEE448D0EFEE47EF75D3F4AA2FE7A70210CE62E2C6F791BCBB4852CDF41C5EF6B481ABB954A6AB79AB82ABC543C6CF66F971F590ECA63988A886308218202016278C80C8F7142E1CC482FCFC313123AAD101AF837EB8A210CE3522F0554FE4A00C29E51510678F9DAB40C21A644BC9237D982C24AD1788C3D20F6520144B491C77DB1C53CE98726DCF09DBD1978573CF32848096B44A72CEF3221D98C44BB32A524549A20D822F5531D7E7875B1B564ABDE9EE100A90A8E51B37EAEAE3E89E3E8348F3BC9D8FD284E0FA829406C5D8CE0826CB3EAD353B6052B9C7FC1CD4967090AFE5F2BC11B3280C93278A1396AFC640AD8AFE9101965306601723E689714C3190C41C4D4635F1541241F452C981A5F574DCE109014A274CDBA4CE6AD7C693AA7D3F18418AA4F1487E657858DF460D53BD835685581BB461310DAF203B67C23E0C17ADCD024033C40EEF27957151D01971F43254C6C4E3D86F6ACADB8BCDDCB300A21FEAA54E59A547C9C06ABA312A5B4736356230580FBCACD3FB08626BD622934B81B8697291C6DCB1124F7A6762DB30B9CFA22A92FEC007E7EDBB188F34755C350A884DE8890D0E5D6F491D9C23D951DEBADCB26E1D25D971F5FD23FFA0BCAA84646352DCA69C7A3BB991961E762E96C48E58A2F8FA52DE7CD9FE7C529289A73E13032154349ECA5CCCB3D5B89980B29872AC5B03EBAA726CFD9790AF85E371F0A5B0588E4874EA300C5A370ED42A97C6E372D1DB9825EA995C0B5FABFEC09A632010EE138E8E35794640D65CA647ECDDC20A4D453CA4C35EE78350A8045B3CAD6CF41D3DF5260E355EB03E819C0068C91C2F530F7C74F680386947FE3FD00C91C5CEB7D0AF97DDC251DE856355D16F7CE88E69B20BB20BDB3204C63EC00277B7D5DC9A77682DE0750EBFF7313289998DE1C6E940F0B172A173531140FDA7A3422FB739F8F1647907355B26C37A47EC420791F68C61CC7A55CA855DE158B43D0DB363153AB9F0DEEC632AE784F62775862C4319971738352448A4D653C1CD7380247C05D56198D19720CB284E6CBF137616D8DB5510FBE81A7F646E5356C998B56125895D10ECAE67FD4CCD73FA78ACAA774DB11BBD5314ABDA3DA139107FCD342BA6CBB9BDCBED536411BD50B38F7234511CE74B1362D07BF71DBD033E6F637C45FB0B25871B173BCE2337D963AD41693E0932065A3
+20220416062823 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB80218A9572A3
+20220416092832 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021995B7A27
+20220416094426 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB80219A994F8B
+20220416095028 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB80219B0F266B
+20220416102802 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB80219E13BF97
+20220416120843 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021A609A13F
+20220416133156 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021ACA2E43B
+20220416135357 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021AE55C347
+20220416150622 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021B404E4E3
+20220416151128 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021B462EA07
+20220416155217 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021B782687B
+20220416155712 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021B7D8961B
+20220416165422 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021BC44747B
+20220416170631 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021BD2BC4F7
+20220416185708 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021C588EACF
+20220416193124 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021C8261C8B
+20220416194631 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021C941917B
+20220416200225 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021CA6E54B7
+20220416201249 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021CB31B7C3
+20220416204005 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021CD39B303
+20220416214143 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021D1CB213B
+20220416222645 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021D51E3AB3
+20220416230352 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021D7D44ED7
+20220416234159 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021DAA0700B
+20220417010500 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021E0C9B503
+20220417020435 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021E5207D2B
+20220417025157 2 6 100 7679 5 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021E88D137F
+20220417032310 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021EACBFA03
+20220417035624 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021ED21FED3
+20220417051440 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021F2C36493
+20220417052159 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021F342D84B
+20220417052424 2 6 100 7679 2 CBC85C4D4EBCF255C5C59577D8AA5AD90A69B25B5296F0E56375785F984F7C899F7F9AF6B2C9194B15A6986941981AC7F389B6B4929F2E376CBF404FC982D91B1D5D8742069C5FF04CB06F655261C68FB38232C141DF7E03297340FA6687EF802A2A9B616B998F04BA24B6657E65250B52DF17531834455D250CB3A0E8CDD070B4F89C82F996416365AB47F1028D66207A6BAD8BA74D0E27BB3CE3F234C59C9CD050ED201ED5C816CAA3DF52A43C612C1079BF51304ED475DDDC73A289AFFA650FC7C4C568ACA26474BD48122BC45354B3AB4F070F6B91F64DACB2FB6F3A6B9FC1182A6818184DDBDF76226DEACA74B78CBAAB347134ED242212BE83D5D1BCD7CD70040518875F00402BBD118E941AF4F038674617A6BCA30F22F40CCFBF6138C854020BDFA5D1336B55081EB46965F647EB1EBD9D290056180489B1E7104FBD061B751D0472124624607D2E6867F7079C0531FECF05A79ADEF6F22DD6FFF9431C6A077BAE0384D447F4085CC805165DD8EB9C8C309B2EDD032DF0D4568FC21E428D6049D809567C707829579A066AA7F62C70EC559586A0749109764F5AE32CAC0C2127BB3654141BA6F87F1911671906B60D77BEE322D71515086B4E9BDA8E853DCF1906CFAEB099B0A1BB5EF0A06752A9C89EB506C773DC12FA8DE2DD8FE789624D80406619AE1BB342C7F01F424E4D5908A02731F051996721E2C0CB6703E131F4B5D1768E386783ED41C1C1318F9E19D995CFEEF998D5659D4A9FBEEDE6313B9E4C1665F1E44BF213E66EAE4435DFC2533EB131F235E0075F406028B650E758F38A582705423BB661A095D24E79B6A1D5C6A36989B28FD2ADA228961C1574187F18D419B46545D7FB147358A8409F5CA3ABBFD14EDDE9C0768E84E77F6E61307908F0DD8CD49B9C413EDE4FD13E4D1FB5CFB0075297258D828C20FD01A261F8D5672BFD190FAE191250F533B548B5469879E8B6BDA77D650ADB83AE9FAEC37FBE8A9F5F85CF47159EBC54A9129692A2B253C735E2F629D183A2ED4F2747BCF143D6D673F0F3703D0122BEDC5255F003311A81FA236D0E93D6CCC3375C4C35474427756E58A245A8F0AD68F1226BDA8ABB969A68B0758F1229038CB16711996B27923A0AE7D81384C24763C72B72B6A23A6EED923D0C70A3E47E47BD572A3398F3D651614A47C942A26F785F75A2DE7EE6FC927BE209729BF52943889E8C14708F592036BD3E3E4990659A13D64A755C39BC588B7D03BBE6129A39746304FEF371C760B1986A6FBF4DD588873571984B10FA6624239082E2273F772BC4FB28BC1E57DCCD35511FB1303BA03BE961D3788131E7A106A63BEB8021F366931B
+20220417063546 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAA824C207
+20220417073924 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAAC98E38B
+20220417084530 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAB1415F77
+20220417090433 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAB29029DB
+20220417091538 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAB351952F
+20220417105457 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDABA287EEF
+20220417121015 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDABF594DF3
+20220417131800 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAC3FF4F83
+20220417160405 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDACF38B053
+20220417171411 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAD3CDA357
+20220417172520 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAD4899F6B
+20220417200514 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDADF12383F
+20220417203736 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAE12A45AB
+20220417215125 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAE5E926EB
+20220417224905 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAE9A3B337
+20220417233642 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAECA4D2E3
+20220418001736 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAEF4202CB
+20220418013943 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAF48042DB
+20220418030345 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAF9C843DB
+20220418035729 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDAFD2E683B
+20220418071750 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB09CEE313
+20220418075023 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB0BCCA41F
+20220418080602 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB0CC11E8B
+20220418082746 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB0E073263
+20220418083338 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB0E5A8D33
+20220418100322 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB13D22C2F
+20220418122110 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB1C284B33
+20220418125647 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB1E510FB3
+20220418130116 2 6 100 8191 5 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB1E90B78F
+20220418132740 2 6 100 8191 2 C52C5842553651D384813D75CCBD7B83BD255568A4C68FF4D52E1E7FF21591F027FCB743BE99262A53363C83B0A9C2D2E1C1DAEDCCF76A89344F891B001F588691CBC39D7582E69AB96E1E7A2AD2710D4870E1270A36FB44D7D358B0E7EB06AED2AE31FF68CE0198CF3A59EBAEAD81B1C823C4D88F490C2923C993D1B9E267E50DD8FAD09B83CA87A831B31B96DBF72089B9576FC5AFCA41AED93BBE1D5C627255CD02D6F98D097F8FE1F17B1B743B6E66DF5AC512AA430F04436E06793E7E73A914750833BC69830DEEE6FB57C32C3D7941529B915B1C4B6F37FCEC221A9DA83F050D47EA10DD4546309BB15CDC2A25C287B9A16CB0B2BB663A3D64BB7C26107034804C2C7569ECACBD609EF8A68E19768F86476DAEC2F12E14C325C5498DAD1BBFA5AB8F139E588C3B6BAE947D14283E944443B1DC19896D61730F5EA8A43D5AB9E48EC3861DC3D740FAFC39C408DB1E86F96681D630158C66FE42E187ABFB18304CDCF2718CE7B04F7FC55B78A19A0A43FDDB6CB9077FD680D50989DB1EB674BC03F20A1AEB6F9C546515F6C32C4276E5297A4A3AFBE8E6026C10FEA7F791F9049D0768668AFCCAA2D18878190353C870C6E9D4AC0DABF50BDA3B25EB99528566B9E0FAA44711FA57D1D15B75E00CCA8C1C0E76CDE80607556AAEBC173E0025FF7B05858610B85D868C92789BF1A9736B93E6B4AD7EB23A99F83E69B82BB1BFA26696C68D1066566AD45AA1BFF3C88ADDDF4181E9B9733B2D310B360D7865E4853C72AD5CA7614988B631926C237CBCEF8BFC9F861F9BD8FD92CACF2ABA9A72521CD7AF9465E00CA0F3CCECDBFAF75C148DEC07886536E1CCE9A68620F750657DD7EE912A1B9C7D35ED9AD81984544F7221DB21F2B47FA71BC1B76CFD51D3796F04323FEF98802EE57DE86BF7BC3C27CDAF15F00824CA24C928E0A2E9DE4E66097E382DE41B32769CFE9853EC1EB4B788364E9DE1CEAE0DF13545C9FF6DA8C0DC9289B4BE38A3600912AE233859D59BD1CE3A44C4EAFF6B1548C5D8CF7A63E449702ADBEE391C3BB1FB8A7217D74AFCEED66EC0E7C448B4B0D3FB011D666598F238968B66A3BE5D0D2F7E3D1D8D93736AE5FF605D8E17696F4FD6386FE2DB6BAEE6D142D184F5C088F9FC4DC05C1E7005092A6E7214BA7E5E85A7D9666A10B9AB7C14425FA7A1D82910E4B17E9B7DB09DA89CAE91D89277814A46A6F20E70AB75C45B0BD32227E0F7085C84B8A3864C25FB684DCF5B4512C46E04C7CFE7911C5E256CA017186A33447619E65C1839988874FCF00FCD2BB7FC4960B1107045898573AC4C7A7F0E3C17AE2DD5FBB92479B55517D435B4F582EEBE2CB6B926C424C3F1243F6FDDD33184E4132C08AE4DA1ABF5C5036FC8D3883855251B8589F7147889A37A300E7EAEDEDAD9262B626074F039DAE19BEEFB84320EDB201DF103
+20220418144902 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67858150C3
+20220418152824 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67884BD073
+20220418171630 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD678FEE66DB
+20220418182724 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD6794E3AFCB
+20220418183435 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67955AEE87
+20220418185712 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD6796E81A27
+20220418201627 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD679C621EC7
+20220418211708 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67A079830B
+20220418213706 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67A1C79F63
+20220418222050 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67A4C4F48F
+20220418224223 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67A634298F
+20220419011431 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67B069D573
+20220419021153 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67B43DEC33
+20220419031338 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67B845003B
+20220419040146 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67BB6317DB
+20220419060359 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67C35DBBA7
+20220419082948 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67CCD1BF53
+20220419084823 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67CDFBAF53
+20220419091604 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67CFB4406B
+20220419103659 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67D4D81393
+20220419110019 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67D653D053
+20220419124806 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67DD1EC41B
+20220419133200 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67DFE53A7B
+20220419144722 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67E49063CF
+20220419152308 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67E6C7E127
+20220419161040 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67E9B7FA1B
+20220419172345 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67EE2EB17F
+20220419184212 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67F2FFC2FB
+20220419184630 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67F3381C0F
+20220419193320 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67F608FFDF
+20220419193640 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67F634CE4B
+20220419204750 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67FA7B8963
+20220419205514 2 6 100 8191 2 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD67FAE5B15B
+20220419225936 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD6802713B8F
+20220419233957 2 6 100 8191 5 CF0A168167DAB1FDFD5C0376DC6E2C93907F486EF5576F14B83FAD667FCC774D179D9A0CB69771C381E7A3AC0F7561E06C8BFD155A9B527EE6F015BDFF6DAE1556CEB985BAAA83E40720B4D91830DDA2BC4BE8C137AB7EB0107D3E04DB39A092C84AEF71E223A40F18B586FA813ED2EC4453A8C15B3531DC651AAFA6136D5BA894B22FA94E96D6034E9A569F4D3366B323D656B5C480D0FC443BA5597B42071CB28466F084FA31856AEAB54268E7DF559C47D0F53F7584273FD41C9C59C130E9E43B0E5664B1FFAE5D3608EBFCDCA6E257B0AED1E270938A03C7494B16E725389F8106CFA4746BD350EFD6688AF36BA679CF2437E25C0335A4C7E51AD3043938D7D49EAD349D50B153346687EC29B70982760D6280C1B92F58AEFC66BAB600A905A40B720A8E75CC1C1D96557F1988FF927ED6C2C614357242CB03E314B19766B1C7D70575A1607B25C6E90F2412DE7D3F140B3B6CD743FEE66DD2F32B35F34C1C4F1523B03F9E68E873FB7697D0D09D387B8E4BA6FF9EE302A8B6D4BEBA2659E8933B8A411BEE451870CA8F388C96C0D1A59F2BCB29CBD5FFDCA855A7A9720E7BCA71037B417D9D54EFED70FB695EB8E3461262884DADE4C7E2F9ED544D650CB9853F1AEE8C48FD285F8C806823065A238AD70A99C832C815970C33E8326ECC759378A603C77D20248DFAAD6AC718D5F04AF2635061C904159E1EB37873B383C7A244C81F58A22553B1DC1A74AFB44B44A5AEA3B096DEB8B6FEFA7778ACBE1B1EF0331B2667611340085C51D092DD6AC47814A4D68384007F87EA2EF20E005ED221855CCF2B67FF58CAA28E40CD9C44586CB054670C2B0EF0E6B73852B5B475409BDD6A6042345630EB1A675F51A13F7453936B72FDACC671D863DEFE781698B6AE6CE15FB6936A27A9D5EE7442380812B8EB4FB525A518239E138112E6BCA6FEA3FB27B30E28F6D3084D8B5E01F20C7D3FD7EEF3E3EB55F392717BCA9CA76900EBADB7AEA8A26F704C8417708D51374E98D61E0D649BFCC0957FB0636762453C8D1CE08B95FB90BB5EFF6A50210679E167C1E0B67AEDC6E7000C1C4AA5509F8F81D679855BD6CF8FE556FADACE0E45F1C1387DD1A14BBC8A3097DC11C7E40E5A31BCE2188D99008BC3163D04D03ABFB8AA3F17DCFADF8A26F4F275886B1C3DE598068054BB5D8D1B4CB5BCA9E6E822377AA7625490BD4735DDB2B4558D677C1DC2AF39CD9C67242D1C41FF3109FBA72C9C22E362310A905738BF8CEB12697EA0A0885BE11AE0A44DD1FE5F6F863AA8740BAD7300FE1FE72062D3C1669CA796B541637141925DE49515D497F669A695C2735489B58A6E48FF5D6E884D262E5EE95F1EDF49DF55485891DE9B7F5B1E73AD0953C021E4E58D3B7001B702EB6A030E81DC6DB9265290FC224695CAB521CCA0449069CBF358949B03FD6804DDE8AF
diff --git a/moduli.0 b/moduli.0
index 495bd5205aa7..fc77c672c2ca 100644
--- a/moduli.0
+++ b/moduli.0
@@ -8,11 +8,12 @@ DESCRIPTION
sshd(8) in the Diffie-Hellman Group Exchange key exchange method.
New moduli may be generated with ssh-keygen(1) using a two-step process.
- An initial candidate generation pass, using ssh-keygen -G, calculates
- numbers that are likely to be useful. A second primality testing pass,
- using ssh-keygen -T, provides a high degree of assurance that the numbers
- are prime and are safe for use in Diffie-Hellman operations by sshd(8).
- This moduli format is used as the output from each pass.
+ An initial candidate generation pass, using ssh-keygen -M generate,
+ calculates numbers that are likely to be useful. A second primality
+ testing pass, using ssh-keygen -M screen, provides a high degree of
+ assurance that the numbers are prime and are safe for use in Diffie-
+ Hellman operations by sshd(8). This moduli format is used as the output
+ from each pass.
The file consists of newline-separated records, one per modulus,
containing seven space-separated fields. These fields are as follows:
@@ -68,7 +69,6 @@ SEE ALSO
STANDARDS
M. Friedl, N. Provos, and W. Simpson, Diffie-Hellman Group Exchange for
- the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006,
- 2006.
+ the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006.
-OpenBSD 7.0 September 26, 2012 OpenBSD 7.0
+OpenBSD 7.1 April 16, 2022 OpenBSD 7.1
diff --git a/moduli.5 b/moduli.5
index ef0de08506b1..5086a6d42aff 100644
--- a/moduli.5
+++ b/moduli.5
@@ -1,4 +1,4 @@
-.\" $OpenBSD: moduli.5,v 1.17 2012/09/26 17:34:38 jmc Exp $
+.\" $OpenBSD: moduli.5,v 1.19 2022/04/16 04:30:10 dtucker Exp $
.\"
.\" Copyright (c) 2008 Damien Miller <djm@mindrot.org>
.\"
@@ -13,7 +13,7 @@
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.Dd $Mdocdate: September 26 2012 $
+.Dd $Mdocdate: April 16 2022 $
.Dt MODULI 5
.Os
.Sh NAME
@@ -32,12 +32,12 @@ using a two-step process.
An initial
.Em candidate generation
pass, using
-.Ic ssh-keygen -G ,
+.Ic ssh-keygen -M generate ,
calculates numbers that are likely to be useful.
A second
.Em primality testing
pass, using
-.Ic ssh-keygen -T ,
+.Ic ssh-keygen -M screen ,
provides a high degree of assurance that the numbers are prime and are
safe for use in Diffie-Hellman operations by
.Xr sshd 8 .
@@ -123,5 +123,4 @@ that best meets the size requirement.
.%D March 2006
.%R RFC 4419
.%T Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
-.%D 2006
.Re
diff --git a/moduli.c b/moduli.c
index 8dd36b1cf231..9f660ef267ee 100644
--- a/moduli.c
+++ b/moduli.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: moduli.c,v 1.37 2019/11/15 06:00:20 djm Exp $ */
+/* $OpenBSD: moduli.c,v 1.38 2022/05/01 23:20:30 djm Exp $ */
/*
* Copyright 1994 Phil Karn <karn@qualcomm.com>
* Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com>
@@ -184,20 +184,20 @@ qfileout(FILE * ofile, u_int32_t otype, u_int32_t otests, u_int32_t otries,
** Sieve p's and q's with small factors
*/
static void
-sieve_large(u_int32_t s)
+sieve_large(u_int32_t s32)
{
- u_int32_t r, u;
+ u_int64_t r, u, s = s32;
- debug3("sieve_large %u", s);
+ debug3("sieve_large %u", s32);
largetries++;
/* r = largebase mod s */
- r = BN_mod_word(largebase, s);
+ r = BN_mod_word(largebase, s32);
if (r == 0)
u = 0; /* s divides into largebase exactly */
else
u = s - r; /* largebase+u is first entry divisible by s */
- if (u < largebits * 2) {
+ if (u < largebits * 2ULL) {
/*
* The sieve omits p's and q's divisible by 2, so ensure that
* largebase+u is odd. Then, step through the sieve in
@@ -218,7 +218,7 @@ sieve_large(u_int32_t s)
else
u = s - r; /* p+u is first entry divisible by s */
- if (u < largebits * 4) {
+ if (u < largebits * 4ULL) {
/*
* The sieve omits p's divisible by 4, so ensure that
* largebase+u is not. Then, step through the sieve in
diff --git a/monitor.c b/monitor.c
index 20b9f67b9349..91e0e62454b7 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor.c,v 1.232 2022/02/25 02:09:27 djm Exp $ */
+/* $OpenBSD: monitor.c,v 1.234 2022/06/15 16:08:25 djm Exp $ */
/*
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
* Copyright 2002 Markus Friedl <markus@openbsd.org>
diff --git a/monitor_wrap.c b/monitor_wrap.c
index 748333c75e59..b2c85205eb96 100644
--- a/monitor_wrap.c
+++ b/monitor_wrap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor_wrap.c,v 1.123 2021/04/15 16:24:31 markus Exp $ */
+/* $OpenBSD: monitor_wrap.c,v 1.125 2022/06/15 16:08:25 djm Exp $ */
/*
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
* Copyright 2002 Markus Friedl <markus@openbsd.org>
diff --git a/monitor_wrap.h b/monitor_wrap.h
index a163b67d2878..0df49c25be11 100644
--- a/monitor_wrap.h
+++ b/monitor_wrap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor_wrap.h,v 1.47 2021/04/15 16:24:31 markus Exp $ */
+/* $OpenBSD: monitor_wrap.h,v 1.49 2022/06/15 16:08:25 djm Exp $ */
/*
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -54,7 +54,7 @@ char *mm_auth2_read_banner(void);
int mm_auth_password(struct ssh *, char *);
int mm_key_allowed(enum mm_keytype, const char *, const char *, struct sshkey *,
int, struct sshauthopt **);
-int mm_user_key_allowed(struct ssh *, struct passwd *, struct sshkey *, int,
+int mm_user_key_allowed(struct ssh *ssh, struct passwd *, struct sshkey *, int,
struct sshauthopt **);
int mm_hostbased_key_allowed(struct ssh *, struct passwd *, const char *,
const char *, struct sshkey *);
diff --git a/mux.c b/mux.c
index 176f035c86f5..3cb3876148aa 100644
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mux.c,v 1.92 2022/01/11 01:26:47 djm Exp $ */
+/* $OpenBSD: mux.c,v 1.94 2022/06/03 04:30:47 djm Exp $ */
/*
* Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
*
@@ -240,9 +240,10 @@ mux_master_control_cleanup_cb(struct ssh *ssh, int cid, void *unused)
/* Check mux client environment variables before passing them to mux master. */
static int
-env_permitted(char *env)
+env_permitted(const char *env)
{
- int i, ret;
+ u_int i;
+ int ret;
char name[1024], *cp;
if ((cp = strchr(env, '=')) == NULL || cp == env)
@@ -1865,9 +1866,9 @@ mux_client_request_session(int fd)
struct sshbuf *m;
char *e;
const char *term = NULL;
- u_int echar, rid, sid, esid, exitval, type, exitval_seen;
+ u_int i, echar, rid, sid, esid, exitval, type, exitval_seen;
extern char **environ;
- int r, i, rawmode;
+ int r, rawmode;
debug3_f("entering");
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in
index 5d53bef5757f..1d549954f9d6 100644
--- a/openbsd-compat/Makefile.in
+++ b/openbsd-compat/Makefile.in
@@ -17,10 +17,11 @@ INSTALL=@INSTALL@
LDFLAGS=-L. @LDFLAGS@
LDFLAGS_NOPIE=-L. -Lopenbsd-compat/ @LDFLAGS_NOPIE@
-OPENBSD=base64.o \
+OPENBSD=arc4random.o \
+ arc4random_uniform.o \
+ base64.o \
basename.o \
bcrypt_pbkdf.o \
- bcrypt_pbkdf.o \
bindresvport.o \
blowfish.o \
daemon.o \
@@ -65,12 +66,12 @@ OPENBSD=base64.o \
timingsafe_bcmp.o \
vis.o
-COMPAT= arc4random.o \
- bsd-asprintf.o \
+COMPAT= bsd-asprintf.o \
bsd-closefrom.o \
bsd-cygwin_util.o \
bsd-err.o \
bsd-flock.o \
+ bsd-getentropy.o \
bsd-getline.o \
bsd-getpagesize.o \
bsd-getpeereid.o \
@@ -84,6 +85,7 @@ COMPAT= arc4random.o \
bsd-signal.o \
bsd-snprintf.o \
bsd-statvfs.o \
+ bsd-timegm.o \
bsd-waitpid.o \
fake-rfc2553.o \
getrrsetbyname-ldns.o \
diff --git a/openbsd-compat/arc4random.c b/openbsd-compat/arc4random.c
index ce5f054f1e23..02f15f9c3bfa 100644
--- a/openbsd-compat/arc4random.c
+++ b/openbsd-compat/arc4random.c
@@ -1,11 +1,10 @@
-/* OPENBSD ORIGINAL: lib/libc/crypto/arc4random.c */
-
-/* $OpenBSD: arc4random.c,v 1.25 2013/10/01 18:34:57 markus Exp $ */
+/* $OpenBSD: arc4random.c,v 1.58 2022/07/31 13:41:45 tb Exp $ */
/*
* Copyright (c) 1996, David Mazieres <dm@uun.org>
* Copyright (c) 2008, Damien Miller <djm@openbsd.org>
* Copyright (c) 2013, Markus Friedl <markus@openbsd.org>
+ * Copyright (c) 2014, Theo de Raadt <deraadt@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -24,26 +23,33 @@
* ChaCha based random number generator for OpenBSD.
*/
+/* OPENBSD ORIGINAL: lib/libc/crypt/arc4random.c */
+
#include "includes.h"
#include <sys/types.h>
#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-
-#ifdef HAVE_SYS_RANDOM_H
-# include <sys/random.h>
-#endif
+#include <sys/types.h>
+#include <sys/time.h>
#ifndef HAVE_ARC4RANDOM
-#define MINIMUM(a, b) (((a) < (b)) ? (a) : (b))
-
-#ifdef WITH_OPENSSL
-#include <openssl/rand.h>
-#include <openssl/err.h>
+/*
+ * If we're not using a native getentropy, use the one from bsd-getentropy.c
+ * under a different name, so that if in future these binaries are run on
+ * a system that has a native getentropy OpenSSL cannot call the wrong one.
+ */
+#ifndef HAVE_GETENTROPY
+# define getentropy(x, y) (_ssh_compat_getentropy((x), (y)))
#endif
#include "log.h"
@@ -51,26 +57,36 @@
#define KEYSTREAM_ONLY
#include "chacha_private.h"
-#ifdef __GNUC__
+#define minimum(a, b) ((a) < (b) ? (a) : (b))
+
+#if defined(__GNUC__) || defined(_MSC_VER)
#define inline __inline
-#else /* !__GNUC__ */
+#else /* __GNUC__ || _MSC_VER */
#define inline
-#endif /* !__GNUC__ */
-
-/* OpenSSH isn't multithreaded */
-#define _ARC4_LOCK()
-#define _ARC4_UNLOCK()
+#endif /* !__GNUC__ && !_MSC_VER */
#define KEYSZ 32
#define IVSZ 8
#define BLOCKSZ 64
#define RSBUFSZ (16*BLOCKSZ)
-static int rs_initialized;
-static pid_t rs_stir_pid;
-static chacha_ctx rs; /* chacha context for random keystream */
-static u_char rs_buf[RSBUFSZ]; /* keystream blocks */
-static size_t rs_have; /* valid bytes at end of rs_buf */
-static size_t rs_count; /* bytes till reseed */
+
+#define REKEY_BASE (1024*1024) /* NB. should be a power of 2 */
+
+/* Marked MAP_INHERIT_ZERO, so zero'd out in fork children. */
+static struct _rs {
+ size_t rs_have; /* valid bytes at end of rs_buf */
+ size_t rs_count; /* bytes till reseed */
+} *rs;
+
+/* Maybe be preserved in fork children, if _rs_allocate() decides. */
+static struct _rsx {
+ chacha_ctx rs_chacha; /* chacha context for random keystream */
+ u_char rs_buf[RSBUFSZ]; /* keystream blocks */
+} *rsx;
+
+static inline int _rs_allocate(struct _rs **, struct _rsx **);
+static inline void _rs_forkdetect(void);
+#include "arc4random.h"
static inline void _rs_rekey(u_char *dat, size_t datlen);
@@ -79,180 +95,128 @@ _rs_init(u_char *buf, size_t n)
{
if (n < KEYSZ + IVSZ)
return;
- chacha_keysetup(&rs, buf, KEYSZ * 8);
- chacha_ivsetup(&rs, buf + KEYSZ);
-}
-#ifndef WITH_OPENSSL
-# ifndef SSH_RANDOM_DEV
-# define SSH_RANDOM_DEV "/dev/urandom"
-# endif /* SSH_RANDOM_DEV */
-static void
-getrnd(u_char *s, size_t len)
-{
- int fd, save_errno;
- ssize_t r;
- size_t o = 0;
-
-#ifdef HAVE_GETRANDOM
- if ((r = getrandom(s, len, 0)) > 0 && (size_t)r == len)
- return;
-#endif /* HAVE_GETRANDOM */
-
- if ((fd = open(SSH_RANDOM_DEV, O_RDONLY)) == -1) {
- save_errno = errno;
- /* Try egd/prngd before giving up. */
- if (seed_from_prngd(s, len) == 0)
- return;
- fatal("Couldn't open %s: %s", SSH_RANDOM_DEV,
- strerror(save_errno));
+ if (rs == NULL) {
+ if (_rs_allocate(&rs, &rsx) == -1)
+ _exit(1);
}
- while (o < len) {
- r = read(fd, s + o, len - o);
- if (r < 0) {
- if (errno == EAGAIN || errno == EINTR ||
- errno == EWOULDBLOCK)
- continue;
- fatal("read %s: %s", SSH_RANDOM_DEV, strerror(errno));
- }
- o += r;
- }
- close(fd);
+
+ chacha_keysetup(&rsx->rs_chacha, buf, KEYSZ * 8);
+ chacha_ivsetup(&rsx->rs_chacha, buf + KEYSZ);
}
-#endif /* WITH_OPENSSL */
static void
_rs_stir(void)
{
u_char rnd[KEYSZ + IVSZ];
+ uint32_t rekey_fuzz = 0;
-#ifdef WITH_OPENSSL
- if (RAND_bytes(rnd, sizeof(rnd)) <= 0)
- fatal("Couldn't obtain random bytes (error 0x%lx)",
- (unsigned long)ERR_get_error());
-#else
- getrnd(rnd, sizeof(rnd));
-#endif
+ if (getentropy(rnd, sizeof rnd) == -1)
+ _getentropy_fail();
- if (!rs_initialized) {
- rs_initialized = 1;
+ if (!rs)
_rs_init(rnd, sizeof(rnd));
- } else
+ else
_rs_rekey(rnd, sizeof(rnd));
- explicit_bzero(rnd, sizeof(rnd));
+ explicit_bzero(rnd, sizeof(rnd)); /* discard source seed */
/* invalidate rs_buf */
- rs_have = 0;
- memset(rs_buf, 0, RSBUFSZ);
+ rs->rs_have = 0;
+ memset(rsx->rs_buf, 0, sizeof(rsx->rs_buf));
- rs_count = 1600000;
+ /* rekey interval should not be predictable */
+ chacha_encrypt_bytes(&rsx->rs_chacha, (uint8_t *)&rekey_fuzz,
+ (uint8_t *)&rekey_fuzz, sizeof(rekey_fuzz));
+ rs->rs_count = REKEY_BASE + (rekey_fuzz % REKEY_BASE);
}
static inline void
_rs_stir_if_needed(size_t len)
{
- pid_t pid = getpid();
-
- if (rs_count <= len || !rs_initialized || rs_stir_pid != pid) {
- rs_stir_pid = pid;
+ _rs_forkdetect();
+ if (!rs || rs->rs_count <= len)
_rs_stir();
- } else
- rs_count -= len;
+ if (rs->rs_count <= len)
+ rs->rs_count = 0;
+ else
+ rs->rs_count -= len;
}
static inline void
_rs_rekey(u_char *dat, size_t datlen)
{
#ifndef KEYSTREAM_ONLY
- memset(rs_buf, 0,RSBUFSZ);
+ memset(rsx->rs_buf, 0, sizeof(rsx->rs_buf));
#endif
/* fill rs_buf with the keystream */
- chacha_encrypt_bytes(&rs, rs_buf, rs_buf, RSBUFSZ);
+ chacha_encrypt_bytes(&rsx->rs_chacha, rsx->rs_buf,
+ rsx->rs_buf, sizeof(rsx->rs_buf));
/* mix in optional user provided data */
if (dat) {
size_t i, m;
- m = MINIMUM(datlen, KEYSZ + IVSZ);
+ m = minimum(datlen, KEYSZ + IVSZ);
for (i = 0; i < m; i++)
- rs_buf[i] ^= dat[i];
+ rsx->rs_buf[i] ^= dat[i];
}
/* immediately reinit for backtracking resistance */
- _rs_init(rs_buf, KEYSZ + IVSZ);
- memset(rs_buf, 0, KEYSZ + IVSZ);
- rs_have = RSBUFSZ - KEYSZ - IVSZ;
+ _rs_init(rsx->rs_buf, KEYSZ + IVSZ);
+ memset(rsx->rs_buf, 0, KEYSZ + IVSZ);
+ rs->rs_have = sizeof(rsx->rs_buf) - KEYSZ - IVSZ;
}
static inline void
_rs_random_buf(void *_buf, size_t n)
{
u_char *buf = (u_char *)_buf;
+ u_char *keystream;
size_t m;
_rs_stir_if_needed(n);
while (n > 0) {
- if (rs_have > 0) {
- m = MINIMUM(n, rs_have);
- memcpy(buf, rs_buf + RSBUFSZ - rs_have, m);
- memset(rs_buf + RSBUFSZ - rs_have, 0, m);
+ if (rs->rs_have > 0) {
+ m = minimum(n, rs->rs_have);
+ keystream = rsx->rs_buf + sizeof(rsx->rs_buf)
+ - rs->rs_have;
+ memcpy(buf, keystream, m);
+ memset(keystream, 0, m);
buf += m;
n -= m;
- rs_have -= m;
+ rs->rs_have -= m;
}
- if (rs_have == 0)
+ if (rs->rs_have == 0)
_rs_rekey(NULL, 0);
}
}
static inline void
-_rs_random_u32(u_int32_t *val)
+_rs_random_u32(uint32_t *val)
{
+ u_char *keystream;
+
_rs_stir_if_needed(sizeof(*val));
- if (rs_have < sizeof(*val))
+ if (rs->rs_have < sizeof(*val))
_rs_rekey(NULL, 0);
- memcpy(val, rs_buf + RSBUFSZ - rs_have, sizeof(*val));
- memset(rs_buf + RSBUFSZ - rs_have, 0, sizeof(*val));
- rs_have -= sizeof(*val);
- return;
+ keystream = rsx->rs_buf + sizeof(rsx->rs_buf) - rs->rs_have;
+ memcpy(val, keystream, sizeof(*val));
+ memset(keystream, 0, sizeof(*val));
+ rs->rs_have -= sizeof(*val);
}
-void
-arc4random_stir(void)
-{
- _ARC4_LOCK();
- _rs_stir();
- _ARC4_UNLOCK();
-}
-
-void
-arc4random_addrandom(u_char *dat, int datlen)
-{
- int m;
-
- _ARC4_LOCK();
- if (!rs_initialized)
- _rs_stir();
- while (datlen > 0) {
- m = MINIMUM(datlen, KEYSZ + IVSZ);
- _rs_rekey(dat, m);
- dat += m;
- datlen -= m;
- }
- _ARC4_UNLOCK();
-}
-
-u_int32_t
+uint32_t
arc4random(void)
{
- u_int32_t val;
+ uint32_t val;
_ARC4_LOCK();
_rs_random_u32(&val);
_ARC4_UNLOCK();
return val;
}
+DEF_WEAK(arc4random);
/*
- * If we are providing arc4random, then we can provide a more efficient
+ * If we are providing arc4random, then we can provide a more efficient
* arc4random_buf().
*/
# ifndef HAVE_ARC4RANDOM_BUF
@@ -263,6 +227,7 @@ arc4random_buf(void *buf, size_t n)
_rs_random_buf(buf, n);
_ARC4_UNLOCK();
}
+DEF_WEAK(arc4random_buf);
# endif /* !HAVE_ARC4RANDOM_BUF */
#endif /* !HAVE_ARC4RANDOM */
@@ -285,62 +250,3 @@ arc4random_buf(void *_buf, size_t n)
}
#endif /* !defined(HAVE_ARC4RANDOM_BUF) && defined(HAVE_ARC4RANDOM) */
-#ifndef HAVE_ARC4RANDOM_UNIFORM
-/*
- * Calculate a uniformly distributed random number less than upper_bound
- * avoiding "modulo bias".
- *
- * Uniformity is achieved by generating new random numbers until the one
- * returned is outside the range [0, 2**32 % upper_bound). This
- * guarantees the selected random number will be inside
- * [2**32 % upper_bound, 2**32) which maps back to [0, upper_bound)
- * after reduction modulo upper_bound.
- */
-u_int32_t
-arc4random_uniform(u_int32_t upper_bound)
-{
- u_int32_t r, min;
-
- if (upper_bound < 2)
- return 0;
-
- /* 2**32 % x == (2**32 - x) % x */
- min = -upper_bound % upper_bound;
-
- /*
- * This could theoretically loop forever but each retry has
- * p > 0.5 (worst case, usually far better) of selecting a
- * number inside the range we need, so it should rarely need
- * to re-roll.
- */
- for (;;) {
- r = arc4random();
- if (r >= min)
- break;
- }
-
- return r % upper_bound;
-}
-#endif /* !HAVE_ARC4RANDOM_UNIFORM */
-
-#if 0
-/*-------- Test code for i386 --------*/
-#include <stdio.h>
-#include <machine/pctr.h>
-int
-main(int argc, char **argv)
-{
- const int iter = 1000000;
- int i;
- pctrval v;
-
- v = rdtsc();
- for (i = 0; i < iter; i++)
- arc4random();
- v = rdtsc() - v;
- v /= iter;
-
- printf("%qd cycles\n", v);
- exit(0);
-}
-#endif
diff --git a/openbsd-compat/arc4random.h b/openbsd-compat/arc4random.h
new file mode 100644
index 000000000000..2b57611f060c
--- /dev/null
+++ b/openbsd-compat/arc4random.h
@@ -0,0 +1,79 @@
+/* $OpenBSD: arc4random_linux.h,v 1.12 2019/07/11 10:37:28 inoguchi Exp $ */
+
+/*
+ * Copyright (c) 1996, David Mazieres <dm@uun.org>
+ * Copyright (c) 2008, Damien Miller <djm@openbsd.org>
+ * Copyright (c) 2013, Markus Friedl <markus@openbsd.org>
+ * Copyright (c) 2014, Theo de Raadt <deraadt@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * Stub functions for portability. From LibreSSL with some adaptations.
+ */
+
+#include <sys/mman.h>
+
+#include <signal.h>
+
+/* OpenSSH isn't multithreaded */
+#define _ARC4_LOCK()
+#define _ARC4_UNLOCK()
+#define _ARC4_ATFORK(f)
+
+static inline void
+_getentropy_fail(void)
+{
+ fatal("getentropy failed");
+}
+
+static volatile sig_atomic_t _rs_forked;
+
+static inline void
+_rs_forkhandler(void)
+{
+ _rs_forked = 1;
+}
+
+static inline void
+_rs_forkdetect(void)
+{
+ static pid_t _rs_pid = 0;
+ pid_t pid = getpid();
+
+ if (_rs_pid == 0 || _rs_pid == 1 || _rs_pid != pid || _rs_forked) {
+ _rs_pid = pid;
+ _rs_forked = 0;
+ if (rs)
+ memset(rs, 0, sizeof(*rs));
+ }
+}
+
+static inline int
+_rs_allocate(struct _rs **rsp, struct _rsx **rsxp)
+{
+ if ((*rsp = mmap(NULL, sizeof(**rsp), PROT_READ|PROT_WRITE,
+ MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED)
+ return (-1);
+
+ if ((*rsxp = mmap(NULL, sizeof(**rsxp), PROT_READ|PROT_WRITE,
+ MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) {
+ munmap(*rsp, sizeof(**rsp));
+ *rsp = NULL;
+ return (-1);
+ }
+
+ _ARC4_ATFORK(_rs_forkhandler);
+ return (0);
+}
diff --git a/openbsd-compat/arc4random_uniform.c b/openbsd-compat/arc4random_uniform.c
new file mode 100644
index 000000000000..591f92d150fa
--- /dev/null
+++ b/openbsd-compat/arc4random_uniform.c
@@ -0,0 +1,64 @@
+/* $OpenBSD: arc4random_uniform.c,v 1.3 2019/01/20 02:59:07 bcook Exp $ */
+
+/*
+ * Copyright (c) 2008, Damien Miller <djm@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* OPENBSD ORIGINAL: lib/libc/crypto/arc4random_uniform.c */
+
+#include "includes.h"
+
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#include <stdlib.h>
+
+#ifndef HAVE_ARC4RANDOM_UNIFORM
+/*
+ * Calculate a uniformly distributed random number less than upper_bound
+ * avoiding "modulo bias".
+ *
+ * Uniformity is achieved by generating new random numbers until the one
+ * returned is outside the range [0, 2**32 % upper_bound). This
+ * guarantees the selected random number will be inside
+ * [2**32 % upper_bound, 2**32) which maps back to [0, upper_bound)
+ * after reduction modulo upper_bound.
+ */
+uint32_t
+arc4random_uniform(uint32_t upper_bound)
+{
+ uint32_t r, min;
+
+ if (upper_bound < 2)
+ return 0;
+
+ /* 2**32 % x == (2**32 - x) % x */
+ min = -upper_bound % upper_bound;
+
+ /*
+ * This could theoretically loop forever but each retry has
+ * p > 0.5 (worst case, usually far better) of selecting a
+ * number inside the range we need, so it should rarely need
+ * to re-roll.
+ */
+ for (;;) {
+ r = arc4random();
+ if (r >= min)
+ break;
+ }
+
+ return r % upper_bound;
+}
+#endif /* !HAVE_ARC4RANDOM_UNIFORM */
diff --git a/openbsd-compat/bsd-asprintf.c b/openbsd-compat/bsd-asprintf.c
index 1092772717fd..511c817bb988 100644
--- a/openbsd-compat/bsd-asprintf.c
+++ b/openbsd-compat/bsd-asprintf.c
@@ -32,6 +32,7 @@
#include <errno.h>
#include <stdarg.h>
+#include <stdio.h>
#include <stdlib.h>
#define INIT_SZ 128
diff --git a/openbsd-compat/bsd-getentropy.c b/openbsd-compat/bsd-getentropy.c
new file mode 100644
index 000000000000..bd4b6695acc6
--- /dev/null
+++ b/openbsd-compat/bsd-getentropy.c
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 1996, David Mazieres <dm@uun.org>
+ * Copyright (c) 2008, Damien Miller <djm@openbsd.org>
+ * Copyright (c) 2013, Markus Friedl <markus@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "includes.h"
+
+#ifndef HAVE_GETENTROPY
+
+#ifndef SSH_RANDOM_DEV
+# define SSH_RANDOM_DEV "/dev/urandom"
+#endif /* SSH_RANDOM_DEV */
+
+#include <sys/types.h>
+#ifdef HAVE_SYS_RANDOM_H
+# include <sys/random.h>
+#endif
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#ifdef WITH_OPENSSL
+#include <openssl/rand.h>
+#include <openssl/err.h>
+#endif
+
+#include "log.h"
+
+int
+_ssh_compat_getentropy(void *s, size_t len)
+{
+#ifdef WITH_OPENSSL
+ if (RAND_bytes(s, len) <= 0)
+ fatal("Couldn't obtain random bytes (error 0x%lx)",
+ (unsigned long)ERR_get_error());
+#else
+ int fd, save_errno;
+ ssize_t r;
+ size_t o = 0;
+
+#ifdef HAVE_GETRANDOM
+ if ((r = getrandom(s, len, 0)) > 0 && (size_t)r == len)
+ return 0;
+#endif /* HAVE_GETRANDOM */
+
+ if ((fd = open(SSH_RANDOM_DEV, O_RDONLY)) == -1) {
+ save_errno = errno;
+ /* Try egd/prngd before giving up. */
+ if (seed_from_prngd(s, len) == 0)
+ return 0;
+ fatal("Couldn't open %s: %s", SSH_RANDOM_DEV,
+ strerror(save_errno));
+ }
+ while (o < len) {
+ r = read(fd, (u_char *)s + o, len - o);
+ if (r < 0) {
+ if (errno == EAGAIN || errno == EINTR ||
+ errno == EWOULDBLOCK)
+ continue;
+ fatal("read %s: %s", SSH_RANDOM_DEV, strerror(errno));
+ }
+ o += r;
+ }
+ close(fd);
+#endif /* WITH_OPENSSL */
+ return 0;
+}
+#endif /* WITH_GETENTROPY */
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c
index 3b00ef6d240e..226a5915bd1d 100644
--- a/openbsd-compat/bsd-misc.c
+++ b/openbsd-compat/bsd-misc.c
@@ -446,3 +446,15 @@ localtime_r(const time_t *timep, struct tm *result)
return result;
}
#endif
+
+#ifdef ASAN_OPTIONS
+const char *__asan_default_options(void) {
+ return ASAN_OPTIONS;
+}
+#endif
+
+#ifdef MSAN_OPTIONS
+const char *__msan_default_options(void) {
+ return MSAN_OPTIONS;
+}
+#endif
diff --git a/openbsd-compat/bsd-timegm.c b/openbsd-compat/bsd-timegm.c
new file mode 100644
index 000000000000..14f6bbf14dad
--- /dev/null
+++ b/openbsd-compat/bsd-timegm.c
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * (Royal Institute of Technology, Stockholm, Sweden).
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ adapted for Samba4 by Andrew Tridgell
+*/
+
+#include "includes.h"
+
+#include <time.h>
+
+#ifndef HAVE_TIMEGM
+
+static int is_leap(unsigned y)
+{
+ y += 1900;
+ return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0);
+}
+
+time_t timegm(struct tm *tm)
+{
+ static const unsigned ndays[2][12] ={
+ {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
+ {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
+ time_t res = 0;
+ unsigned i;
+
+ if (tm->tm_mon > 12 ||
+ tm->tm_mon < 0 ||
+ tm->tm_mday > 31 ||
+ tm->tm_min > 60 ||
+ tm->tm_sec > 60 ||
+ tm->tm_hour > 24) {
+ /* invalid tm structure */
+ return 0;
+ }
+
+ for (i = 70; i < tm->tm_year; ++i)
+ res += is_leap(i) ? 366 : 365;
+
+ for (i = 0; i < tm->tm_mon; ++i)
+ res += ndays[is_leap(tm->tm_year)][i];
+ res += tm->tm_mday - 1;
+ res *= 24;
+ res += tm->tm_hour;
+ res *= 60;
+ res += tm->tm_min;
+ res *= 60;
+ res += tm->tm_sec;
+ return res;
+}
+#endif /* HAVE_TIMEGM */
diff --git a/openbsd-compat/getcwd.c b/openbsd-compat/getcwd.c
index 2d56bae19dd6..a904291a29d6 100644
--- a/openbsd-compat/getcwd.c
+++ b/openbsd-compat/getcwd.c
@@ -70,9 +70,12 @@ getcwd(char *pt, size_t size)
*/
if (pt) {
ptsize = 0;
- if (!size) {
+ if (size == 0) {
errno = EINVAL;
return (NULL);
+ } else if (size == 1) {
+ errno = ERANGE;
+ return (NULL);
}
ept = pt + size;
} else {
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 4316ab84bf89..4af207cdd40f 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -69,6 +69,10 @@ void closefrom(int);
int ftruncate(int filedes, off_t length);
#endif
+#if defined(HAVE_DECL_GETENTROPY) && HAVE_DECL_GETENTROPY == 0
+int _ssh_compat_getentropy(void *, size_t);
+#endif
+
#ifndef HAVE_GETLINE
#include <stdio.h>
ssize_t getline(char **, size_t *, FILE *);
@@ -214,21 +218,20 @@ int writev(int, struct iovec *, int);
int getpeereid(int , uid_t *, gid_t *);
#endif
-#ifdef HAVE_ARC4RANDOM
-# ifndef HAVE_ARC4RANDOM_STIR
-# define arc4random_stir()
-# endif
-#else
-unsigned int arc4random(void);
-void arc4random_stir(void);
+#ifndef HAVE_ARC4RANDOM
+uint32_t arc4random(void);
#endif /* !HAVE_ARC4RANDOM */
#ifndef HAVE_ARC4RANDOM_BUF
void arc4random_buf(void *, size_t);
#endif
+#ifndef HAVE_ARC4RANDOM_STIR
+# define arc4random_stir()
+#endif
+
#ifndef HAVE_ARC4RANDOM_UNIFORM
-u_int32_t arc4random_uniform(u_int32_t);
+uint32_t arc4random_uniform(uint32_t);
#endif
#ifndef HAVE_ASPRINTF
@@ -339,6 +342,10 @@ void freezero(void *, size_t);
struct tm *localtime_r(const time_t *, struct tm *);
#endif
+#ifndef HAVE_TIMEGM
+time_t timegm(struct tm *);
+#endif
+
char *xcrypt(const char *password, const char *salt);
char *shadow_pw(struct passwd *pw);
diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h
index 8ca50b5ace63..61a69dd56eb2 100644
--- a/openbsd-compat/openssl-compat.h
+++ b/openbsd-compat/openssl-compat.h
@@ -68,31 +68,6 @@ void ssh_libcrypto_init(void);
# endif
#endif
-#ifndef OPENSSL_HAVE_EVPCTR
-# define EVP_aes_128_ctr evp_aes_128_ctr
-# define EVP_aes_192_ctr evp_aes_128_ctr
-# define EVP_aes_256_ctr evp_aes_128_ctr
-const EVP_CIPHER *evp_aes_128_ctr(void);
-void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t);
-#endif
-
-/* Avoid some #ifdef. Code that uses these is unreachable without GCM */
-#if !defined(OPENSSL_HAVE_EVPGCM) && !defined(EVP_CTRL_GCM_SET_IV_FIXED)
-# define EVP_CTRL_GCM_SET_IV_FIXED -1
-# define EVP_CTRL_GCM_IV_GEN -1
-# define EVP_CTRL_GCM_SET_TAG -1
-# define EVP_CTRL_GCM_GET_TAG -1
-#endif
-
-/* Replace missing EVP_CIPHER_CTX_ctrl() with something that returns failure */
-#ifndef HAVE_EVP_CIPHER_CTX_CTRL
-# ifdef OPENSSL_HAVE_EVPGCM
-# error AES-GCM enabled without EVP_CIPHER_CTX_ctrl /* shouldn't happen */
-# else
-# define EVP_CIPHER_CTX_ctrl(a,b,c,d) (0)
-# endif
-#endif
-
/* LibreSSL/OpenSSL 1.1x API compat */
#ifndef HAVE_DSA_GET0_PQG
void DSA_get0_pqg(const DSA *d, const BIGNUM **p, const BIGNUM **q,
diff --git a/packet.c b/packet.c
index bde6c1045e8a..3f64d2d32854 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: packet.c,v 1.307 2022/01/22 00:49:34 djm Exp $ */
+/* $OpenBSD: packet.c,v 1.308 2022/08/31 02:56:40 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -986,7 +986,7 @@ ssh_packet_need_rekeying(struct ssh *ssh, u_int outbound_packet_len)
return 1;
/*
- * Always rekey when MAX_PACKETS sent in either direction
+ * Always rekey when MAX_PACKETS sent in either direction
* As per RFC4344 section 3.1 we do this after 2^31 packets.
*/
if (state->p_send.packets > MAX_PACKETS ||
diff --git a/readconf.c b/readconf.c
index f26fabaa6af4..42be690b13d5 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.c,v 1.366 2022/02/08 08:59:12 dtucker Exp $ */
+/* $OpenBSD: readconf.c,v 1.369 2022/09/17 10:33:18 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -174,7 +174,7 @@ typedef enum {
oStreamLocalBindMask, oStreamLocalBindUnlink, oRevokedHostKeys,
oFingerprintHash, oUpdateHostkeys, oHostbasedAcceptedAlgorithms,
oPubkeyAcceptedAlgorithms, oCASignatureAlgorithms, oProxyJump,
- oSecurityKeyProvider, oKnownHostsCommand,
+ oSecurityKeyProvider, oKnownHostsCommand, oRequiredRSASize,
oIgnore, oIgnoredUnknownOption, oDeprecated, oUnsupported
} OpCodes;
@@ -320,6 +320,7 @@ static struct {
{ "proxyjump", oProxyJump },
{ "securitykeyprovider", oSecurityKeyProvider },
{ "knownhostscommand", oKnownHostsCommand },
+ { "requiredrsasize", oRequiredRSASize },
{ NULL, oBadOption }
};
@@ -753,20 +754,16 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
static void
rm_env(Options *options, const char *arg, const char *filename, int linenum)
{
- int i, j, onum_send_env = options->num_send_env;
- char *cp;
+ u_int i, j, onum_send_env = options->num_send_env;
/* Remove an environment variable */
for (i = 0; i < options->num_send_env; ) {
- cp = xstrdup(options->send_env[i]);
- if (!match_pattern(cp, arg + 1)) {
- free(cp);
+ if (!match_pattern(options->send_env[i], arg + 1)) {
i++;
continue;
}
debug3("%s line %d: removing environment %s",
- filename, linenum, cp);
- free(cp);
+ filename, linenum, options->send_env[i]);
free(options->send_env[i]);
options->send_env[i] = NULL;
for (j = i; j < options->num_send_env - 1; j++) {
@@ -1737,20 +1734,10 @@ parse_pubkey_algos:
/* Removing an env var */
rm_env(options, arg, filename, linenum);
continue;
- } else {
- /* Adding an env var */
- if (options->num_send_env >= INT_MAX) {
- error("%s line %d: too many send env.",
- filename, linenum);
- goto out;
- }
- options->send_env = xrecallocarray(
- options->send_env, options->num_send_env,
- options->num_send_env + 1,
- sizeof(*options->send_env));
- options->send_env[options->num_send_env++] =
- xstrdup(arg);
}
+ opt_array_append(filename, linenum,
+ lookup_opcode_name(opcode),
+ &options->send_env, &options->num_send_env, arg);
}
break;
@@ -1764,16 +1751,15 @@ parse_pubkey_algos:
}
if (!*activep || value != 0)
continue;
- /* Adding a setenv var */
- if (options->num_setenv >= INT_MAX) {
- error("%s line %d: too many SetEnv.",
- filename, linenum);
- goto out;
+ if (lookup_setenv_in_list(arg, options->setenv,
+ options->num_setenv) != NULL) {
+ debug2("%s line %d: ignoring duplicate env "
+ "name \"%.64s\"", filename, linenum, arg);
+ continue;
}
- options->setenv = xrecallocarray(
- options->setenv, options->num_setenv,
- options->num_setenv + 1, sizeof(*options->setenv));
- options->setenv[options->num_setenv++] = xstrdup(arg);
+ opt_array_append(filename, linenum,
+ lookup_opcode_name(opcode),
+ &options->setenv, &options->num_setenv, arg);
}
break;
@@ -2191,6 +2177,10 @@ parse_pubkey_algos:
*charptr = xstrdup(arg);
break;
+ case oRequiredRSASize:
+ intptr = &options->required_rsa_size;
+ goto parse_int;
+
case oDeprecated:
debug("%s line %d: Deprecated option \"%s\"",
filename, linenum, keyword);
@@ -2438,6 +2428,7 @@ initialize_options(Options * options)
options->hostbased_accepted_algos = NULL;
options->pubkey_accepted_algos = NULL;
options->known_hosts_command = NULL;
+ options->required_rsa_size = -1;
}
/*
@@ -2634,6 +2625,8 @@ fill_default_options(Options * options)
if (options->sk_provider == NULL)
options->sk_provider = xstrdup("$SSH_SK_PROVIDER");
#endif
+ if (options->required_rsa_size == -1)
+ options->required_rsa_size = SSH_RSA_MINIMUM_MODULUS_SIZE;
/* Expand KEX name lists */
all_cipher = cipher_alg_list(',', 0);
@@ -2774,9 +2767,9 @@ free_options(Options *o)
}
free(o->remote_forwards);
free(o->stdio_forward_host);
- FREE_ARRAY(int, o->num_send_env, o->send_env);
+ FREE_ARRAY(u_int, o->num_send_env, o->send_env);
free(o->send_env);
- FREE_ARRAY(int, o->num_setenv, o->setenv);
+ FREE_ARRAY(u_int, o->num_setenv, o->setenv);
free(o->setenv);
free(o->control_path);
free(o->local_command);
@@ -3323,6 +3316,7 @@ dump_client_config(Options *o, const char *host)
dump_cfg_int(oNumberOfPasswordPrompts, o->number_of_password_prompts);
dump_cfg_int(oServerAliveCountMax, o->server_alive_count_max);
dump_cfg_int(oServerAliveInterval, o->server_alive_interval);
+ dump_cfg_int(oRequiredRSASize, o->required_rsa_size);
/* String options */
dump_cfg_string(oBindAddress, o->bind_address);
diff --git a/readconf.h b/readconf.h
index ded13c943d3f..ffb5ec4f2262 100644
--- a/readconf.h
+++ b/readconf.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: readconf.h,v 1.146 2021/12/19 22:14:47 djm Exp $ */
+/* $OpenBSD: readconf.h,v 1.148 2022/09/17 10:33:18 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -124,10 +124,10 @@ typedef struct {
int server_alive_interval;
int server_alive_count_max;
- int num_send_env;
- char **send_env;
- int num_setenv;
- char **setenv;
+ u_int num_send_env;
+ char **send_env;
+ u_int num_setenv;
+ char **setenv;
char *control_path;
int control_master;
@@ -176,6 +176,8 @@ typedef struct {
char *known_hosts_command;
+ int required_rsa_size; /* minimum size of RSA keys */
+
char *ignored_unknown; /* Pattern list of unknown tokens to ignore */
} Options;
diff --git a/readpass.c b/readpass.c
index 39af25c88729..b52f3d6b1e1a 100644
--- a/readpass.c
+++ b/readpass.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: readpass.c,v 1.69 2021/07/23 05:56:47 djm Exp $ */
+/* $OpenBSD: readpass.c,v 1.70 2022/05/27 04:27:49 dtucker Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
*
@@ -286,7 +286,8 @@ notify_start(int force_askpass, const char *fmt, ...)
}
out_ctx:
if ((ret = calloc(1, sizeof(*ret))) == NULL) {
- kill(pid, SIGTERM);
+ if (pid != -1)
+ kill(pid, SIGTERM);
fatal_f("calloc failed");
}
ret->pid = pid;
diff --git a/regress/agent-ptrace.sh b/regress/agent-ptrace.sh
index 9cd68d7ec84e..feef52416f7c 100644
--- a/regress/agent-ptrace.sh
+++ b/regress/agent-ptrace.sh
@@ -1,4 +1,4 @@
-# $OpenBSD: agent-ptrace.sh,v 1.3 2015/09/11 04:55:01 djm Exp $
+# $OpenBSD: agent-ptrace.sh,v 1.5 2022/04/22 05:08:43 anton Exp $
# Placed in the Public Domain.
tid="disallow agent ptrace attach"
diff --git a/regress/envpass.sh b/regress/envpass.sh
index af7eafe3d16e..cb104686bb70 100644
--- a/regress/envpass.sh
+++ b/regress/envpass.sh
@@ -1,4 +1,4 @@
-# $OpenBSD: envpass.sh,v 1.4 2005/03/04 08:48:46 djm Exp $
+# $OpenBSD: envpass.sh,v 1.5 2022/06/03 04:31:54 djm Exp $
# Placed in the Public Domain.
tid="environment passing"
@@ -11,6 +11,7 @@ Host test-sendenv-confparse-bug
SendEnv *
EOF
cat $OBJ/ssh_proxy >> $OBJ/ssh_proxy_envpass
+cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
trace "pass env, don't accept"
verbose "test $tid: pass env, don't accept"
@@ -23,6 +24,18 @@ if [ $r -ne 0 ]; then
fail "environment found"
fi
+trace "setenv, don't accept"
+verbose "test $tid: setenv, don't accept"
+${SSH} -oSendEnv="*" -F $OBJ/ssh_proxy_envpass -oSetEnv="_TEST_ENV=blah" \
+ otherhost \
+ sh << 'EOF'
+ test -z "$_TEST_ENV"
+EOF
+r=$?
+if [ $r -ne 0 ]; then
+ fail "environment found"
+fi
+
trace "don't pass env, accept"
verbose "test $tid: don't pass env, accept"
_XXX_TEST_A=1 _XXX_TEST_B=2 ${SSH} -F $OBJ/ssh_proxy_envpass otherhost \
@@ -57,4 +70,56 @@ if [ $r -ne 0 ]; then
fail "environment not found"
fi
+trace "setenv, accept"
+verbose "test $tid: setenv, accept"
+${SSH} -F $OBJ/ssh_proxy_envpass \
+ -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_B=2" otherhost \
+ sh << 'EOF'
+ test X"$_XXX_TEST_A" = X"1" -a X"$_XXX_TEST_B" = X"2"
+EOF
+r=$?
+if [ $r -ne 0 ]; then
+ fail "environment not found"
+fi
+trace "setenv, first match wins"
+verbose "test $tid: setenv, first match wins"
+${SSH} -F $OBJ/ssh_proxy_envpass \
+ -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_A=11 _XXX_TEST_B=2" otherhost \
+ sh << 'EOF'
+ test X"$_XXX_TEST_A" = X"1" -a X"$_XXX_TEST_B" = X"2"
+EOF
+r=$?
+if [ $r -ne 0 ]; then
+ fail "environment not found"
+fi
+
+trace "server setenv wins"
+verbose "test $tid: server setenv wins"
+cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
+echo "SetEnv _XXX_TEST_A=23" >> $OBJ/sshd_proxy
+${SSH} -F $OBJ/ssh_proxy_envpass \
+ -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_B=2" otherhost \
+ sh << 'EOF'
+ test X"$_XXX_TEST_A" = X"23" -a X"$_XXX_TEST_B" = X"2"
+EOF
+r=$?
+if [ $r -ne 0 ]; then
+ fail "environment not found"
+fi
+
+trace "server setenv first match wins"
+verbose "test $tid: server setenv wins"
+cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
+echo "SetEnv _XXX_TEST_A=23 _XXX_TEST_A=42" >> $OBJ/sshd_proxy
+${SSH} -F $OBJ/ssh_proxy_envpass \
+ -oSetEnv="_XXX_TEST_A=1 _XXX_TEST_B=2" otherhost \
+ sh << 'EOF'
+ test X"$_XXX_TEST_A" = X"23" -a X"$_XXX_TEST_B" = X"2"
+EOF
+r=$?
+if [ $r -ne 0 ]; then
+ fail "environment not found"
+fi
+
+
rm -f $OBJ/ssh_proxy_envpass
diff --git a/regress/forward-control.sh b/regress/forward-control.sh
index 02f7667a665b..63bbdebe5cb6 100644
--- a/regress/forward-control.sh
+++ b/regress/forward-control.sh
@@ -1,4 +1,4 @@
-# $OpenBSD: forward-control.sh,v 1.8 2021/05/07 09:23:40 dtucker Exp $
+# $OpenBSD: forward-control.sh,v 1.11 2022/04/21 01:36:46 dtucker Exp $
# Placed in the Public Domain.
tid="sshd control of local and remote forwarding"
@@ -6,19 +6,7 @@ tid="sshd control of local and remote forwarding"
LFWD_PORT=3320
RFWD_PORT=3321
CTL=$OBJ/ctl-sock
-READY=$OBJ/ready
-
-wait_for_file_to_appear() {
- _path=$1
- _n=0
- while test ! -f $_path ; do
- test $_n -eq 1 && trace "waiting for $_path to appear"
- _n=`expr $_n + 1`
- test $_n -ge 20 && return 1
- sleep 1
- done
- return 0
-}
+WAIT_SECONDS=20
wait_for_process_to_exit() {
_pid=$1
@@ -26,29 +14,35 @@ wait_for_process_to_exit() {
while kill -0 $_pid 2>/dev/null ; do
test $_n -eq 1 && trace "waiting for $_pid to exit"
_n=`expr $_n + 1`
- test $_n -ge 20 && return 1
+ test $_n -ge $WAIT_SECONDS && return 1
sleep 1
done
return 0
}
+mux_cmd() {
+ ${SSH} -F $OBJ/ssh_proxy -S $CTL -O $1 host 2>&1
+}
+
+controlmaster_pid() {
+ mux_cmd check | cut -f2 -d= | cut -f1 -d')'
+}
+
# usage: check_lfwd Y|N message
check_lfwd() {
_expected=$1
_message=$2
- rm -f $READY
${SSH} -F $OBJ/ssh_proxy \
-L$LFWD_PORT:127.0.0.1:$PORT \
-o ExitOnForwardFailure=yes \
- -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \
- >/dev/null 2>&1 &
- _sshpid=$!
- wait_for_file_to_appear $READY || \
- fatal "check_lfwd ssh fail: $_message"
+ -MS $CTL -o ControlPersist=yes \
+ -f host true
+ mux_cmd check >/dev/null || fatal "check_lfwd ssh fail: $_message"
${SSH} -F $OBJ/ssh_config -p $LFWD_PORT \
-oConnectionAttempts=10 host true >/dev/null 2>&1
_result=$?
- kill $_sshpid `cat $READY` 2>/dev/null
+ _sshpid=`controlmaster_pid`
+ mux_cmd exit >/dev/null
wait_for_process_to_exit $_sshpid
if test "x$_expected" = "xY" -a $_result -ne 0 ; then
fail "check_lfwd failed (expecting success): $_message"
@@ -65,20 +59,19 @@ check_lfwd() {
check_rfwd() {
_expected=$1
_message=$2
- rm -f $READY
${SSH} -F $OBJ/ssh_proxy \
-R127.0.0.1:$RFWD_PORT:127.0.0.1:$PORT \
-o ExitOnForwardFailure=yes \
- -n host exec sh -c \'"sleep 60 & echo \$! > $READY ; wait "\' \
- >/dev/null 2>&1 &
- _sshpid=$!
- wait_for_file_to_appear $READY
+ -MS $CTL -o ControlPersist=yes \
+ -f host true
+ mux_cmd check >/dev/null
_result=$?
- if test $_result -eq 0 ; then
+ _sshpid=`controlmaster_pid`
+ if test $_result -eq 0; then
${SSH} -F $OBJ/ssh_config -p $RFWD_PORT \
-oConnectionAttempts=10 host true >/dev/null 2>&1
_result=$?
- kill $_sshpid `cat $READY` 2>/dev/null
+ mux_cmd exit >/dev/null
wait_for_process_to_exit $_sshpid
fi
if test "x$_expected" = "xY" -a $_result -ne 0 ; then
diff --git a/regress/misc/fuzz-harness/Makefile b/regress/misc/fuzz-harness/Makefile
index 3938ac853d31..0b4238fd39a4 100644
--- a/regress/misc/fuzz-harness/Makefile
+++ b/regress/misc/fuzz-harness/Makefile
@@ -11,7 +11,7 @@ LIBS=-lssh -lopenbsd-compat -lmd -lcrypto -lfido2 -lcbor $(FUZZ_LIBS)
SK_NULL_OBJS=ssh-sk-null.o
COMMON_DEPS=../../../libssh.a
-TARGETS=pubkey_fuzz sig_fuzz authopt_fuzz sshsig_fuzz \
+TARGETS=pubkey_fuzz sig_fuzz authopt_fuzz authkeys_fuzz sshsig_fuzz \
sshsigopt_fuzz privkey_fuzz kex_fuzz agent_fuzz
all: $(TARGETS)
@@ -28,6 +28,9 @@ sig_fuzz: sig_fuzz.o $(SK_NULL_OBJS) $(COMMON_DEPS)
authopt_fuzz: authopt_fuzz.o $(SK_NULL_OBJS) $(COMMON_DEPS)
$(CXX) -o $@ authopt_fuzz.o $(SK_NULL_OBJS) ../../../auth-options.o $(LDFLAGS) $(LIBS)
+authkeys_fuzz: authkeys_fuzz.o $(SK_NULL_OBJS) $(COMMON_DEPS)
+ $(CXX) -o $@ authkeys_fuzz.o $(SK_NULL_OBJS) ../../../auth-options.o ../../../auth2-pubkeyfile.o $(LDFLAGS) $(LIBS)
+
sshsig_fuzz: sshsig_fuzz.o $(SK_NULL_OBJS) $(COMMON_DEPS)
$(CXX) -o $@ sshsig_fuzz.o $(SK_NULL_OBJS) ../../../sshsig.o $(LDFLAGS) $(LIBS)
diff --git a/regress/misc/fuzz-harness/authkeys_fuzz.cc b/regress/misc/fuzz-harness/authkeys_fuzz.cc
new file mode 100644
index 000000000000..8b3e54e543d8
--- /dev/null
+++ b/regress/misc/fuzz-harness/authkeys_fuzz.cc
@@ -0,0 +1,81 @@
+#include <stddef.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include <pwd.h>
+#include <unistd.h>
+
+extern "C" {
+
+#include "hostfile.h"
+#include "auth.h"
+#include "auth-options.h"
+#include "sshkey.h"
+
+// testdata/id_ed25519.pub and testdata/id_ed25519-cert.pub
+const char *pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDPQXmEVMVLmeFRyafKMVWgPDkv8/uRBTwmcEDatZzMD";
+const char *certtext = "ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIMDQjYH6XRzH3j3MW1DdjCoAfvrHfgjnVGF+sLK0pBfqAAAAIDPQXmEVMVLmeFRyafKMVWgPDkv8/uRBTwmcEDatZzMDAAAAAAAAA+sAAAABAAAAB3VseXNzZXMAAAAXAAAAB3VseXNzZXMAAAAIb2R5c3NldXMAAAAAAAAAAP//////////AAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgM9BeYRUxUuZ4VHJp8oxVaA8OS/z+5EFPCZwQNq1nMwMAAABTAAAAC3NzaC1lZDI1NTE5AAAAQBj0og+s09/HpwdHZbzN0twooKPDWWrxGfnP1Joy6cDnY2BCSQ7zg9vbq11kLF8H/sKOTZWAQrUZ7LlChOu9Ogw= id_ed25519.pub";
+
+// stubs
+void auth_debug_add(const char *fmt,...)
+{
+}
+
+void
+auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote)
+{
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
+{
+ char *tmp, *o, *cp = (char *)malloc(size + 1 + strlen(pubkey) + 1);
+ struct sshauthopt *opts = NULL;
+ struct passwd *pw = getpwuid(getuid());
+ static struct sshkey *key, *cert;
+
+ if (key == NULL) {
+ if ((key = sshkey_new(KEY_UNSPEC)) == NULL ||
+ (cert = sshkey_new(KEY_UNSPEC)) == NULL)
+ abort();
+ if ((o = tmp = strdup(pubkey)) == NULL ||
+ sshkey_read(key, &tmp) != 0)
+ abort();
+ free(o);
+ if ((o = tmp = strdup(certtext)) == NULL ||
+ sshkey_read(cert, &tmp) != 0)
+ abort();
+ free(o);
+ }
+ if (cp == NULL || pw == NULL || key == NULL || cert == NULL)
+ abort();
+
+ // Cleanup whitespace at input EOL.
+ for (; size > 0 && strchr(" \t\r\n", data[size - 1]) != NULL; size--) ;
+
+ // Append a pubkey that will match.
+ memcpy(cp, data, size);
+ cp[size] = ' ';
+ memcpy(cp + size + 1, pubkey, strlen(pubkey) + 1);
+
+ // Try key.
+ if ((tmp = strdup(cp)) == NULL)
+ abort();
+ (void) auth_check_authkey_line(pw, key, tmp, "127.0.0.1", "localhost",
+ "fuzz", &opts);
+ free(tmp);
+ sshauthopt_free(opts);
+
+ // Try cert.
+ if ((tmp = strdup(cp)) == NULL)
+ abort();
+ (void) auth_check_authkey_line(pw, cert, tmp, "127.0.0.1", "localhost",
+ "fuzz", &opts);
+ free(tmp);
+ sshauthopt_free(opts);
+
+ free(cp);
+ return 0;
+}
+
+} // extern "C"
diff --git a/regress/misc/sk-dummy/sk-dummy.c b/regress/misc/sk-dummy/sk-dummy.c
index a10c0be281b1..ad5e4745237d 100644
--- a/regress/misc/sk-dummy/sk-dummy.c
+++ b/regress/misc/sk-dummy/sk-dummy.c
@@ -59,7 +59,7 @@
/* #define SK_DEBUG 1 */
-#if SSH_SK_VERSION_MAJOR != 0x00090000
+#if SSH_SK_VERSION_MAJOR != 0x000a0000
# error SK API has changed, sk-dummy.c needs an update
#endif
diff --git a/regress/multiplex.sh b/regress/multiplex.sh
index 4744fa3d97d6..2950d955aa3f 100644
--- a/regress/multiplex.sh
+++ b/regress/multiplex.sh
@@ -1,4 +1,4 @@
-# $OpenBSD: multiplex.sh,v 1.33 2020/06/24 15:16:23 markus Exp $
+# $OpenBSD: multiplex.sh,v 1.34 2022/06/03 04:31:54 djm Exp $
# Placed in the Public Domain.
make_tmpdir
@@ -38,8 +38,8 @@ start_mux_master()
start_mux_master
-verbose "test $tid: envpass"
-trace "env passing over multiplexed connection"
+verbose "test $tid: setenv"
+trace "setenv over multiplexed connection"
_XXX_TEST=blah ${SSH} -F $OBJ/ssh_config -oSendEnv="_XXX_TEST" -S$CTL otherhost sh << 'EOF'
test X"$_XXX_TEST" = X"blah"
EOF
@@ -47,6 +47,16 @@ if [ $? -ne 0 ]; then
fail "environment not found"
fi
+verbose "test $tid: envpass"
+trace "env passing over multiplexed connection"
+${SSH} -F $OBJ/ssh_config -oSetEnv="_XXX_TEST=foo" -S$CTL otherhost sh << 'EOF'
+ test X"$_XXX_TEST" = X"foo"
+EOF
+if [ $? -ne 0 ]; then
+ fail "environment not found"
+fi
+
+
verbose "test $tid: transfer"
rm -f ${COPY}
trace "ssh transfer over multiplexed connection and check result"
diff --git a/regress/scp.sh b/regress/scp.sh
index 358a8df66b1c..f47c594572fd 100644
--- a/regress/scp.sh
+++ b/regress/scp.sh
@@ -1,4 +1,4 @@
-# $OpenBSD: scp.sh,v 1.13 2021/08/10 03:35:45 djm Exp $
+# $OpenBSD: scp.sh,v 1.14 2022/05/15 23:48:07 djm Exp $
# Placed in the Public Domain.
tid="scp"
@@ -49,6 +49,31 @@ for mode in scp sftp ; do
$SCP $scpopts somehost:${DATA} ${COPY} || fail "copy failed"
cmp ${DATA} ${COPY} || fail "corrupted copy"
+ verbose "$tag: copy local file to remote file in place"
+ scpclean
+ cp ${DATA} ${COPY}
+ $SCP $scpopts ${COPY} somehost:${COPY} || fail "copy failed"
+ cmp ${DATA} ${COPY} || fail "corrupted copy"
+
+ verbose "$tag: copy remote file to local file in place"
+ scpclean
+ cp ${DATA} ${COPY}
+ $SCP $scpopts somehost:${COPY} ${COPY} || fail "copy failed"
+ cmp ${DATA} ${COPY} || fail "corrupted copy"
+
+ verbose "$tag: copy local file to remote file clobber"
+ scpclean
+ cat ${DATA} ${DATA} > ${COPY}
+ $SCP $scpopts ${DATA} somehost:${COPY} || fail "copy failed"
+ ls -l $DATA $COPY
+ cmp ${DATA} ${COPY} || fail "corrupted copy"
+
+ verbose "$tag: copy remote file to local file clobber"
+ scpclean
+ cat ${DATA} ${DATA} > ${COPY}
+ $SCP $scpopts somehost:${DATA} ${COPY} || fail "copy failed"
+ cmp ${DATA} ${COPY} || fail "corrupted copy"
+
verbose "$tag: simple copy local file to remote dir"
scpclean
cp ${DATA} ${COPY}
diff --git a/regress/scp3.sh b/regress/scp3.sh
index f71b1567755b..47db47cd6a7d 100644
--- a/regress/scp3.sh
+++ b/regress/scp3.sh
@@ -9,6 +9,12 @@ COPY2=${OBJ}/copy2
DIR=${COPY}.dd
DIR2=${COPY}.dd2
+$SSH -F $OBJ/ssh_proxy somehost \
+ 'IFS=":"; for i in $PATH;do [ -x "$i/scp" ] && exit 0; done; exit 1'
+if [ $? -eq 1 ]; then
+ skip "No scp on remote path."
+fi
+
SRC=`dirname ${SCRIPT}`
cp ${SRC}/scp-ssh-wrapper.sh ${OBJ}/scp-ssh-wrapper.scp
chmod 755 ${OBJ}/scp-ssh-wrapper.scp
diff --git a/regress/sftp-cmds.sh b/regress/sftp-cmds.sh
index 1289c4089c6c..85f0e9767285 100644
--- a/regress/sftp-cmds.sh
+++ b/regress/sftp-cmds.sh
@@ -1,4 +1,4 @@
-# $OpenBSD: sftp-cmds.sh,v 1.14 2013/06/21 02:26:26 djm Exp $
+# $OpenBSD: sftp-cmds.sh,v 1.15 2022/03/31 03:07:33 djm Exp $
# Placed in the Public Domain.
# XXX - TODO:
@@ -197,6 +197,11 @@ rm -f ${COPY}.2
echo "ln -s ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "ln -s failed"
test -h ${COPY}.2 || fail "missing file after ln -s"
+verbose "$tid: cp"
+rm -f ${COPY}.2
+echo "cp ${COPY}.1 ${COPY}.2" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 || fail "cp failed"
+cmp ${COPY}.1 ${COPY}.2 || fail "created file is not equal after cp"
+
verbose "$tid: mkdir"
echo "mkdir ${COPY}.dd" | ${SFTP} -D ${SFTPSERVER} >/dev/null 2>&1 \
|| fail "mkdir failed"
diff --git a/regress/test-exec.sh b/regress/test-exec.sh
index 9fb02d1cbc8c..c51f8eac162f 100644
--- a/regress/test-exec.sh
+++ b/regress/test-exec.sh
@@ -1,9 +1,9 @@
-# $OpenBSD: test-exec.sh,v 1.89 2022/01/06 22:14:25 dtucker Exp $
+# $OpenBSD: test-exec.sh,v 1.92 2022/07/25 07:12:45 dtucker Exp $
# Placed in the Public Domain.
#SUDO=sudo
-if [ ! -x "$TEST_SSH_ELAPSED_TIMES" ]; then
+if [ ! -z "$TEST_SSH_ELAPSED_TIMES" ]; then
STARTTIME=`date '+%s'`
fi
@@ -250,6 +250,30 @@ if [ "x$TEST_REGRESS_LOGFILE" = "x" ]; then
TEST_REGRESS_LOGFILE=$OBJ/regress.log
fi
+# If set, keep track of successful tests and skip them them if we've
+# previously completed that test.
+if [ "x$TEST_REGRESS_CACHE_DIR" != "x" ]; then
+ if [ ! -d "$TEST_REGRESS_CACHE_DIR" ]; then
+ mkdir -p "$TEST_REGRESS_CACHE_DIR"
+ fi
+ TEST="`basename $SCRIPT .sh`"
+ CACHE="${TEST_REGRESS_CACHE_DIR}/${TEST}.cache"
+ for i in ${SSH} ${SSHD} ${SSHAGENT} ${SSHADD} ${SSHKEYGEN} ${SCP} \
+ ${SFTP} ${SFTPSERVER} ${SSHKEYSCAN}; do
+ case $i in
+ /*) bin="$i" ;;
+ *) bin="`which $i`" ;;
+ esac
+ if [ "$bin" -nt "$CACHE" ]; then
+ rm -f "$CACHE"
+ fi
+ done
+ if [ -f "$CACHE" ]; then
+ echo ok cached $CACHE
+ exit 0
+ fi
+fi
+
# truncate logfiles
>$TEST_SSH_LOGFILE
>$TEST_SSHD_LOGFILE
@@ -296,7 +320,7 @@ export SSH_PKCS11_HELPER SSH_SK_HELPER
#echo $SSH $SSHD $SSHAGENT $SSHADD $SSHKEYGEN $SSHKEYSCAN $SFTP $SFTPSERVER $SCP
# Portable specific functions
-have_prog()
+which()
{
saved_IFS="$IFS"
IFS=":"
@@ -304,13 +328,21 @@ have_prog()
do
if [ -x $i/$1 ]; then
IFS="$saved_IFS"
+ echo "$i/$1"
return 0
fi
done
IFS="$saved_IFS"
+ echo "$i/$1"
return 1
}
+have_prog()
+{
+ which "$1" >/dev/null 2>&1
+ return $?
+}
+
jot() {
awk "BEGIN { for (i = $2; i < $2 + $1; i++) { printf \"%d\n\", i } exit }"
}
@@ -763,6 +795,9 @@ fi
if [ $RESULT -eq 0 ]; then
verbose ok $tid
+ if [ "x$CACHE" != "x" ]; then
+ touch "$CACHE"
+ fi
else
echo failed $tid
fi
diff --git a/regress/unittests/misc/test_convtime.c b/regress/unittests/misc/test_convtime.c
index ef6fd77deda5..4794dbd9daae 100644
--- a/regress/unittests/misc/test_convtime.c
+++ b/regress/unittests/misc/test_convtime.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: test_convtime.c,v 1.2 2021/12/14 21:25:27 deraadt Exp $ */
+/* $OpenBSD: test_convtime.c,v 1.3 2022/08/11 01:57:50 djm Exp $ */
/*
* Regress test for misc time conversion functions.
*
@@ -20,6 +20,7 @@
#include "log.h"
#include "misc.h"
+#include "ssherr.h"
void test_convtime(void);
@@ -27,6 +28,7 @@ void
test_convtime(void)
{
char buf[1024];
+ uint64_t t;
TEST_START("misc_convtime");
ASSERT_INT_EQ(convtime("0"), 0);
@@ -56,4 +58,64 @@ test_convtime(void)
ASSERT_INT_EQ(convtime("3550w5d3h14m8s"), -1);
#endif
TEST_DONE();
+
+ /* XXX timezones/DST make verification of this tricky */
+ /* XXX maybe setenv TZ and tzset() to make it unambiguous? */
+ TEST_START("misc_parse_absolute_time");
+ ASSERT_INT_EQ(parse_absolute_time("20000101", &t), 0);
+ ASSERT_INT_EQ(parse_absolute_time("200001011223", &t), 0);
+ ASSERT_INT_EQ(parse_absolute_time("20000101122345", &t), 0);
+
+ /* forced UTC TZ */
+ ASSERT_INT_EQ(parse_absolute_time("20000101Z", &t), 0);
+ ASSERT_U64_EQ(t, 946684800);
+ ASSERT_INT_EQ(parse_absolute_time("200001011223Z", &t), 0);
+ ASSERT_U64_EQ(t, 946729380);
+ ASSERT_INT_EQ(parse_absolute_time("20000101122345Z", &t), 0);
+ ASSERT_U64_EQ(t, 946729425);
+ ASSERT_INT_EQ(parse_absolute_time("20000101UTC", &t), 0);
+ ASSERT_U64_EQ(t, 946684800);
+ ASSERT_INT_EQ(parse_absolute_time("200001011223UTC", &t), 0);
+ ASSERT_U64_EQ(t, 946729380);
+ ASSERT_INT_EQ(parse_absolute_time("20000101122345UTC", &t), 0);
+ ASSERT_U64_EQ(t, 946729425);
+
+ /* Bad month */
+ ASSERT_INT_EQ(parse_absolute_time("20001301", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("20000001", &t),
+ SSH_ERR_INVALID_FORMAT);
+ /* Incomplete */
+ ASSERT_INT_EQ(parse_absolute_time("2", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("2000", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("20000", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("200001", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("2000010", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("200001010", &t),
+ SSH_ERR_INVALID_FORMAT);
+ /* Bad day, hour, minute, second */
+ ASSERT_INT_EQ(parse_absolute_time("20000199", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("200001019900", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("200001010099", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("20000101000099", &t),
+ SSH_ERR_INVALID_FORMAT);
+ /* Invalid TZ specifier */
+ ASSERT_INT_EQ(parse_absolute_time("20000101ZZ", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("20000101PDT", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("20000101U", &t),
+ SSH_ERR_INVALID_FORMAT);
+ ASSERT_INT_EQ(parse_absolute_time("20000101UTCUTC", &t),
+ SSH_ERR_INVALID_FORMAT);
+
+ TEST_DONE();
}
diff --git a/sandbox-capsicum.c b/sandbox-capsicum.c
index 883be185815a..11045251c885 100644
--- a/sandbox-capsicum.c
+++ b/sandbox-capsicum.c
@@ -29,6 +29,9 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#ifdef HAVE_CAPSICUM_HELPERS_H
+#include <capsicum_helpers.h>
+#endif
#include "log.h"
#include "monitor.h"
@@ -69,6 +72,10 @@ ssh_sandbox_child(struct ssh_sandbox *box)
struct rlimit rl_zero;
cap_rights_t rights;
+#ifdef HAVE_CAPH_CACHE_TZDATA
+ caph_cache_tzdata();
+#endif
+
rl_zero.rlim_cur = rl_zero.rlim_max = 0;
if (setrlimit(RLIMIT_FSIZE, &rl_zero) == -1)
diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
index 4ce80cb2a739..9929bdb68513 100644
--- a/sandbox-seccomp-filter.c
+++ b/sandbox-seccomp-filter.c
@@ -23,17 +23,20 @@
* E.g.
* auditctl -a task,always -F uid=<privsep uid>
*/
-/* #define SANDBOX_SECCOMP_FILTER_DEBUG 1 */
-
-/* XXX it should be possible to do logging via the log socket safely */
+#define SANDBOX_SECCOMP_FILTER_DEBUG 1
+#if 0
+/*
+ * For older toolchains, it may be necessary to use the kernel
+ * headers directly.
+ */
#ifdef SANDBOX_SECCOMP_FILTER_DEBUG
-/* Use the kernel headers in case of an older toolchain. */
# include <asm/siginfo.h>
# define __have_siginfo_t 1
# define __have_sigval_t 1
# define __have_sigevent_t 1
#endif /* SANDBOX_SECCOMP_FILTER_DEBUG */
+#endif
#include "includes.h"
@@ -362,7 +365,7 @@ ssh_sandbox_init(struct monitor *monitor)
#ifdef SANDBOX_SECCOMP_FILTER_DEBUG
extern struct monitor *pmonitor;
-void mm_log_handler(LogLevel level, const char *msg, void *ctx);
+void mm_log_handler(LogLevel level, int forced, const char *msg, void *ctx);
static void
ssh_sandbox_violation(int signum, siginfo_t *info, void *void_context)
@@ -372,7 +375,7 @@ ssh_sandbox_violation(int signum, siginfo_t *info, void *void_context)
snprintf(msg, sizeof(msg),
"%s: unexpected system call (arch:0x%x,syscall:%d @ %p)",
__func__, info->si_arch, info->si_syscall, info->si_call_addr);
- mm_log_handler(SYSLOG_LEVEL_FATAL, msg, pmonitor);
+ mm_log_handler(SYSLOG_LEVEL_FATAL, 0, msg, pmonitor);
_exit(1);
}
diff --git a/scp.0 b/scp.0
index 2057b5e70af0..67aca9020495 100644
--- a/scp.0
+++ b/scp.0
@@ -140,6 +140,7 @@ DESCRIPTION
PubkeyAcceptedAlgorithms
PubkeyAuthentication
RekeyLimit
+ RequiredRSASize
SendEnv
ServerAliveInterval
ServerAliveCountMax
@@ -199,7 +200,7 @@ HISTORY
scp is based on the rcp program in BSD source code from the Regents of
the University of California.
- Since OpenSSH 8.8, scp has use the SFTP protocol for transfers by
+ Since OpenSSH 9.0, scp has used the SFTP protocol for transfers by
default.
AUTHORS
@@ -212,4 +213,4 @@ CAVEATS
requires careful quoting of any characters that have special meaning to
the remote shell, such as quote characters.
-OpenBSD 7.0 February 23, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 19, 2022 OpenBSD 7.1
diff --git a/scp.1 b/scp.1
index 3af6ece1e7a1..cd23f97952e9 100644
--- a/scp.1
+++ b/scp.1
@@ -8,9 +8,9 @@
.\"
.\" Created: Sun May 7 00:14:37 1995 ylo
.\"
-.\" $OpenBSD: scp.1,v 1.108 2022/02/23 21:21:16 djm Exp $
+.\" $OpenBSD: scp.1,v 1.110 2022/09/19 21:39:16 djm Exp $
.\"
-.Dd $Mdocdate: February 23 2022 $
+.Dd $Mdocdate: September 19 2022 $
.Dt SCP 1
.Os
.Sh NAME
@@ -212,6 +212,7 @@ For full details of the options listed below, and their possible values, see
.It PubkeyAcceptedAlgorithms
.It PubkeyAuthentication
.It RekeyLimit
+.It RequiredRSASize
.It SendEnv
.It ServerAliveInterval
.It ServerAliveCountMax
@@ -295,9 +296,9 @@ is based on the rcp program in
.Bx
source code from the Regents of the University of California.
.Pp
-Since OpenSSH 8.8,
+Since OpenSSH 9.0,
.Nm
-has use the SFTP protocol for transfers by default.
+has used the SFTP protocol for transfers by default.
.Sh AUTHORS
.An Timo Rinne Aq Mt tri@iki.fi
.An Tatu Ylonen Aq Mt ylo@cs.hut.fi
diff --git a/scp.c b/scp.c
index c36d66aa5941..f9ca5d393294 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: scp.c,v 1.247 2022/03/20 08:52:17 djm Exp $ */
+/* $OpenBSD: scp.c,v 1.248 2022/05/13 06:31:50 djm Exp $ */
/*
* scp - secure remote copy. This is basically patched BSD rcp which
* uses ssh to do the data transfer (instead of using rcmd).
@@ -455,8 +455,6 @@ main(int argc, char **argv)
/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
sanitise_stdfd();
- seed_rng();
-
msetlocale();
/* Copy argv, because we modify it */
@@ -1311,11 +1309,11 @@ source_sftp(int argc, char *src, char *targ, struct sftp_conn *conn)
if (src_is_dir && iamrecursive) {
if (upload_dir(conn, src, abs_dst, pflag,
- SFTP_PROGRESS_ONLY, 0, 0, 1) != 0) {
+ SFTP_PROGRESS_ONLY, 0, 0, 1, 1) != 0) {
error("failed to upload directory %s to %s", src, targ);
errs = 1;
}
- } else if (do_upload(conn, src, abs_dst, pflag, 0, 0) != 0) {
+ } else if (do_upload(conn, src, abs_dst, pflag, 0, 0, 1) != 0) {
error("failed to upload file %s to %s", src, targ);
errs = 1;
}
@@ -1552,11 +1550,11 @@ sink_sftp(int argc, char *dst, const char *src, struct sftp_conn *conn)
debug("Fetching %s to %s\n", g.gl_pathv[i], abs_dst);
if (globpath_is_dir(g.gl_pathv[i]) && iamrecursive) {
if (download_dir(conn, g.gl_pathv[i], abs_dst, NULL,
- pflag, SFTP_PROGRESS_ONLY, 0, 0, 1) == -1)
+ pflag, SFTP_PROGRESS_ONLY, 0, 0, 1, 1) == -1)
err = -1;
} else {
if (do_download(conn, g.gl_pathv[i], abs_dst, NULL,
- pflag, 0, 0) == -1)
+ pflag, 0, 0, 1) == -1)
err = -1;
}
free(abs_dst);
diff --git a/servconf.c b/servconf.c
index 9d9681f15acf..423772b158e4 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: servconf.c,v 1.384 2022/03/18 04:04:11 djm Exp $ */
+/* $OpenBSD: servconf.c,v 1.386 2022/09/17 10:34:29 djm Exp $ */
/*
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
* All rights reserved
@@ -195,6 +195,7 @@ initialize_server_options(ServerOptions *options)
options->fingerprint_hash = -1;
options->disable_forwarding = -1;
options->expose_userauth_info = -1;
+ options->required_rsa_size = -1;
}
/* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */
@@ -441,6 +442,8 @@ fill_default_server_options(ServerOptions *options)
options->expose_userauth_info = 0;
if (options->sk_provider == NULL)
options->sk_provider = xstrdup("internal");
+ if (options->required_rsa_size == -1)
+ options->required_rsa_size = SSH_RSA_MINIMUM_MODULUS_SIZE;
assemble_algorithms(options);
@@ -517,6 +520,7 @@ typedef enum {
sStreamLocalBindMask, sStreamLocalBindUnlink,
sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding,
sExposeAuthInfo, sRDomain, sPubkeyAuthOptions, sSecurityKeyProvider,
+ sRequiredRSASize,
sDeprecated, sIgnore, sUnsupported
} ServerOpCodes;
@@ -676,6 +680,7 @@ static struct {
{ "rdomain", sRDomain, SSHCFG_ALL },
{ "casignaturealgorithms", sCASignatureAlgorithms, SSHCFG_ALL },
{ "securitykeyprovider", sSecurityKeyProvider, SSHCFG_GLOBAL },
+ { "requiredrsasize", sRequiredRSASize, SSHCFG_ALL },
{ NULL, sBadOption, 0 }
};
@@ -2033,6 +2038,12 @@ process_server_config_line_depth(ServerOptions *options, char *line,
filename, linenum);
if (!*activep || uvalue != 0)
continue;
+ if (lookup_setenv_in_list(arg, options->setenv,
+ options->num_setenv) != NULL) {
+ debug2("%s line %d: ignoring duplicate env "
+ "name \"%.64s\"", filename, linenum, arg);
+ continue;
+ }
opt_array_append(filename, linenum, keyword,
&options->setenv, &options->num_setenv, arg);
}
@@ -2432,6 +2443,10 @@ process_server_config_line_depth(ServerOptions *options, char *line,
*charptr = xstrdup(arg);
break;
+ case sRequiredRSASize:
+ intptr = &options->required_rsa_size;
+ goto parse_int;
+
case sDeprecated:
case sIgnore:
case sUnsupported:
@@ -2604,6 +2619,7 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
M_CP_INTOPT(rekey_limit);
M_CP_INTOPT(rekey_interval);
M_CP_INTOPT(log_level);
+ M_CP_INTOPT(required_rsa_size);
/*
* The bind_mask is a mode_t that may be unsigned, so we can't use
@@ -2868,6 +2884,7 @@ dump_config(ServerOptions *o)
dump_cfg_int(sMaxSessions, o->max_sessions);
dump_cfg_int(sClientAliveInterval, o->client_alive_interval);
dump_cfg_int(sClientAliveCountMax, o->client_alive_count_max);
+ dump_cfg_int(sRequiredRSASize, o->required_rsa_size);
dump_cfg_oct(sStreamLocalBindMask, o->fwd_opts.streamlocal_bind_mask);
/* formatted integer arguments */
diff --git a/servconf.h b/servconf.h
index 8a04463e0b79..9346155ce5bc 100644
--- a/servconf.h
+++ b/servconf.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: servconf.h,v 1.156 2022/03/18 04:04:11 djm Exp $ */
+/* $OpenBSD: servconf.h,v 1.157 2022/09/17 10:34:29 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -229,6 +229,7 @@ typedef struct {
int expose_userauth_info;
u_int64_t timing_secret;
char *sk_provider;
+ int required_rsa_size; /* minimum size of RSA keys */
} ServerOptions;
/* Information about the incoming connection as used by Match */
diff --git a/serverloop.c b/serverloop.c
index 0541f028a650..b4c0d82b242d 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: serverloop.c,v 1.231 2022/01/22 00:49:34 djm Exp $ */
+/* $OpenBSD: serverloop.c,v 1.232 2022/04/20 04:19:11 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -392,8 +392,7 @@ server_loop2(struct ssh *ssh, Authctxt *authctxt)
cleanup_exit(255);
}
- if (!ssh_packet_is_rekeying(ssh))
- channel_after_poll(ssh, pfd, npfd_active);
+ channel_after_poll(ssh, pfd, npfd_active);
if (conn_in_ready &&
process_input(ssh, connection_in) < 0)
break;
diff --git a/sftp-client.c b/sftp-client.c
index 1b8ce6d78826..35be53d697b6 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-client.c,v 1.162 2022/03/31 03:07:03 djm Exp $ */
+/* $OpenBSD: sftp-client.c,v 1.165 2022/09/19 10:43:12 djm Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
*
@@ -95,15 +95,16 @@ struct sftp_conn {
u_int num_requests;
u_int version;
u_int msg_id;
-#define SFTP_EXT_POSIX_RENAME 0x00000001
-#define SFTP_EXT_STATVFS 0x00000002
-#define SFTP_EXT_FSTATVFS 0x00000004
-#define SFTP_EXT_HARDLINK 0x00000008
-#define SFTP_EXT_FSYNC 0x00000010
-#define SFTP_EXT_LSETSTAT 0x00000020
-#define SFTP_EXT_LIMITS 0x00000040
-#define SFTP_EXT_PATH_EXPAND 0x00000080
-#define SFTP_EXT_COPY_DATA 0x00000100
+#define SFTP_EXT_POSIX_RENAME 0x00000001
+#define SFTP_EXT_STATVFS 0x00000002
+#define SFTP_EXT_FSTATVFS 0x00000004
+#define SFTP_EXT_HARDLINK 0x00000008
+#define SFTP_EXT_FSYNC 0x00000010
+#define SFTP_EXT_LSETSTAT 0x00000020
+#define SFTP_EXT_LIMITS 0x00000040
+#define SFTP_EXT_PATH_EXPAND 0x00000080
+#define SFTP_EXT_COPY_DATA 0x00000100
+#define SFTP_EXT_GETUSERSGROUPS_BY_ID 0x00000200
u_int exts;
u_int64_t limit_kbps;
struct bwlimit bwlimit_in, bwlimit_out;
@@ -539,6 +540,11 @@ do_init(int fd_in, int fd_out, u_int transfer_buflen, u_int num_requests,
strcmp((char *)value, "1") == 0) {
ret->exts |= SFTP_EXT_COPY_DATA;
known = 1;
+ } else if (strcmp(name,
+ "users-groups-by-id@openssh.com") == 0 &&
+ strcmp((char *)value, "1") == 0) {
+ ret->exts |= SFTP_EXT_GETUSERSGROUPS_BY_ID;
+ known = 1;
}
if (known) {
debug2("Server supports extension \"%s\" revision %s",
@@ -1580,7 +1586,7 @@ progress_meter_path(const char *path)
int
do_download(struct sftp_conn *conn, const char *remote_path,
const char *local_path, Attrib *a, int preserve_flag, int resume_flag,
- int fsync_flag)
+ int fsync_flag, int inplace_flag)
{
struct sshbuf *msg;
u_char *handle;
@@ -1627,8 +1633,8 @@ do_download(struct sftp_conn *conn, const char *remote_path,
&handle, &handle_len) != 0)
return -1;
- local_fd = open(local_path,
- O_WRONLY | O_CREAT | (resume_flag ? 0 : O_TRUNC), mode | S_IWUSR);
+ local_fd = open(local_path, O_WRONLY | O_CREAT |
+ ((resume_flag || inplace_flag) ? 0 : O_TRUNC), mode | S_IWUSR);
if (local_fd == -1) {
error("open local \"%s\": %s", local_path, strerror(errno));
goto fail;
@@ -1789,8 +1795,11 @@ do_download(struct sftp_conn *conn, const char *remote_path,
/* Sanity check */
if (TAILQ_FIRST(&requests) != NULL)
fatal("Transfer complete, but requests still in queue");
- /* Truncate at highest contiguous point to avoid holes on interrupt */
- if (read_error || write_error || interrupted) {
+ /*
+ * Truncate at highest contiguous point to avoid holes on interrupt,
+ * or unconditionally if writing in place.
+ */
+ if (inplace_flag || read_error || write_error || interrupted) {
if (reordered && resume_flag) {
error("Unable to resume download of \"%s\": "
"server reordered requests", local_path);
@@ -1851,7 +1860,7 @@ do_download(struct sftp_conn *conn, const char *remote_path,
static int
download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
int depth, Attrib *dirattrib, int preserve_flag, int print_flag,
- int resume_flag, int fsync_flag, int follow_link_flag)
+ int resume_flag, int fsync_flag, int follow_link_flag, int inplace_flag)
{
int i, ret = 0;
SFTP_DIRENT **dir_entries;
@@ -1910,7 +1919,7 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
if (download_dir_internal(conn, new_src, new_dst,
depth + 1, &(dir_entries[i]->a), preserve_flag,
print_flag, resume_flag,
- fsync_flag, follow_link_flag) == -1)
+ fsync_flag, follow_link_flag, inplace_flag) == -1)
ret = -1;
} else if (S_ISREG(dir_entries[i]->a.perm) ||
(follow_link_flag && S_ISLNK(dir_entries[i]->a.perm))) {
@@ -1922,7 +1931,8 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
if (do_download(conn, new_src, new_dst,
S_ISLNK(dir_entries[i]->a.perm) ? NULL :
&(dir_entries[i]->a),
- preserve_flag, resume_flag, fsync_flag) == -1) {
+ preserve_flag, resume_flag, fsync_flag,
+ inplace_flag) == -1) {
error("Download of file %s to %s failed",
new_src, new_dst);
ret = -1;
@@ -1960,7 +1970,7 @@ download_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
int
download_dir(struct sftp_conn *conn, const char *src, const char *dst,
Attrib *dirattrib, int preserve_flag, int print_flag, int resume_flag,
- int fsync_flag, int follow_link_flag)
+ int fsync_flag, int follow_link_flag, int inplace_flag)
{
char *src_canon;
int ret;
@@ -1972,26 +1982,25 @@ download_dir(struct sftp_conn *conn, const char *src, const char *dst,
ret = download_dir_internal(conn, src_canon, dst, 0,
dirattrib, preserve_flag, print_flag, resume_flag, fsync_flag,
- follow_link_flag);
+ follow_link_flag, inplace_flag);
free(src_canon);
return ret;
}
int
do_upload(struct sftp_conn *conn, const char *local_path,
- const char *remote_path, int preserve_flag, int resume, int fsync_flag)
+ const char *remote_path, int preserve_flag, int resume,
+ int fsync_flag, int inplace_flag)
{
int r, local_fd;
- u_int status = SSH2_FX_OK;
- u_int id;
- u_char type;
+ u_int openmode, id, status = SSH2_FX_OK, reordered = 0;
off_t offset, progress_counter;
- u_char *handle, *data;
+ u_char type, *handle, *data;
struct sshbuf *msg;
struct stat sb;
- Attrib a, *c = NULL;
- u_int32_t startid;
- u_int32_t ackid;
+ Attrib a, t, *c = NULL;
+ u_int32_t startid, ackid;
+ u_int64_t highwater = 0;
struct request *ack = NULL;
struct requests acks;
size_t handle_len;
@@ -2043,10 +2052,15 @@ do_upload(struct sftp_conn *conn, const char *local_path,
}
}
+ openmode = SSH2_FXF_WRITE|SSH2_FXF_CREAT;
+ if (resume)
+ openmode |= SSH2_FXF_APPEND;
+ else if (!inplace_flag)
+ openmode |= SSH2_FXF_TRUNC;
+
/* Send open request */
- if (send_open(conn, remote_path, "dest", SSH2_FXF_WRITE|SSH2_FXF_CREAT|
- (resume ? SSH2_FXF_APPEND : SSH2_FXF_TRUNC),
- &a, &handle, &handle_len) != 0) {
+ if (send_open(conn, remote_path, "dest", openmode, &a,
+ &handle, &handle_len) != 0) {
close(local_fd);
return -1;
}
@@ -2128,6 +2142,12 @@ do_upload(struct sftp_conn *conn, const char *local_path,
ack->id, ack->len, (unsigned long long)ack->offset);
++ackid;
progress_counter += ack->len;
+ if (!reordered && ack->offset <= highwater)
+ highwater = ack->offset + ack->len;
+ else if (!reordered && ack->offset > highwater) {
+ debug3_f("server reordered ACKs");
+ reordered = 1;
+ }
free(ack);
}
offset += len;
@@ -2145,6 +2165,14 @@ do_upload(struct sftp_conn *conn, const char *local_path,
status = SSH2_FX_FAILURE;
}
+ if (inplace_flag || (resume && (status != SSH2_FX_OK || interrupted))) {
+ debug("truncating at %llu", (unsigned long long)highwater);
+ attrib_clear(&t);
+ t.flags = SSH2_FILEXFER_ATTR_SIZE;
+ t.size = highwater;
+ do_fsetstat(conn, handle, handle_len, &t);
+ }
+
if (close(local_fd) == -1) {
error("close local \"%s\": %s", local_path, strerror(errno));
status = SSH2_FX_FAILURE;
@@ -2168,7 +2196,7 @@ do_upload(struct sftp_conn *conn, const char *local_path,
static int
upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
int depth, int preserve_flag, int print_flag, int resume, int fsync_flag,
- int follow_link_flag)
+ int follow_link_flag, int inplace_flag)
{
int ret = 0;
DIR *dirp;
@@ -2246,12 +2274,13 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
if (upload_dir_internal(conn, new_src, new_dst,
depth + 1, preserve_flag, print_flag, resume,
- fsync_flag, follow_link_flag) == -1)
+ fsync_flag, follow_link_flag, inplace_flag) == -1)
ret = -1;
} else if (S_ISREG(sb.st_mode) ||
(follow_link_flag && S_ISLNK(sb.st_mode))) {
if (do_upload(conn, new_src, new_dst,
- preserve_flag, resume, fsync_flag) == -1) {
+ preserve_flag, resume, fsync_flag,
+ inplace_flag) == -1) {
error("upload \"%s\" to \"%s\" failed",
new_src, new_dst);
ret = -1;
@@ -2271,7 +2300,7 @@ upload_dir_internal(struct sftp_conn *conn, const char *src, const char *dst,
int
upload_dir(struct sftp_conn *conn, const char *src, const char *dst,
int preserve_flag, int print_flag, int resume, int fsync_flag,
- int follow_link_flag)
+ int follow_link_flag, int inplace_flag)
{
char *dst_canon;
int ret;
@@ -2282,7 +2311,7 @@ upload_dir(struct sftp_conn *conn, const char *src, const char *dst,
}
ret = upload_dir_internal(conn, src, dst_canon, 0, preserve_flag,
- print_flag, resume, fsync_flag, follow_link_flag);
+ print_flag, resume, fsync_flag, follow_link_flag, inplace_flag);
free(dst_canon);
return ret;
@@ -2729,6 +2758,120 @@ crossload_dir(struct sftp_conn *from, struct sftp_conn *to,
return ret;
}
+int
+can_get_users_groups_by_id(struct sftp_conn *conn)
+{
+ return (conn->exts & SFTP_EXT_GETUSERSGROUPS_BY_ID) != 0;
+}
+
+int
+do_get_users_groups_by_id(struct sftp_conn *conn,
+ const u_int *uids, u_int nuids,
+ const u_int *gids, u_int ngids,
+ char ***usernamesp, char ***groupnamesp)
+{
+ struct sshbuf *msg, *uidbuf, *gidbuf;
+ u_int i, expected_id, id;
+ char *name, **usernames = NULL, **groupnames = NULL;
+ u_char type;
+ int r;
+
+ *usernamesp = *groupnamesp = NULL;
+ if (!can_get_users_groups_by_id(conn))
+ return SSH_ERR_FEATURE_UNSUPPORTED;
+
+ if ((msg = sshbuf_new()) == NULL ||
+ (uidbuf = sshbuf_new()) == NULL ||
+ (gidbuf = sshbuf_new()) == NULL)
+ fatal_f("sshbuf_new failed");
+ expected_id = id = conn->msg_id++;
+ debug2("Sending SSH2_FXP_EXTENDED(users-groups-by-id@openssh.com)");
+ for (i = 0; i < nuids; i++) {
+ if ((r = sshbuf_put_u32(uidbuf, uids[i])) != 0)
+ fatal_fr(r, "compose uids");
+ }
+ for (i = 0; i < ngids; i++) {
+ if ((r = sshbuf_put_u32(gidbuf, gids[i])) != 0)
+ fatal_fr(r, "compose gids");
+ }
+ if ((r = sshbuf_put_u8(msg, SSH2_FXP_EXTENDED)) != 0 ||
+ (r = sshbuf_put_u32(msg, id)) != 0 ||
+ (r = sshbuf_put_cstring(msg,
+ "users-groups-by-id@openssh.com")) != 0 ||
+ (r = sshbuf_put_stringb(msg, uidbuf)) != 0 ||
+ (r = sshbuf_put_stringb(msg, gidbuf)) != 0)
+ fatal_fr(r, "compose");
+ send_msg(conn, msg);
+ get_msg(conn, msg);
+ if ((r = sshbuf_get_u8(msg, &type)) != 0 ||
+ (r = sshbuf_get_u32(msg, &id)) != 0)
+ fatal_fr(r, "parse");
+ if (id != expected_id)
+ fatal("ID mismatch (%u != %u)", id, expected_id);
+ if (type == SSH2_FXP_STATUS) {
+ u_int status;
+ char *errmsg;
+
+ if ((r = sshbuf_get_u32(msg, &status)) != 0 ||
+ (r = sshbuf_get_cstring(msg, &errmsg, NULL)) != 0)
+ fatal_fr(r, "parse status");
+ error("users-groups-by-id %s",
+ *errmsg == '\0' ? fx2txt(status) : errmsg);
+ free(errmsg);
+ sshbuf_free(msg);
+ sshbuf_free(uidbuf);
+ sshbuf_free(gidbuf);
+ return -1;
+ } else if (type != SSH2_FXP_EXTENDED_REPLY)
+ fatal("Expected SSH2_FXP_EXTENDED_REPLY(%u) packet, got %u",
+ SSH2_FXP_EXTENDED_REPLY, type);
+
+ /* reuse */
+ sshbuf_free(uidbuf);
+ sshbuf_free(gidbuf);
+ uidbuf = gidbuf = NULL;
+ if ((r = sshbuf_froms(msg, &uidbuf)) != 0 ||
+ (r = sshbuf_froms(msg, &gidbuf)) != 0)
+ fatal_fr(r, "parse response");
+ if (nuids > 0) {
+ usernames = xcalloc(nuids, sizeof(*usernames));
+ for (i = 0; i < nuids; i++) {
+ if ((r = sshbuf_get_cstring(uidbuf, &name, NULL)) != 0)
+ fatal_fr(r, "parse user name");
+ /* Handle unresolved names */
+ if (*name == '\0') {
+ free(name);
+ name = NULL;
+ }
+ usernames[i] = name;
+ }
+ }
+ if (ngids > 0) {
+ groupnames = xcalloc(ngids, sizeof(*groupnames));
+ for (i = 0; i < ngids; i++) {
+ if ((r = sshbuf_get_cstring(gidbuf, &name, NULL)) != 0)
+ fatal_fr(r, "parse user name");
+ /* Handle unresolved names */
+ if (*name == '\0') {
+ free(name);
+ name = NULL;
+ }
+ groupnames[i] = name;
+ }
+ }
+ if (sshbuf_len(uidbuf) != 0)
+ fatal_f("unexpected extra username data");
+ if (sshbuf_len(gidbuf) != 0)
+ fatal_f("unexpected extra groupname data");
+ sshbuf_free(uidbuf);
+ sshbuf_free(gidbuf);
+ sshbuf_free(msg);
+ /* success */
+ *usernamesp = usernames;
+ *groupnamesp = groupnames;
+ return 0;
+}
+
char *
path_append(const char *p1, const char *p2)
{
diff --git a/sftp-client.h b/sftp-client.h
index 282a4c70037d..d7deab17e4cb 100644
--- a/sftp-client.h
+++ b/sftp-client.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-client.h,v 1.36 2022/03/31 03:07:03 djm Exp $ */
+/* $OpenBSD: sftp-client.h,v 1.38 2022/09/19 10:43:12 djm Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
@@ -141,28 +141,29 @@ int do_fsync(struct sftp_conn *conn, u_char *, u_int);
* Download 'remote_path' to 'local_path'. Preserve permissions and times
* if 'pflag' is set
*/
-int do_download(struct sftp_conn *, const char *, const char *,
- Attrib *, int, int, int);
+int do_download(struct sftp_conn *, const char *, const char *, Attrib *,
+ int, int, int, int);
/*
* Recursively download 'remote_directory' to 'local_directory'. Preserve
* times if 'pflag' is set
*/
-int download_dir(struct sftp_conn *, const char *, const char *,
- Attrib *, int, int, int, int, int);
+int download_dir(struct sftp_conn *, const char *, const char *, Attrib *,
+ int, int, int, int, int, int);
/*
* Upload 'local_path' to 'remote_path'. Preserve permissions and times
* if 'pflag' is set
*/
-int do_upload(struct sftp_conn *, const char *, const char *, int, int, int);
+int do_upload(struct sftp_conn *, const char *, const char *,
+ int, int, int, int);
/*
* Recursively upload 'local_directory' to 'remote_directory'. Preserve
* times if 'pflag' is set
*/
-int upload_dir(struct sftp_conn *, const char *, const char *, int, int, int,
- int, int);
+int upload_dir(struct sftp_conn *, const char *, const char *,
+ int, int, int, int, int, int);
/*
* Download a 'from_path' from the 'from' connection and upload it to
@@ -182,6 +183,15 @@ int crossload_dir(struct sftp_conn *from, struct sftp_conn *to,
Attrib *dirattrib, int preserve_flag, int print_flag,
int follow_link_flag);
+/*
+ * User/group ID to name translation.
+ */
+int can_get_users_groups_by_id(struct sftp_conn *conn);
+int do_get_users_groups_by_id(struct sftp_conn *conn,
+ const u_int *uids, u_int nuids,
+ const u_int *gids, u_int ngids,
+ char ***usernamesp, char ***groupnamesp);
+
/* Concatenate paths, taking care of slashes. Caller must free result. */
char *path_append(const char *, const char *);
diff --git a/sftp-common.c b/sftp-common.c
index 3ad57673d41e..50f1bbafb4bc 100644
--- a/sftp-common.c
+++ b/sftp-common.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-common.c,v 1.32 2020/10/18 11:32:02 djm Exp $ */
+/* $OpenBSD: sftp-common.c,v 1.33 2022/09/19 10:41:58 djm Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2001 Damien Miller. All rights reserved.
@@ -212,21 +212,25 @@ fx2txt(int status)
* drwxr-xr-x 5 markus markus 1024 Jan 13 18:39 .ssh
*/
char *
-ls_file(const char *name, const struct stat *st, int remote, int si_units)
+ls_file(const char *name, const struct stat *st, int remote, int si_units,
+ const char *user, const char *group)
{
int ulen, glen, sz = 0;
struct tm *ltime = localtime(&st->st_mtime);
- const char *user, *group;
char buf[1024], lc[8], mode[11+1], tbuf[12+1], ubuf[11+1], gbuf[11+1];
char sbuf[FMT_SCALED_STRSIZE];
time_t now;
strmode(st->st_mode, mode);
if (remote) {
- snprintf(ubuf, sizeof ubuf, "%u", (u_int)st->st_uid);
- user = ubuf;
- snprintf(gbuf, sizeof gbuf, "%u", (u_int)st->st_gid);
- group = gbuf;
+ if (user == NULL) {
+ snprintf(ubuf, sizeof ubuf, "%u", (u_int)st->st_uid);
+ user = ubuf;
+ }
+ if (group == NULL) {
+ snprintf(gbuf, sizeof gbuf, "%u", (u_int)st->st_gid);
+ group = gbuf;
+ }
strlcpy(lc, "?", sizeof(lc));
} else {
user = user_from_uid(st->st_uid, 0);
diff --git a/sftp-common.h b/sftp-common.h
index 2e778a9ca0ba..421a78f78822 100644
--- a/sftp-common.h
+++ b/sftp-common.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-common.h,v 1.12 2015/01/14 13:54:13 djm Exp $ */
+/* $OpenBSD: sftp-common.h,v 1.13 2022/09/19 10:41:58 djm Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -47,6 +47,7 @@ void stat_to_attrib(const struct stat *, Attrib *);
void attrib_to_stat(const Attrib *, struct stat *);
int decode_attrib(struct sshbuf *, Attrib *);
int encode_attrib(struct sshbuf *, const Attrib *);
-char *ls_file(const char *, const struct stat *, int, int);
+char *ls_file(const char *, const struct stat *, int, int,
+ const char *, const char *);
const char *fx2txt(int);
diff --git a/sftp-server-main.c b/sftp-server-main.c
index 06566d36ed84..2c70f89bc70b 100644
--- a/sftp-server-main.c
+++ b/sftp-server-main.c
@@ -42,8 +42,6 @@ main(int argc, char **argv)
/* Ensure that fds 0, 1 and 2 are open or directed to /dev/null */
sanitise_stdfd();
- seed_rng();
-
if ((user_pw = getpwuid(getuid())) == NULL) {
fprintf(stderr, "No user found for uid %lu\n",
(u_long)getuid());
diff --git a/sftp-server.0 b/sftp-server.0
index d362040d8ae7..7c5113d3faf3 100644
--- a/sftp-server.0
+++ b/sftp-server.0
@@ -95,4 +95,4 @@ HISTORY
AUTHORS
Markus Friedl <markus@openbsd.org>
-OpenBSD 7.0 July 27, 2021 OpenBSD 7.0
+OpenBSD 7.1 July 27, 2021 OpenBSD 7.1
diff --git a/sftp-server.c b/sftp-server.c
index 3dd19d4c81db..25f953489759 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-server.c,v 1.140 2022/03/31 03:05:49 djm Exp $ */
+/* $OpenBSD: sftp-server.c,v 1.144 2022/09/19 10:41:58 djm Exp $ */
/*
* Copyright (c) 2000-2004 Markus Friedl. All rights reserved.
*
@@ -37,6 +37,7 @@
#include <poll.h>
#endif
#include <pwd.h>
+#include <grp.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -121,6 +122,8 @@ static void process_extended_lsetstat(u_int32_t id);
static void process_extended_limits(u_int32_t id);
static void process_extended_expand(u_int32_t id);
static void process_extended_copy_data(u_int32_t id);
+static void process_extended_home_directory(u_int32_t id);
+static void process_extended_get_users_groups_by_id(u_int32_t id);
static void process_extended(u_int32_t id);
struct sftp_handler {
@@ -167,6 +170,10 @@ static const struct sftp_handler extended_handlers[] = {
{ "expand-path", "expand-path@openssh.com", 0,
process_extended_expand, 0 },
{ "copy-data", "copy-data", 0, process_extended_copy_data, 1 },
+ { "home-directory", "home-directory", 0,
+ process_extended_home_directory, 0 },
+ { "users-groups-by-id", "users-groups-by-id@openssh.com", 0,
+ process_extended_get_users_groups_by_id, 0 },
{ NULL, NULL, 0, NULL, 0 }
};
@@ -724,6 +731,8 @@ process_init(void)
compose_extension(msg, "limits@openssh.com", "1");
compose_extension(msg, "expand-path@openssh.com", "1");
compose_extension(msg, "copy-data", "1");
+ compose_extension(msg, "home-directory", "1");
+ compose_extension(msg, "users-groups-by-id@openssh.com", "1");
send_msg(msg);
sshbuf_free(msg);
@@ -1152,7 +1161,8 @@ process_readdir(u_int32_t id)
continue;
stat_to_attrib(&st, &(stats[count].attrib));
stats[count].name = xstrdup(dp->d_name);
- stats[count].long_name = ls_file(dp->d_name, &st, 0, 0);
+ stats[count].long_name = ls_file(dp->d_name, &st,
+ 0, 0, NULL, NULL);
count++;
/* send up to 100 entries in one message */
/* XXX check packet size instead */
@@ -1685,6 +1695,86 @@ process_extended_copy_data(u_int32_t id)
}
static void
+process_extended_home_directory(u_int32_t id)
+{
+ char *username;
+ struct passwd *user_pw;
+ int r;
+ Stat s;
+
+ if ((r = sshbuf_get_cstring(iqueue, &username, NULL)) != 0)
+ fatal_fr(r, "parse");
+
+ debug3("request %u: home-directory \"%s\"", id, username);
+ if ((user_pw = getpwnam(username)) == NULL) {
+ send_status(id, SSH2_FX_FAILURE);
+ goto out;
+ }
+
+ verbose("home-directory \"%s\"", pw->pw_dir);
+ attrib_clear(&s.attrib);
+ s.name = s.long_name = pw->pw_dir;
+ send_names(id, 1, &s);
+ out:
+ free(username);
+}
+
+static void
+process_extended_get_users_groups_by_id(u_int32_t id)
+{
+ struct passwd *user_pw;
+ struct group *gr;
+ struct sshbuf *uids, *gids, *usernames, *groupnames, *msg;
+ int r;
+ u_int n, nusers = 0, ngroups = 0;
+ const char *name;
+
+ if ((usernames = sshbuf_new()) == NULL ||
+ (groupnames = sshbuf_new()) == NULL ||
+ (msg = sshbuf_new()) == NULL)
+ fatal_f("sshbuf_new failed");
+ if ((r = sshbuf_froms(iqueue, &uids)) != 0 ||
+ (r = sshbuf_froms(iqueue, &gids)) != 0)
+ fatal_fr(r, "parse");
+ debug_f("uids len = %zu, gids len = %zu",
+ sshbuf_len(uids), sshbuf_len(gids));
+ while (sshbuf_len(uids) != 0) {
+ if ((r = sshbuf_get_u32(uids, &n)) != 0)
+ fatal_fr(r, "parse inner uid");
+ user_pw = getpwuid((uid_t)n);
+ name = user_pw == NULL ? "" : user_pw->pw_name;
+ debug3_f("uid %u => \"%s\"", n, name);
+ if ((r = sshbuf_put_cstring(usernames, name)) != 0)
+ fatal_fr(r, "assemble gid reply");
+ nusers++;
+ }
+ while (sshbuf_len(gids) != 0) {
+ if ((r = sshbuf_get_u32(gids, &n)) != 0)
+ fatal_fr(r, "parse inner gid");
+ gr = getgrgid((gid_t)n);
+ name = gr == NULL ? "" : gr->gr_name;
+ debug3_f("gid %u => \"%s\"", n, name);
+ if ((r = sshbuf_put_cstring(groupnames, name)) != 0)
+ fatal_fr(r, "assemble gid reply");
+ nusers++;
+ }
+ verbose("users-groups-by-id: %u users, %u groups", nusers, ngroups);
+
+ if ((r = sshbuf_put_u8(msg, SSH2_FXP_EXTENDED_REPLY)) != 0 ||
+ (r = sshbuf_put_u32(msg, id)) != 0 ||
+ (r = sshbuf_put_stringb(msg, usernames)) != 0 ||
+ (r = sshbuf_put_stringb(msg, groupnames)) != 0)
+ fatal_fr(r, "compose");
+ send_msg(msg);
+
+ sshbuf_free(uids);
+ sshbuf_free(gids);
+ sshbuf_free(usernames);
+ sshbuf_free(groupnames);
+ sshbuf_free(msg);
+}
+
+static void
process_extended(u_int32_t id)
{
char *request;
diff --git a/sftp-usergroup.c b/sftp-usergroup.c
new file mode 100644
index 000000000000..083930a4a327
--- /dev/null
+++ b/sftp-usergroup.c
@@ -0,0 +1,239 @@
+/*
+ * Copyright (c) 2022 Damien Miller <djm@mindrot.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* sftp client user/group lookup and caching */
+
+#include "includes.h"
+
+#include <sys/types.h>
+#include <openbsd-compat/sys-tree.h>
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+#include "log.h"
+#include "xmalloc.h"
+
+#include "sftp-common.h"
+#include "sftp-client.h"
+#include "sftp-usergroup.h"
+
+/* Tree of id, name */
+struct idname {
+ u_int id;
+ char *name;
+ RB_ENTRY(idname) entry;
+ /* XXX implement bounded cache as TAILQ */
+};
+static int
+idname_cmp(struct idname *a, struct idname *b)
+{
+ if (a->id == b->id)
+ return 0;
+ return a->id > b->id ? 1 : -1;
+}
+RB_HEAD(idname_tree, idname);
+RB_GENERATE_STATIC(idname_tree, idname, entry, idname_cmp)
+
+static struct idname_tree user_idname = RB_INITIALIZER(&user_idname);
+static struct idname_tree group_idname = RB_INITIALIZER(&group_idname);
+
+static void
+idname_free(struct idname *idname)
+{
+ if (idname == NULL)
+ return;
+ free(idname->name);
+ free(idname);
+}
+
+static void
+idname_enter(struct idname_tree *tree, u_int id, const char *name)
+{
+ struct idname *idname;
+
+ if ((idname = xcalloc(1, sizeof(*idname))) == NULL)
+ fatal_f("alloc");
+ idname->id = id;
+ idname->name = xstrdup(name);
+ if (RB_INSERT(idname_tree, tree, idname) != NULL)
+ idname_free(idname);
+}
+
+static const char *
+idname_lookup(struct idname_tree *tree, u_int id)
+{
+ struct idname idname, *found;
+
+ memset(&idname, 0, sizeof(idname));
+ idname.id = id;
+ if ((found = RB_FIND(idname_tree, tree, &idname)) != NULL)
+ return found->name;
+ return NULL;
+}
+
+static void
+freenames(char **names, u_int nnames)
+{
+ u_int i;
+
+ if (names == NULL)
+ return;
+ for (i = 0; i < nnames; i++)
+ free(names[i]);
+ free(names);
+}
+
+static void
+lookup_and_record(struct sftp_conn *conn,
+ u_int *uids, u_int nuids, u_int *gids, u_int ngids)
+{
+ int r;
+ u_int i;
+ char **usernames = NULL, **groupnames = NULL;
+
+ if ((r = do_get_users_groups_by_id(conn, uids, nuids, gids, ngids,
+ &usernames, &groupnames)) != 0) {
+ debug_fr(r, "do_get_users_groups_by_id");
+ return;
+ }
+ for (i = 0; i < nuids; i++) {
+ if (usernames[i] == NULL) {
+ debug3_f("uid %u not resolved", uids[i]);
+ continue;
+ }
+ debug3_f("record uid %u => \"%s\"", uids[i], usernames[i]);
+ idname_enter(&user_idname, uids[i], usernames[i]);
+ }
+ for (i = 0; i < ngids; i++) {
+ if (groupnames[i] == NULL) {
+ debug3_f("gid %u not resolved", gids[i]);
+ continue;
+ }
+ debug3_f("record gid %u => \"%s\"", gids[i], groupnames[i]);
+ idname_enter(&group_idname, gids[i], groupnames[i]);
+ }
+ freenames(usernames, nuids);
+ freenames(groupnames, ngids);
+}
+
+static int
+has_id(u_int id, u_int *ids, u_int nids)
+{
+ u_int i;
+
+ if (nids == 0)
+ return 0;
+
+ /* XXX O(N^2) */
+ for (i = 0; i < nids; i++) {
+ if (ids[i] == id)
+ break;
+ }
+ return i < nids;
+}
+
+static void
+collect_ids_from_glob(glob_t *g, int user, u_int **idsp, u_int *nidsp)
+{
+ u_int id, i, n = 0, *ids = NULL;
+
+ for (i = 0; g->gl_pathv[i] != NULL; i++) {
+ if (user) {
+ if (ruser_name(g->gl_statv[i]->st_uid) != NULL)
+ continue; /* Already seen */
+ id = (u_int)g->gl_statv[i]->st_uid;
+ } else {
+ if (rgroup_name(g->gl_statv[i]->st_gid) != NULL)
+ continue; /* Already seen */
+ id = (u_int)g->gl_statv[i]->st_gid;
+ }
+ if (has_id(id, ids, n))
+ continue;
+ ids = xrecallocarray(ids, n, n + 1, sizeof(*ids));
+ ids[n++] = id;
+ }
+ *idsp = ids;
+ *nidsp = n;
+}
+
+void
+get_remote_user_groups_from_glob(struct sftp_conn *conn, glob_t *g)
+{
+ u_int *uids = NULL, nuids = 0, *gids = NULL, ngids = 0;
+
+ if (!can_get_users_groups_by_id(conn))
+ return;
+
+ collect_ids_from_glob(g, 1, &uids, &nuids);
+ collect_ids_from_glob(g, 0, &gids, &ngids);
+ lookup_and_record(conn, uids, nuids, gids, ngids);
+ free(uids);
+ free(gids);
+}
+
+static void
+collect_ids_from_dirents(SFTP_DIRENT **d, int user, u_int **idsp, u_int *nidsp)
+{
+ u_int id, i, n = 0, *ids = NULL;
+
+ for (i = 0; d[i] != NULL; i++) {
+ if (user) {
+ if (ruser_name((uid_t)(d[i]->a.uid)) != NULL)
+ continue; /* Already seen */
+ id = d[i]->a.uid;
+ } else {
+ if (rgroup_name((gid_t)(d[i]->a.gid)) != NULL)
+ continue; /* Already seen */
+ id = d[i]->a.gid;
+ }
+ if (has_id(id, ids, n))
+ continue;
+ ids = xrecallocarray(ids, n, n + 1, sizeof(*ids));
+ ids[n++] = id;
+ }
+ *idsp = ids;
+ *nidsp = n;
+}
+
+void
+get_remote_user_groups_from_dirents(struct sftp_conn *conn, SFTP_DIRENT **d)
+{
+ u_int *uids = NULL, nuids = 0, *gids = NULL, ngids = 0;
+
+ if (!can_get_users_groups_by_id(conn))
+ return;
+
+ collect_ids_from_dirents(d, 1, &uids, &nuids);
+ collect_ids_from_dirents(d, 0, &gids, &ngids);
+ lookup_and_record(conn, uids, nuids, gids, ngids);
+ free(uids);
+ free(gids);
+}
+
+const char *
+ruser_name(uid_t uid)
+{
+ return idname_lookup(&user_idname, (u_int)uid);
+}
+
+const char *
+rgroup_name(uid_t gid)
+{
+ return idname_lookup(&group_idname, (u_int)gid);
+}
+
diff --git a/sftp-usergroup.h b/sftp-usergroup.h
new file mode 100644
index 000000000000..2711faf3a881
--- /dev/null
+++ b/sftp-usergroup.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2022 Damien Miller <djm@mindrot.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* sftp client user/group lookup and caching */
+
+/* Lookup uids/gids and populate cache */
+void get_remote_user_groups_from_glob(struct sftp_conn *conn, glob_t *g);
+void get_remote_user_groups_from_dirents(struct sftp_conn *conn, SFTP_DIRENT **d);
+
+/* Return user/group name from cache or NULL if not found */
+const char *ruser_name(uid_t uid);
+const char *rgroup_name(uid_t gid);
diff --git a/sftp.0 b/sftp.0
index 2e042261e59d..23aaa3af93fc 100644
--- a/sftp.0
+++ b/sftp.0
@@ -5,7 +5,7 @@ NAME
SYNOPSIS
sftp [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
- [-D sftp_server_path] [-F ssh_config] [-i identity_file]
+ [-D sftp_server_command] [-F ssh_config] [-i identity_file]
[-J destination] [-l limit] [-o ssh_option] [-P port]
[-R num_requests] [-S program] [-s subsystem | sftp_server]
destination
@@ -75,9 +75,11 @@ DESCRIPTION
Selects the cipher to use for encrypting the data transfers.
This option is directly passed to ssh(1).
- -D sftp_server_path
+ -D sftp_server_command
Connect directly to a local sftp server (rather than via ssh(1)).
- This option may be useful in debugging the client and server.
+ A command and arguments may be specified, for example
+ "/path/sftp-server -el debug3". This option may be useful in
+ debugging the client and server.
-F ssh_config
Specifies an alternative per-user configuration file for ssh(1).
@@ -164,6 +166,7 @@ DESCRIPTION
PubkeyAcceptedAlgorithms
PubkeyAuthentication
RekeyLimit
+ RequiredRSASize
SendEnv
ServerAliveInterval
ServerAliveCountMax
@@ -417,4 +420,4 @@ SEE ALSO
T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh-
filexfer-00.txt, January 2001, work in progress material.
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 19, 2022 OpenBSD 7.1
diff --git a/sftp.1 b/sftp.1
index 39e7d6ed68a8..3b3f2c5a7917 100644
--- a/sftp.1
+++ b/sftp.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: sftp.1,v 1.140 2022/03/31 17:27:27 naddy Exp $
+.\" $OpenBSD: sftp.1,v 1.142 2022/09/19 21:39:16 djm Exp $
.\"
.\" Copyright (c) 2001 Damien Miller. All rights reserved.
.\"
@@ -22,7 +22,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: March 31 2022 $
+.Dd $Mdocdate: September 19 2022 $
.Dt SFTP 1
.Os
.Sh NAME
@@ -34,7 +34,7 @@
.Op Fl B Ar buffer_size
.Op Fl b Ar batchfile
.Op Fl c Ar cipher
-.Op Fl D Ar sftp_server_path
+.Op Fl D Ar sftp_server_command
.Op Fl F Ar ssh_config
.Op Fl i Ar identity_file
.Op Fl J Ar destination
@@ -167,10 +167,12 @@ flag).
Selects the cipher to use for encrypting the data transfers.
This option is directly passed to
.Xr ssh 1 .
-.It Fl D Ar sftp_server_path
+.It Fl D Ar sftp_server_command
Connect directly to a local sftp server
(rather than via
.Xr ssh 1 ) .
+A command and arguments may be specified, for example
+.Qq /path/sftp-server -el debug3 .
This option may be useful in debugging the client and server.
.It Fl F Ar ssh_config
Specifies an alternative
@@ -271,6 +273,7 @@ For full details of the options listed below, and their possible values, see
.It PubkeyAcceptedAlgorithms
.It PubkeyAuthentication
.It RekeyLimit
+.It RequiredRSASize
.It SendEnv
.It ServerAliveInterval
.It ServerAliveCountMax
diff --git a/sftp.c b/sftp.c
index 4efc025a504c..c3c347e087e4 100644
--- a/sftp.c
+++ b/sftp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp.c,v 1.214 2022/03/31 03:07:03 djm Exp $ */
+/* $OpenBSD: sftp.c,v 1.222 2022/09/19 10:46:00 djm Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
*
@@ -68,6 +68,7 @@ typedef void EditLine;
#include "sshbuf.h"
#include "sftp-common.h"
#include "sftp-client.h"
+#include "sftp-usergroup.h"
/* File to read commands from */
FILE* infile;
@@ -166,7 +167,8 @@ enum sftp_command {
struct CMD {
const char *c;
const int n;
- const int t;
+ const int t; /* Completion type for the first argument */
+ const int t2; /* completion type for the optional second argument */
};
/* Type of completion */
@@ -175,44 +177,44 @@ struct CMD {
#define LOCAL 2
static const struct CMD cmds[] = {
- { "bye", I_QUIT, NOARGS },
- { "cd", I_CHDIR, REMOTE },
- { "chdir", I_CHDIR, REMOTE },
- { "chgrp", I_CHGRP, REMOTE },
- { "chmod", I_CHMOD, REMOTE },
- { "chown", I_CHOWN, REMOTE },
- { "copy", I_COPY, REMOTE },
- { "cp", I_COPY, REMOTE },
- { "df", I_DF, REMOTE },
- { "dir", I_LS, REMOTE },
- { "exit", I_QUIT, NOARGS },
- { "get", I_GET, REMOTE },
- { "help", I_HELP, NOARGS },
- { "lcd", I_LCHDIR, LOCAL },
- { "lchdir", I_LCHDIR, LOCAL },
- { "lls", I_LLS, LOCAL },
- { "lmkdir", I_LMKDIR, LOCAL },
- { "ln", I_LINK, REMOTE },
- { "lpwd", I_LPWD, LOCAL },
- { "ls", I_LS, REMOTE },
- { "lumask", I_LUMASK, NOARGS },
- { "mkdir", I_MKDIR, REMOTE },
- { "mget", I_GET, REMOTE },
- { "mput", I_PUT, LOCAL },
- { "progress", I_PROGRESS, NOARGS },
- { "put", I_PUT, LOCAL },
- { "pwd", I_PWD, REMOTE },
- { "quit", I_QUIT, NOARGS },
- { "reget", I_REGET, REMOTE },
- { "rename", I_RENAME, REMOTE },
- { "reput", I_REPUT, LOCAL },
- { "rm", I_RM, REMOTE },
- { "rmdir", I_RMDIR, REMOTE },
- { "symlink", I_SYMLINK, REMOTE },
- { "version", I_VERSION, NOARGS },
- { "!", I_SHELL, NOARGS },
- { "?", I_HELP, NOARGS },
- { NULL, -1, -1 }
+ { "bye", I_QUIT, NOARGS, NOARGS },
+ { "cd", I_CHDIR, REMOTE, NOARGS },
+ { "chdir", I_CHDIR, REMOTE, NOARGS },
+ { "chgrp", I_CHGRP, REMOTE, NOARGS },
+ { "chmod", I_CHMOD, REMOTE, NOARGS },
+ { "chown", I_CHOWN, REMOTE, NOARGS },
+ { "copy", I_COPY, REMOTE, LOCAL },
+ { "cp", I_COPY, REMOTE, LOCAL },
+ { "df", I_DF, REMOTE, NOARGS },
+ { "dir", I_LS, REMOTE, NOARGS },
+ { "exit", I_QUIT, NOARGS, NOARGS },
+ { "get", I_GET, REMOTE, LOCAL },
+ { "help", I_HELP, NOARGS, NOARGS },
+ { "lcd", I_LCHDIR, LOCAL, NOARGS },
+ { "lchdir", I_LCHDIR, LOCAL, NOARGS },
+ { "lls", I_LLS, LOCAL, NOARGS },
+ { "lmkdir", I_LMKDIR, LOCAL, NOARGS },
+ { "ln", I_LINK, REMOTE, REMOTE },
+ { "lpwd", I_LPWD, LOCAL, NOARGS },
+ { "ls", I_LS, REMOTE, NOARGS },
+ { "lumask", I_LUMASK, NOARGS, NOARGS },
+ { "mkdir", I_MKDIR, REMOTE, NOARGS },
+ { "mget", I_GET, REMOTE, LOCAL },
+ { "mput", I_PUT, LOCAL, REMOTE },
+ { "progress", I_PROGRESS, NOARGS, NOARGS },
+ { "put", I_PUT, LOCAL, REMOTE },
+ { "pwd", I_PWD, REMOTE, NOARGS },
+ { "quit", I_QUIT, NOARGS, NOARGS },
+ { "reget", I_REGET, REMOTE, LOCAL },
+ { "rename", I_RENAME, REMOTE, REMOTE },
+ { "reput", I_REPUT, LOCAL, REMOTE },
+ { "rm", I_RM, REMOTE, NOARGS },
+ { "rmdir", I_RMDIR, REMOTE, NOARGS },
+ { "symlink", I_SYMLINK, REMOTE, REMOTE },
+ { "version", I_VERSION, NOARGS, NOARGS },
+ { "!", I_SHELL, NOARGS, NOARGS },
+ { "?", I_HELP, NOARGS, NOARGS },
+ { NULL, -1, -1, -1 }
};
/* ARGSUSED */
@@ -601,18 +603,45 @@ parse_no_flags(const char *cmd, char **argv, int argc)
return optind;
}
+static char *
+escape_glob(const char *s)
+{
+ size_t i, o, len;
+ char *ret;
+
+ len = strlen(s);
+ ret = xcalloc(2, len + 1);
+ for (i = o = 0; i < len; i++) {
+ if (strchr("[]?*\\", s[i]) != NULL)
+ ret[o++] = '\\';
+ ret[o++] = s[i];
+ }
+ ret[o++] = '\0';
+ return ret;
+}
+
+static char *
+make_absolute_pwd_glob(const char *p, const char *pwd)
+{
+ char *ret, *escpwd;
+
+ escpwd = escape_glob(pwd);
+ if (p == NULL)
+ return escpwd;
+ ret = make_absolute(xstrdup(p), escpwd);
+ free(escpwd);
+ return ret;
+}
+
static int
process_get(struct sftp_conn *conn, const char *src, const char *dst,
const char *pwd, int pflag, int rflag, int resume, int fflag)
{
- char *abs_src = NULL;
- char *abs_dst = NULL;
+ char *filename, *abs_src = NULL, *abs_dst = NULL, *tmp = NULL;
glob_t g;
- char *filename, *tmp=NULL;
int i, r, err = 0;
- abs_src = xstrdup(src);
- abs_src = make_absolute(abs_src, pwd);
+ abs_src = make_absolute_pwd_glob(src, pwd);
memset(&g, 0, sizeof(g));
debug3("Looking up %s", abs_src);
@@ -670,12 +699,12 @@ process_get(struct sftp_conn *conn, const char *src, const char *dst,
if (globpath_is_dir(g.gl_pathv[i]) && (rflag || global_rflag)) {
if (download_dir(conn, g.gl_pathv[i], abs_dst, NULL,
pflag || global_pflag, 1, resume,
- fflag || global_fflag, 0) == -1)
+ fflag || global_fflag, 0, 0) == -1)
err = -1;
} else {
if (do_download(conn, g.gl_pathv[i], abs_dst, NULL,
pflag || global_pflag, resume,
- fflag || global_fflag) == -1)
+ fflag || global_fflag, 0) == -1)
err = -1;
}
free(abs_dst);
@@ -764,12 +793,12 @@ process_put(struct sftp_conn *conn, const char *src, const char *dst,
if (globpath_is_dir(g.gl_pathv[i]) && (rflag || global_rflag)) {
if (upload_dir(conn, g.gl_pathv[i], abs_dst,
pflag || global_pflag, 1, resume,
- fflag || global_fflag, 0) == -1)
+ fflag || global_fflag, 0, 0) == -1)
err = -1;
} else {
if (do_upload(conn, g.gl_pathv[i], abs_dst,
pflag || global_pflag, resume,
- fflag || global_fflag) == -1)
+ fflag || global_fflag, 0) == -1)
err = -1;
}
}
@@ -843,6 +872,7 @@ do_ls_dir(struct sftp_conn *conn, const char *path,
qsort(d, n, sizeof(*d), sdirent_comp);
}
+ get_remote_user_groups_from_dirents(conn, d);
for (n = 0; d[n] != NULL && !interrupted; n++) {
char *tmp, *fname;
@@ -854,14 +884,17 @@ do_ls_dir(struct sftp_conn *conn, const char *path,
free(tmp);
if (lflag & LS_LONG_VIEW) {
- if (lflag & (LS_NUMERIC_VIEW|LS_SI_UNITS)) {
+ if ((lflag & (LS_NUMERIC_VIEW|LS_SI_UNITS)) != 0 ||
+ can_get_users_groups_by_id(conn)) {
char *lname;
struct stat sb;
memset(&sb, 0, sizeof(sb));
attrib_to_stat(&d[n]->a, &sb);
lname = ls_file(fname, &sb, 1,
- (lflag & LS_SI_UNITS));
+ (lflag & LS_SI_UNITS),
+ ruser_name(sb.st_uid),
+ rgroup_name(sb.st_gid));
mprintf("%s\n", lname);
free(lname);
} else
@@ -989,6 +1022,7 @@ do_globbed_ls(struct sftp_conn *conn, const char *path,
sort_glob = NULL;
}
+ get_remote_user_groups_from_glob(conn, &g);
for (j = 0; j < nentries && !interrupted; j++) {
i = indices[j];
fname = path_strip(g.gl_pathv[i], strip_path);
@@ -998,7 +1032,9 @@ do_globbed_ls(struct sftp_conn *conn, const char *path,
continue;
}
lname = ls_file(fname, g.gl_statv[i], 1,
- (lflag & LS_SI_UNITS));
+ (lflag & LS_SI_UNITS),
+ ruser_name(g.gl_statv[i]->st_uid),
+ rgroup_name(g.gl_statv[i]->st_gid));
mprintf("%s\n", lname);
free(lname);
} else {
@@ -1565,7 +1601,7 @@ parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd,
err = (sflag ? do_symlink : do_hardlink)(conn, path1, path2);
break;
case I_RM:
- path1 = make_absolute(path1, *pwd);
+ path1 = make_absolute_pwd_glob(path1, *pwd);
remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g);
for (i = 0; g.gl_pathv[i] && !interrupted; i++) {
if (!quiet)
@@ -1626,7 +1662,7 @@ parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd,
if (!path_absolute(path1))
tmp = *pwd;
- path1 = make_absolute(path1, *pwd);
+ path1 = make_absolute_pwd_glob(path1, *pwd);
err = do_globbed_ls(conn, path1, tmp, lflag);
break;
case I_DF:
@@ -1666,7 +1702,7 @@ parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd,
printf("Local umask: %03lo\n", n_arg);
break;
case I_CHMOD:
- path1 = make_absolute(path1, *pwd);
+ path1 = make_absolute_pwd_glob(path1, *pwd);
attrib_clear(&a);
a.flags |= SSH2_FILEXFER_ATTR_PERMISSIONS;
a.perm = n_arg;
@@ -1683,7 +1719,7 @@ parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd,
break;
case I_CHOWN:
case I_CHGRP:
- path1 = make_absolute(path1, *pwd);
+ path1 = make_absolute_pwd_glob(path1, *pwd);
remote_glob(conn, path1, GLOB_NOCHECK, NULL, &g);
for (i = 0; g.gl_pathv[i] && !interrupted; i++) {
if (!(aa = (hflag ? do_lstat : do_stat)(conn,
@@ -1918,19 +1954,25 @@ complete_cmd_parse(EditLine *el, char *cmd, int lastarg, char quote,
}
/*
- * Determine whether a particular sftp command's arguments (if any)
- * represent local or remote files.
+ * Determine whether a particular sftp command's arguments (if any) represent
+ * local or remote files. The "cmdarg" argument specifies the actual argument
+ * and accepts values 1 or 2.
*/
static int
-complete_is_remote(char *cmd) {
+complete_is_remote(char *cmd, int cmdarg) {
int i;
if (cmd == NULL)
return -1;
for (i = 0; cmds[i].c; i++) {
- if (!strncasecmp(cmd, cmds[i].c, strlen(cmds[i].c)))
- return cmds[i].t;
+ if (!strncasecmp(cmd, cmds[i].c, strlen(cmds[i].c))) {
+ if (cmdarg == 1)
+ return cmds[i].t;
+ else if (cmdarg == 2)
+ return cmds[i].t2;
+ break;
+ }
}
return -1;
@@ -1958,7 +2000,7 @@ complete_match(EditLine *el, struct sftp_conn *conn, char *remote_path,
memset(&g, 0, sizeof(g));
if (remote != LOCAL) {
- tmp = make_absolute(tmp, remote_path);
+ tmp = make_absolute_pwd_glob(tmp, remote_path);
remote_glob(conn, tmp, GLOB_DOOFFS|GLOB_MARK, NULL, &g);
} else
glob(tmp, GLOB_DOOFFS|GLOB_MARK, NULL, &g);
@@ -2110,13 +2152,29 @@ complete(EditLine *el, int ch)
ret = CC_REDISPLAY;
} else if (carg >= 1) {
/* Handle file parsing */
- int remote = complete_is_remote(argv[0]);
+ int remote = 0;
+ int i = 0, cmdarg = 0;
char *filematch = NULL;
if (carg > 1 && line[cursor-1] != ' ')
filematch = argv[carg - 1];
- if (remote != 0 &&
+ for (i = 1; i < carg; i++) {
+ /* Skip flags */
+ if (argv[i][0] != '-')
+ cmdarg++;
+ }
+
+ /*
+ * If previous argument is complete, then offer completion
+ * on the next one.
+ */
+ if (line[cursor - 1] == ' ')
+ cmdarg++;
+
+ remote = complete_is_remote(argv[0], cmdarg);
+
+ if ((remote == REMOTE || remote == LOCAL) &&
complete_match(el, complete_ctx->conn,
*complete_ctx->remote_pathp, filematch,
remote, carg == argc, quote, terminated) != 0)
@@ -2349,7 +2407,7 @@ usage(void)
fprintf(stderr,
"usage: %s [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]\n"
- " [-D sftp_server_path] [-F ssh_config] [-i identity_file]\n"
+ " [-D sftp_server_command] [-F ssh_config] [-i identity_file]\n"
" [-J destination] [-l limit] [-o ssh_option] [-P port]\n"
" [-R num_requests] [-S program] [-s subsystem | sftp_server]\n"
" destination\n",
@@ -2360,8 +2418,8 @@ usage(void)
int
main(int argc, char **argv)
{
- int in, out, ch, err, tmp, port = -1, noisy = 0;
- char *host = NULL, *user, *cp, *file2 = NULL;
+ int r, in, out, ch, err, tmp, port = -1, noisy = 0;
+ char *host = NULL, *user, *cp, **cpp, *file2 = NULL;
int debug_level = 0;
char *file1 = NULL, *sftp_server = NULL;
char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL;
@@ -2379,8 +2437,6 @@ main(int argc, char **argv)
sanitise_stdfd();
msetlocale();
- seed_rng();
-
__progname = ssh_get_progname(argv[0]);
memset(&args, '\0', sizeof(args));
args.list = NULL;
@@ -2559,10 +2615,12 @@ main(int argc, char **argv)
connect_to_server(ssh_program, args.list, &in, &out);
} else {
- args.list = NULL;
- addargs(&args, "sftp-server");
-
- connect_to_server(sftp_direct, args.list, &in, &out);
+ if ((r = argv_split(sftp_direct, &tmp, &cpp, 1)) != 0)
+ fatal_r(r, "Parse -D arguments");
+ if (cpp[0] == 0)
+ fatal("No sftp server specified via -D");
+ connect_to_server(cpp[0], cpp, &in, &out);
+ argv_free(cpp, tmp);
}
freeargs(&args);
diff --git a/sk-api.h b/sk-api.h
index 34e110b4e320..08f567a9e271 100644
--- a/sk-api.h
+++ b/sk-api.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sk-api.h,v 1.14 2021/11/02 22:56:40 djm Exp $ */
+/* $OpenBSD: sk-api.h,v 1.15 2022/07/20 03:29:14 djm Exp $ */
/*
* Copyright (c) 2019 Google LLC
*
@@ -26,6 +26,7 @@
/* Flags */
#define SSH_SK_USER_PRESENCE_REQD 0x01
#define SSH_SK_USER_VERIFICATION_REQD 0x04
+#define SSH_SK_FORCE_OPERATION 0x10
#define SSH_SK_RESIDENT_KEY 0x20
/* Algs */
@@ -37,6 +38,7 @@
#define SSH_SK_ERR_UNSUPPORTED -2
#define SSH_SK_ERR_PIN_REQUIRED -3
#define SSH_SK_ERR_DEVICE_NOT_FOUND -4
+#define SSH_SK_ERR_CREDENTIAL_EXISTS -5
struct sk_enroll_response {
uint8_t flags;
@@ -77,7 +79,7 @@ struct sk_option {
uint8_t required;
};
-#define SSH_SK_VERSION_MAJOR 0x00090000 /* current API version */
+#define SSH_SK_VERSION_MAJOR 0x000a0000 /* current API version */
#define SSH_SK_VERSION_MAJOR_MASK 0xffff0000
/* Return the version of the middleware API */
diff --git a/sk-usbhid.c b/sk-usbhid.c
index 2d36ac337ffa..46e09c26cc2b 100644
--- a/sk-usbhid.c
+++ b/sk-usbhid.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sk-usbhid.c,v 1.38 2022/02/07 01:25:12 djm Exp $ */
+/* $OpenBSD: sk-usbhid.c,v 1.45 2022/09/14 00:14:37 djm Exp $ */
/*
* Copyright (c) 2019 Markus Friedl
* Copyright (c) 2020 Pedro Martelletto
@@ -381,6 +381,14 @@ fido_assert_set_clientdata(fido_assert_t *assert, const u_char *ptr, size_t len)
}
#endif /* HAVE_FIDO_ASSERT_SET_CLIENTDATA */
+#ifndef HAVE_FIDO_DEV_IS_WINHELLO
+static bool
+fido_dev_is_winhello(const fido_dev_t *fdev)
+{
+ return 0;
+}
+#endif /* HAVE_FIDO_DEV_IS_WINHELLO */
+
/* Check if the specified key handle exists on a given sk. */
static int
sk_try(const struct sk_usbhid *sk, const char *application,
@@ -398,7 +406,7 @@ sk_try(const struct sk_usbhid *sk, const char *application,
/* generate an invalid signature on FIDO2 tokens */
if ((r = fido_assert_set_clientdata(assert, message,
sizeof(message))) != FIDO_OK) {
- skdebug(__func__, "fido_assert_set_clientdata_hash: %s",
+ skdebug(__func__, "fido_assert_set_clientdata: %s",
fido_strerr(r));
goto out;
}
@@ -556,13 +564,17 @@ out:
static struct sk_usbhid *
sk_probe(const char *application, const uint8_t *key_handle,
- size_t key_handle_len)
+ size_t key_handle_len, int probe_resident)
{
struct sk_usbhid *sk;
fido_dev_info_t *devlist;
size_t ndevs;
int r;
+#ifdef HAVE_CYGWIN
+ if (!probe_resident && (sk = sk_open("windows://hello")) != NULL)
+ return sk;
+#endif /* HAVE_CYGWIN */
if ((devlist = fido_dev_info_new(MAX_FIDO_DEVICES)) == NULL) {
skdebug(__func__, "fido_dev_info_new failed");
return NULL;
@@ -764,6 +776,65 @@ check_enroll_options(struct sk_option **options, char **devicep,
return 0;
}
+static int
+key_lookup(fido_dev_t *dev, const char *application, const uint8_t *user_id,
+ size_t user_id_len, const char *pin)
+{
+ fido_assert_t *assert = NULL;
+ uint8_t message[32];
+ int r = FIDO_ERR_INTERNAL;
+ int sk_supports_uv, uv;
+ size_t i;
+
+ memset(message, '\0', sizeof(message));
+ if ((assert = fido_assert_new()) == NULL) {
+ skdebug(__func__, "fido_assert_new failed");
+ goto out;
+ }
+ /* generate an invalid signature on FIDO2 tokens */
+ if ((r = fido_assert_set_clientdata(assert, message,
+ sizeof(message))) != FIDO_OK) {
+ skdebug(__func__, "fido_assert_set_clientdata: %s",
+ fido_strerr(r));
+ goto out;
+ }
+ if ((r = fido_assert_set_rp(assert, application)) != FIDO_OK) {
+ skdebug(__func__, "fido_assert_set_rp: %s", fido_strerr(r));
+ goto out;
+ }
+ if ((r = fido_assert_set_up(assert, FIDO_OPT_FALSE)) != FIDO_OK) {
+ skdebug(__func__, "fido_assert_set_up: %s", fido_strerr(r));
+ goto out;
+ }
+ uv = FIDO_OPT_OMIT;
+ if (pin == NULL && check_sk_options(dev, "uv", &sk_supports_uv) == 0 &&
+ sk_supports_uv != -1)
+ uv = FIDO_OPT_TRUE;
+ if ((r = fido_assert_set_uv(assert, uv)) != FIDO_OK) {
+ skdebug(__func__, "fido_assert_set_uv: %s", fido_strerr(r));
+ goto out;
+ }
+ if ((r = fido_dev_get_assert(dev, assert, pin)) != FIDO_OK) {
+ skdebug(__func__, "fido_dev_get_assert: %s", fido_strerr(r));
+ goto out;
+ }
+ r = FIDO_ERR_NO_CREDENTIALS;
+ skdebug(__func__, "%zu signatures returned", fido_assert_count(assert));
+ for (i = 0; i < fido_assert_count(assert); i++) {
+ if (fido_assert_user_id_len(assert, i) == user_id_len &&
+ memcmp(fido_assert_user_id_ptr(assert, i), user_id,
+ user_id_len) == 0) {
+ skdebug(__func__, "credential exists");
+ r = FIDO_OK;
+ goto out;
+ }
+ }
+ out:
+ fido_assert_free(&assert);
+
+ return r;
+}
+
int
sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
const char *application, uint8_t flags, const char *pin,
@@ -776,7 +847,6 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
struct sk_enroll_response *response = NULL;
size_t len;
int credprot;
- int internal_uv;
int cose_alg;
int ret = SSH_SK_ERR_GENERAL;
int r;
@@ -810,13 +880,26 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
if (device != NULL)
sk = sk_open(device);
else
- sk = sk_probe(NULL, NULL, 0);
+ sk = sk_probe(NULL, NULL, 0, 0);
if (sk == NULL) {
ret = SSH_SK_ERR_DEVICE_NOT_FOUND;
skdebug(__func__, "failed to find sk");
goto out;
}
skdebug(__func__, "using device %s", sk->path);
+ if ((flags & SSH_SK_RESIDENT_KEY) != 0 &&
+ (flags & SSH_SK_FORCE_OPERATION) == 0 &&
+ (r = key_lookup(sk->dev, application, user_id, sizeof(user_id),
+ pin)) != FIDO_ERR_NO_CREDENTIALS) {
+ if (r != FIDO_OK) {
+ ret = fidoerr_to_skerr(r);
+ skdebug(__func__, "key_lookup failed");
+ } else {
+ ret = SSH_SK_ERR_CREDENTIAL_EXISTS;
+ skdebug(__func__, "key exists");
+ }
+ goto out;
+ }
if ((cred = fido_cred_new()) == NULL) {
skdebug(__func__, "fido_cred_new failed");
goto out;
@@ -896,13 +979,6 @@ sk_enroll(uint32_t alg, const uint8_t *challenge, size_t challenge_len,
goto out;
}
response->flags = flags;
- if ((flags & SSH_SK_USER_VERIFICATION_REQD)) {
- if (check_sk_options(sk->dev, "uv", &internal_uv) == 0 &&
- internal_uv != -1) {
- /* user verification handled by token */
- response->flags &= ~SSH_SK_USER_VERIFICATION_REQD;
- }
- }
if (pack_public_key(alg, cred, response) != 0) {
skdebug(__func__, "pack_public_key failed");
goto out;
@@ -1099,9 +1175,9 @@ sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
if (device != NULL)
sk = sk_open(device);
else if (pin != NULL || (flags & SSH_SK_USER_VERIFICATION_REQD))
- sk = sk_probe(NULL, NULL, 0);
+ sk = sk_probe(NULL, NULL, 0, 0);
else
- sk = sk_probe(application, key_handle, key_handle_len);
+ sk = sk_probe(application, key_handle, key_handle_len, 0);
if (sk == NULL) {
ret = SSH_SK_ERR_DEVICE_NOT_FOUND;
skdebug(__func__, "failed to find sk");
@@ -1132,6 +1208,14 @@ sk_sign(uint32_t alg, const uint8_t *data, size_t datalen,
skdebug(__func__, "fido_assert_set_up: %s", fido_strerr(r));
goto out;
}
+ /*
+ * WinHello requests the PIN by default. Make "uv" request explicit
+ * to allow keys with and without -O verify-required to make sense.
+ */
+ if (pin == NULL && fido_dev_is_winhello (sk->dev) &&
+ (r = fido_assert_set_uv(assert, FIDO_OPT_FALSE)) != FIDO_OK) {
+ skdebug(__func__, "fido_assert_set_uv: %s", fido_strerr(r));
+ }
if (pin == NULL && (flags & SSH_SK_USER_VERIFICATION_REQD)) {
if (check_sk_options(sk->dev, "uv", &internal_uv) < 0 ||
internal_uv != 1) {
@@ -1365,7 +1449,7 @@ sk_load_resident_keys(const char *pin, struct sk_option **options,
if (device != NULL)
sk = sk_open(device);
else
- sk = sk_probe(NULL, NULL, 0);
+ sk = sk_probe(NULL, NULL, 0, 1);
if (sk == NULL) {
ret = SSH_SK_ERR_DEVICE_NOT_FOUND;
skdebug(__func__, "failed to find sk");
@@ -1393,6 +1477,7 @@ sk_load_resident_keys(const char *pin, struct sk_option **options,
freezero(rks[i]->user_id, rks[i]->user_id_len);
freezero(rks[i], sizeof(*rks[i]));
}
+ free(device);
free(rks);
return ret;
}
diff --git a/ssh-add.0 b/ssh-add.0
index fc2836b93d0c..583aa6fd0b04 100644
--- a/ssh-add.0
+++ b/ssh-add.0
@@ -200,4 +200,4 @@ AUTHORS
created OpenSSH. Markus Friedl contributed the support for SSH protocol
versions 1.5 and 2.0.
-OpenBSD 7.0 February 4, 2022 OpenBSD 7.0
+OpenBSD 7.1 February 4, 2022 OpenBSD 7.1
diff --git a/ssh-add.c b/ssh-add.c
index 755547748276..777f21e26b01 100644
--- a/ssh-add.c
+++ b/ssh-add.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-add.c,v 1.165 2022/02/04 02:49:17 dtucker Exp $ */
+/* $OpenBSD: ssh-add.c,v 1.166 2022/06/18 02:17:16 dtucker Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -125,7 +125,7 @@ delete_one(int agent_fd, const struct sshkey *key, const char *comment,
}
if (!qflag) {
fprintf(stderr, "Identity removed: %s %s (%s)\n", path,
- sshkey_type(key), comment);
+ sshkey_type(key), comment ? comment : "no comment");
}
return 0;
}
@@ -399,7 +399,7 @@ add_file(int agent_fd, const char *filename, int key_only, int qflag,
certpath, filename);
sshkey_free(cert);
goto out;
- }
+ }
/* Graft with private bits */
if ((r = sshkey_to_certified(private)) != 0) {
diff --git a/ssh-agent.0 b/ssh-agent.0
index 80bb9d890dbf..80665b7220d8 100644
--- a/ssh-agent.0
+++ b/ssh-agent.0
@@ -116,4 +116,4 @@ AUTHORS
created OpenSSH. Markus Friedl contributed the support for SSH protocol
versions 1.5 and 2.0.
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 March 31, 2022 OpenBSD 7.1
diff --git a/ssh-agent.c b/ssh-agent.c
index 03ae2b022eed..006ddad94ae1 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-agent.c,v 1.287 2022/01/14 03:43:48 djm Exp $ */
+/* $OpenBSD: ssh-agent.c,v 1.292 2022/09/17 10:11:29 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -808,21 +808,13 @@ process_sign_request2(SocketEntry *e)
goto send;
}
if (sshkey_is_sk(id->key)) {
- if (strncmp(id->key->sk_application, "ssh:", 4) != 0 &&
+ if (restrict_websafe &&
+ strncmp(id->key->sk_application, "ssh:", 4) != 0 &&
!check_websafe_message_contents(key, data)) {
/* error already logged */
goto send;
}
- if ((id->key->sk_flags & SSH_SK_USER_VERIFICATION_REQD)) {
- /* XXX include sig_dest */
- xasprintf(&prompt, "Enter PIN%sfor %s key %s: ",
- (id->key->sk_flags & SSH_SK_USER_PRESENCE_REQD) ?
- " and confirm user presence " : " ",
- sshkey_type(id->key), fp);
- pin = read_passphrase(prompt, RP_USE_ASKPASS);
- free(prompt);
- prompt = NULL;
- } else if ((id->key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) {
+ if (id->key->sk_flags & SSH_SK_USER_PRESENCE_REQD) {
notifier = notify_start(0,
"Confirm user presence for key %s %s%s%s",
sshkey_type(id->key), fp,
@@ -837,10 +829,8 @@ process_sign_request2(SocketEntry *e)
debug_fr(r, "sshkey_sign");
if (pin == NULL && !retried && sshkey_is_sk(id->key) &&
r == SSH_ERR_KEY_WRONG_PASSPHRASE) {
- if (notifier) {
- notify_complete(notifier, NULL);
- notifier = NULL;
- }
+ notify_complete(notifier, NULL);
+ notifier = NULL;
/* XXX include sig_dest */
xasprintf(&prompt, "Enter PIN%sfor %s key %s: ",
(id->key->sk_flags & SSH_SK_USER_PRESENCE_REQD) ?
@@ -856,6 +846,7 @@ process_sign_request2(SocketEntry *e)
/* Success */
ok = 0;
send:
+ debug_f("good signature");
notify_complete(notifier, "User presence confirmed");
if (ok == 0) {
@@ -1570,6 +1561,7 @@ process_ext_session_bind(SocketEntry *e)
/* success */
r = 0;
out:
+ free(fp);
sshkey_free(key);
sshbuf_free(sid);
sshbuf_free(sig);
diff --git a/ssh-ed25519.c b/ssh-ed25519.c
index 23419f3c884a..4861628cb524 100644
--- a/ssh-ed25519.c
+++ b/ssh-ed25519.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-ed25519.c,v 1.9 2020/10/18 11:32:02 djm Exp $ */
+/* $OpenBSD: ssh-ed25519.c,v 1.10 2022/08/26 08:12:56 djm Exp $ */
/*
* Copyright (c) 2013 Markus Friedl <markus@openbsd.org>
*
@@ -83,7 +83,7 @@ ssh_ed25519_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,
r = 0;
out:
sshbuf_free(b);
- if (sig != NULL)
+ if (sig != NULL)
freezero(sig, slen);
return r;
@@ -150,9 +150,9 @@ ssh_ed25519_verify(const struct sshkey *key,
/* success */
r = 0;
out:
- if (sm != NULL)
+ if (sm != NULL)
freezero(sm, smlen);
- if (m != NULL)
+ if (m != NULL)
freezero(m, smlen); /* NB mlen may be invalid if r != 0 */
sshbuf_free(b);
free(ktype);
diff --git a/ssh-keygen.0 b/ssh-keygen.0
index f81493770585..d171715234a6 100644
--- a/ssh-keygen.0
+++ b/ssh-keygen.0
@@ -96,13 +96,13 @@ DESCRIPTION
The options are as follows:
- -A For each of the key types (rsa, dsa, ecdsa and ed25519) for which
- host keys do not exist, generate the host keys with the default
- key file path, an empty passphrase, default bits for the key
- type, and default comment. If -f has also been specified, its
- argument is used as a prefix to the default path for the
- resulting host key files. This is used by /etc/rc to generate
- new host keys.
+ -A Generate host keys of all default key types (rsa, ecdsa, and
+ ed25519) if they do not already exist. The host keys are
+ generated with the default key file path, an empty passphrase,
+ default bits for the key type, and default comment. If -f has
+ also been specified, its argument is used as a prefix to the
+ default path for the resulting host key files. This is used by
+ /etc/rc to generate new host keys.
-a rounds
When saving a private key, this option specifies the number of
@@ -189,7 +189,8 @@ DESCRIPTION
private key files will be written to the current directory for
each downloaded key. If multiple FIDO authenticators are
attached, keys will be downloaded from the first touched
- authenticator.
+ authenticator. See the FIDO AUTHENTICATOR section for more
+ information.
-k Generate a KRL file. In this mode, ssh-keygen will generate a
KRL file at the location specified via the -f flag that revokes
@@ -253,57 +254,8 @@ DESCRIPTION
When performing moduli generation or screening, one of the
options listed in the MODULI GENERATION section may be specified.
- When generating a key that will be hosted on a FIDO
- authenticator, this flag may be used to specify key-specific
- options. Those supported at present are:
-
- application
- Override the default FIDO application/origin string of
- M-bM-^@M-^\ssh:M-bM-^@M-^]. This may be useful when generating host or
- domain-specific resident keys. The specified application
- string must begin with M-bM-^@M-^\ssh:M-bM-^@M-^].
-
- challenge=path
- Specifies a path to a challenge string that will be
- passed to the FIDO token during key generation. The
- challenge string may be used as part of an out-of-band
- protocol for key enrollment (a random challenge is used
- by default).
-
- device Explicitly specify a fido(4) device to use, rather than
- letting the token middleware select one.
-
- no-touch-required
- Indicate that the generated private key should not
- require touch events (user presence) when making
- signatures. Note that sshd(8) will refuse such
- signatures by default, unless overridden via an
- authorized_keys option.
-
- resident
- Indicate that the key should be stored on the FIDO
- authenticator itself. Resident keys may be supported on
- FIDO2 tokens and typically require that a PIN be set on
- the token prior to generation. Resident keys may be
- loaded off the token using ssh-add(1).
-
- user A username to be associated with a resident key,
- overriding the empty default username. Specifying a
- username may be useful when generating multiple resident
- keys for the same application name.
-
- verify-required
- Indicate that this private key should require user
- verification for each signature. Not all FIDO tokens
- support this option. Currently PIN authentication is the
- only supported verification method, but other methods may
- be supported in the future.
-
- write-attestation=path
- May be used at key generation time to record the
- attestation data returned from FIDO tokens during key
- generation. This information is potentially sensitive.
- By default, this information is discarded.
+ When generating FIDO authenticator-backed keys, the options
+ listed in the FIDO AUTHENTICATOR section may be specified.
When performing signature-related options using the -Y flag, the
following options are accepted:
@@ -320,8 +272,11 @@ DESCRIPTION
verify-time=timestamp
Specifies a time to use when validating signatures
instead of the current time. The time may be specified
- as a date in YYYYMMDD format or a time in
- YYYYMMDDHHMM[SS] format.
+ as a date or time in the YYYYMMDD[Z] or in
+ YYYYMMDDHHMM[SS][Z] formats. Dates and times will be
+ interpreted in the current system time zone unless
+ suffixed with a Z character, which causes them to be
+ interpreted in the UTC time zone.
The -O option may be specified multiple times.
@@ -364,9 +319,9 @@ DESCRIPTION
signature variants are M-bM-^@M-^\ssh-rsaM-bM-^@M-^] (SHA1 signatures, not
recommended), M-bM-^@M-^\rsa-sha2-256M-bM-^@M-^], and M-bM-^@M-^\rsa-sha2-512M-bM-^@M-^] (the default).
- -U When used in combination with -s, this option indicates that a CA
- key resides in a ssh-agent(1). See the CERTIFICATES section for
- more information.
+ -U When used in combination with -s or -Y sign, this option
+ indicates that a CA key resides in a ssh-agent(1). See the
+ CERTIFICATES section for more information.
-u Update a KRL. When specified with -k, keys listed via the
command line are added to the existing KRL rather than a new KRL
@@ -379,24 +334,55 @@ DESCRIPTION
or may consist of two times separated by a colon to indicate an
explicit time interval.
- The start time may be specified as the string M-bM-^@M-^\alwaysM-bM-^@M-^] to
- indicate the certificate has no specified start time, a date in
- YYYYMMDD format, a time in YYYYMMDDHHMM[SS] format, a relative
- time (to the current time) consisting of a minus sign followed by
- an interval in the format described in the TIME FORMATS section
- of sshd_config(5).
-
- The end time may be specified as a YYYYMMDD date, a
- YYYYMMDDHHMM[SS] time, a relative time starting with a plus
- character or the string M-bM-^@M-^\foreverM-bM-^@M-^] to indicate that the
- certificate has no expiry date.
-
- For example: M-bM-^@M-^\+52w1dM-bM-^@M-^] (valid from now to 52 weeks and one day
- from now), M-bM-^@M-^\-4w:+4wM-bM-^@M-^] (valid from four weeks ago to four weeks
- from now), M-bM-^@M-^\20100101123000:20110101123000M-bM-^@M-^] (valid from 12:30 PM,
- January 1st, 2010 to 12:30 PM, January 1st, 2011), M-bM-^@M-^\-1d:20110101M-bM-^@M-^]
- (valid from yesterday to midnight, January 1st, 2011),
- M-bM-^@M-^\-1m:foreverM-bM-^@M-^] (valid from one minute ago and never expiring).
+ The start time may be specified as:
+ M-bM-^@M-M-bM-^@M-" The string M-bM-^@M-^\alwaysM-bM-^@M-^] to indicate the certificate has no
+ specified start time.
+ M-bM-^@M-M-bM-^@M-" A date or time in the system time zone formatted as YYYYMMDD
+ or YYYYMMDDHHMM[SS].
+ M-bM-^@M-M-bM-^@M-" A date or time in the UTC time zone as YYYYMMDDZ or
+ YYYYMMDDHHMM[SS]Z.
+ M-bM-^@M-M-bM-^@M-" A relative time before the current system time consisting of
+ a minus sign followed by an interval in the format described
+ in the TIME FORMATS section of sshd_config(5).
+ M-bM-^@M-M-bM-^@M-" A raw seconds since epoch (Jan 1 1970 00:00:00 UTC) as a
+ hexadecimal number beginning with M-bM-^@M-^\0xM-bM-^@M-^].
+
+ The end time may be specified similarly to the start time:
+ M-bM-^@M-M-bM-^@M-" The string M-bM-^@M-^\foreverM-bM-^@M-^] to indicate the certificate has no
+ specified end time.
+ M-bM-^@M-M-bM-^@M-" A date or time in the system time zone formatted as YYYYMMDD
+ or YYYYMMDDHHMM[SS].
+ M-bM-^@M-M-bM-^@M-" A date or time in the UTC time zone as YYYYMMDDZ or
+ YYYYMMDDHHMM[SS]Z.
+ M-bM-^@M-M-bM-^@M-" A relative time after the current system time consisting of a
+ plus sign followed by an interval in the format described in
+ the TIME FORMATS section of sshd_config(5).
+ M-bM-^@M-M-bM-^@M-" A raw seconds since epoch (Jan 1 1970 00:00:00 UTC) as a
+ hexadecimal number beginning with M-bM-^@M-^\0xM-bM-^@M-^].
+
+ For example:
+
+ +52w1d Valid from now to 52 weeks and one day from now.
+
+ -4w:+4w
+ Valid from four weeks ago to four weeks from now.
+
+ 20100101123000:20110101123000
+ Valid from 12:30 PM, January 1st, 2010 to 12:30 PM,
+ January 1st, 2011.
+
+ 20100101123000Z:20110101123000Z
+ Similar, but interpreted in the UTC time zone rather than
+ the system time zone.
+
+ -1d:20110101
+ Valid from yesterday to midnight, January 1st, 2011.
+
+ 0x1:0x2000000000
+ Valid from roughly early 1970 to May 2033.
+
+ -1m:forever
+ Valid from one minute ago and never expiring.
-v Verbose mode. Causes ssh-keygen to print debugging messages
about its progress. This is helpful for debugging moduli
@@ -678,6 +664,70 @@ CERTIFICATES
public key must be trusted by sshd(8) or ssh(1). Refer to those manual
pages for details.
+FIDO AUTHENTICATOR
+ ssh-keygen is able to generate FIDO authenticator-backed keys, after
+ which they may be used much like any other key type supported by OpenSSH,
+ so long as the hardware authenticator is attached when the keys are used.
+ FIDO authenticators generally require the user to explicitly authorise
+ operations by touching or tapping them. FIDO keys consist of two parts:
+ a key handle part stored in the private key file on disk, and a per-
+ device private key that is unique to each FIDO authenticator and that
+ cannot be exported from the authenticator hardware. These are combined
+ by the hardware at authentication time to derive the real key that is
+ used to sign authentication challenges. Supported key types are ecdsa-sk
+ and ed25519-sk.
+
+ The options that are valid for FIDO keys are:
+
+ application
+ Override the default FIDO application/origin string of M-bM-^@M-^\ssh:M-bM-^@M-^].
+ This may be useful when generating host or domain-specific
+ resident keys. The specified application string must begin with
+ M-bM-^@M-^\ssh:M-bM-^@M-^].
+
+ challenge=path
+ Specifies a path to a challenge string that will be passed to the
+ FIDO authenticator during key generation. The challenge string
+ may be used as part of an out-of-band protocol for key enrollment
+ (a random challenge is used by default).
+
+ device Explicitly specify a fido(4) device to use, rather than letting
+ the authenticator middleware select one.
+
+ no-touch-required
+ Indicate that the generated private key should not require touch
+ events (user presence) when making signatures. Note that sshd(8)
+ will refuse such signatures by default, unless overridden via an
+ authorized_keys option.
+
+ resident
+ Indicate that the key handle should be stored on the FIDO
+ authenticator itself. This makes it easier to use the
+ authenticator on multiple computers. Resident keys may be
+ supported on FIDO2 authenticators and typically require that a
+ PIN be set on the authenticator prior to generation. Resident
+ keys may be loaded off the authenticator using ssh-add(1).
+ Storing both parts of a key on a FIDO authenticator increases the
+ likelihood of an attacker being able to use a stolen
+ authenticator device.
+
+ user A username to be associated with a resident key, overriding the
+ empty default username. Specifying a username may be useful when
+ generating multiple resident keys for the same application name.
+
+ verify-required
+ Indicate that this private key should require user verification
+ for each signature. Not all FIDO authenticators support this
+ option. Currently PIN authentication is the only supported
+ verification method, but other methods may be supported in the
+ future.
+
+ write-attestation=path
+ May be used at key generation time to record the attestation data
+ returned from FIDO authenticators during key generation. This
+ information is potentially sensitive. By default, this
+ information is discarded.
+
KEY REVOCATION LISTS
ssh-keygen is able to manage OpenSSH format Key Revocation Lists (KRLs).
These binary files specify keys or certificates to be revoked using a
@@ -774,8 +824,11 @@ ALLOWED SIGNERS
valid-after=timestamp
Indicates that the key is valid for use at or after the specified
- timestamp, which may be a date in YYYYMMDD format or a time in
- YYYYMMDDHHMM[SS] format.
+ timestamp, which may be a date or time in the YYYYMMDD[Z] or
+ YYYYMMDDHHMM[SS][Z] formats. Dates and times will be interpreted
+ in the current system time zone unless suffixed with a Z
+ character, which causes them to be interpreted in the UTC time
+ zone.
valid-before=timestamp
Indicates that the key is valid for use at or before the
@@ -846,4 +899,4 @@ AUTHORS
created OpenSSH. Markus Friedl contributed the support for SSH protocol
versions 1.5 and 2.0.
-OpenBSD 7.0 February 6, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 10, 2022 OpenBSD 7.1
diff --git a/ssh-keygen.1 b/ssh-keygen.1
index 59b7f23a1fa5..8b1f617d2377 100644
--- a/ssh-keygen.1
+++ b/ssh-keygen.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: ssh-keygen.1,v 1.220 2022/02/06 00:29:03 jsg Exp $
+.\" $OpenBSD: ssh-keygen.1,v 1.226 2022/09/10 08:50:53 jsg Exp $
.\"
.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: February 6 2022 $
+.Dd $Mdocdate: September 10 2022 $
.Dt SSH-KEYGEN 1
.Os
.Sh NAME
@@ -271,9 +271,9 @@ should be placed to be activated.
The options are as follows:
.Bl -tag -width Ds
.It Fl A
-For each of the key types (rsa, dsa, ecdsa and ed25519)
-for which host keys
-do not exist, generate the host keys with the default key file path,
+Generate host keys of all default key types (rsa, ecdsa, and
+ed25519) if they do not already exist.
+The host keys are generated with the default key file path,
an empty passphrase, default bits for the key type, and default comment.
If
.Fl f
@@ -396,6 +396,9 @@ Public and private key files will be written to the current directory for
each downloaded key.
If multiple FIDO authenticators are attached, keys will be downloaded from
the first touched authenticator.
+See the
+.Sx FIDO AUTHENTICATOR
+section for more information.
.It Fl k
Generate a KRL file.
In this mode,
@@ -487,56 +490,9 @@ listed in the
.Sx MODULI GENERATION
section may be specified.
.Pp
-When generating a key that will be hosted on a FIDO authenticator,
-this flag may be used to specify key-specific options.
-Those supported at present are:
-.Bl -tag -width Ds
-.It Cm application
-Override the default FIDO application/origin string of
-.Dq ssh: .
-This may be useful when generating host or domain-specific resident keys.
-The specified application string must begin with
-.Dq ssh: .
-.It Cm challenge Ns = Ns Ar path
-Specifies a path to a challenge string that will be passed to the
-FIDO token during key generation.
-The challenge string may be used as part of an out-of-band
-protocol for key enrollment
-(a random challenge is used by default).
-.It Cm device
-Explicitly specify a
-.Xr fido 4
-device to use, rather than letting the token middleware select one.
-.It Cm no-touch-required
-Indicate that the generated private key should not require touch
-events (user presence) when making signatures.
-Note that
-.Xr sshd 8
-will refuse such signatures by default, unless overridden via
-an authorized_keys option.
-.It Cm resident
-Indicate that the key should be stored on the FIDO authenticator itself.
-Resident keys may be supported on FIDO2 tokens and typically require that
-a PIN be set on the token prior to generation.
-Resident keys may be loaded off the token using
-.Xr ssh-add 1 .
-.It Cm user
-A username to be associated with a resident key,
-overriding the empty default username.
-Specifying a username may be useful when generating multiple resident keys
-for the same application name.
-.It Cm verify-required
-Indicate that this private key should require user verification for
-each signature.
-Not all FIDO tokens support this option.
-Currently PIN authentication is the only supported verification method,
-but other methods may be supported in the future.
-.It Cm write-attestation Ns = Ns Ar path
-May be used at key generation time to record the attestation data
-returned from FIDO tokens during key generation.
-This information is potentially sensitive.
-By default, this information is discarded.
-.El
+When generating FIDO authenticator-backed keys, the options listed in the
+.Sx FIDO AUTHENTICATOR
+section may be specified.
.Pp
When performing signature-related options using the
.Fl Y
@@ -555,8 +511,11 @@ Print the full public key to standard output after signature verification.
.It Cm verify-time Ns = Ns Ar timestamp
Specifies a time to use when validating signatures instead of the current
time.
-The time may be specified as a date in YYYYMMDD format or a time
-in YYYYMMDDHHMM[SS] format.
+The time may be specified as a date or time in the YYYYMMDD[Z] or
+in YYYYMMDDHHMM[SS][Z] formats.
+Dates and times will be interpreted in the current system time zone unless
+suffixed with a Z character, which causes them to be interpreted in the
+UTC time zone.
.El
.Pp
The
@@ -627,7 +586,9 @@ and
(the default).
.It Fl U
When used in combination with
-.Fl s ,
+.Fl s
+or
+.Fl Y Cm sign ,
this option indicates that a CA key resides in a
.Xr ssh-agent 1 .
See the
@@ -645,31 +606,67 @@ A validity interval may consist of a single time, indicating that the
certificate is valid beginning now and expiring at that time, or may consist
of two times separated by a colon to indicate an explicit time interval.
.Pp
-The start time may be specified as the string
+The start time may be specified as:
+.Bl -bullet -compact
+.It
+The string
.Dq always
-to indicate the certificate has no specified start time,
-a date in YYYYMMDD format, a time in YYYYMMDDHHMM[SS] format,
-a relative time (to the current time) consisting of a minus sign followed by
-an interval in the format described in the
+to indicate the certificate has no specified start time.
+.It
+A date or time in the system time zone formatted as YYYYMMDD or
+YYYYMMDDHHMM[SS].
+.It
+A date or time in the UTC time zone as YYYYMMDDZ or YYYYMMDDHHMM[SS]Z.
+.It
+A relative time before the current system time consisting of a minus sign
+followed by an interval in the format described in the
TIME FORMATS section of
.Xr sshd_config 5 .
+.It
+A raw seconds since epoch (Jan 1 1970 00:00:00 UTC) as a hexadecimal
+number beginning with
+.Dq 0x .
+.El
.Pp
-The end time may be specified as a YYYYMMDD date, a YYYYMMDDHHMM[SS] time,
-a relative time starting with a plus character or the string
+The end time may be specified similarly to the start time:
+.Bl -bullet -compact
+.It
+The string
.Dq forever
-to indicate that the certificate has no expiry date.
+to indicate the certificate has no specified end time.
+.It
+A date or time in the system time zone formatted as YYYYMMDD or
+YYYYMMDDHHMM[SS].
+.It
+A date or time in the UTC time zone as YYYYMMDDZ or YYYYMMDDHHMM[SS]Z.
+.It
+A relative time after the current system time consisting of a plus sign
+followed by an interval in the format described in the
+TIME FORMATS section of
+.Xr sshd_config 5 .
+.It
+A raw seconds since epoch (Jan 1 1970 00:00:00 UTC) as a hexadecimal
+number beginning with
+.Dq 0x .
+.El
.Pp
For example:
-.Dq +52w1d
-(valid from now to 52 weeks and one day from now),
-.Dq -4w:+4w
-(valid from four weeks ago to four weeks from now),
-.Dq 20100101123000:20110101123000
-(valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011),
-.Dq -1d:20110101
-(valid from yesterday to midnight, January 1st, 2011),
-.Dq -1m:forever
-(valid from one minute ago and never expiring).
+.Bl -tag -width Ds
+.It +52w1d
+Valid from now to 52 weeks and one day from now.
+.It -4w:+4w
+Valid from four weeks ago to four weeks from now.
+.It 20100101123000:20110101123000
+Valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011.
+.It 20100101123000Z:20110101123000Z
+Similar, but interpreted in the UTC time zone rather than the system time zone.
+.It -1d:20110101
+Valid from yesterday to midnight, January 1st, 2011.
+.It 0x1:0x2000000000
+Valid from roughly early 1970 to May 2033.
+.It -1m:forever
+Valid from one minute ago and never expiring.
+.El
.It Fl v
Verbose mode.
Causes
@@ -1060,6 +1057,76 @@ public key must be trusted by
or
.Xr ssh 1 .
Refer to those manual pages for details.
+.Sh FIDO AUTHENTICATOR
+.Nm
+is able to generate FIDO authenticator-backed keys, after which
+they may be used much like any other key type supported by OpenSSH, so
+long as the hardware authenticator is attached when the keys are used.
+FIDO authenticators generally require the user to explicitly authorise
+operations by touching or tapping them.
+FIDO keys consist of two parts: a key handle part stored in the
+private key file on disk, and a per-device private key that is unique
+to each FIDO authenticator and that cannot be exported from the
+authenticator hardware.
+These are combined by the hardware at authentication time to derive
+the real key that is used to sign authentication challenges.
+Supported key types are
+.Cm ecdsa-sk
+and
+.Cm ed25519-sk .
+.Pp
+The options that are valid for FIDO keys are:
+.Bl -tag -width Ds
+.It Cm application
+Override the default FIDO application/origin string of
+.Dq ssh: .
+This may be useful when generating host or domain-specific resident keys.
+The specified application string must begin with
+.Dq ssh: .
+.It Cm challenge Ns = Ns Ar path
+Specifies a path to a challenge string that will be passed to the
+FIDO authenticator during key generation.
+The challenge string may be used as part of an out-of-band
+protocol for key enrollment
+(a random challenge is used by default).
+.It Cm device
+Explicitly specify a
+.Xr fido 4
+device to use, rather than letting the authenticator middleware select one.
+.It Cm no-touch-required
+Indicate that the generated private key should not require touch
+events (user presence) when making signatures.
+Note that
+.Xr sshd 8
+will refuse such signatures by default, unless overridden via
+an authorized_keys option.
+.It Cm resident
+Indicate that the key handle should be stored on the FIDO
+authenticator itself.
+This makes it easier to use the authenticator on multiple computers.
+Resident keys may be supported on FIDO2 authenticators and typically
+require that a PIN be set on the authenticator prior to generation.
+Resident keys may be loaded off the authenticator using
+.Xr ssh-add 1 .
+Storing both parts of a key on a FIDO authenticator increases the likelihood
+of an attacker being able to use a stolen authenticator device.
+.It Cm user
+A username to be associated with a resident key,
+overriding the empty default username.
+Specifying a username may be useful when generating multiple resident keys
+for the same application name.
+.It Cm verify-required
+Indicate that this private key should require user verification for
+each signature.
+Not all FIDO authenticators support this option.
+Currently PIN authentication is the only supported verification method,
+but other methods may be supported in the future.
+.It Cm write-attestation Ns = Ns Ar path
+May be used at key generation time to record the attestation data
+returned from FIDO authenticators during key generation.
+This information is potentially sensitive.
+By default, this information is discarded.
+.El
.Sh KEY REVOCATION LISTS
.Nm
is able to manage OpenSSH format Key Revocation Lists (KRLs).
@@ -1178,7 +1245,10 @@ signature object and presented on the verification command-line must
match the specified list before the key will be considered acceptable.
.It Cm valid-after Ns = Ns "timestamp"
Indicates that the key is valid for use at or after the specified timestamp,
-which may be a date in YYYYMMDD format or a time in YYYYMMDDHHMM[SS] format.
+which may be a date or time in the YYYYMMDD[Z] or YYYYMMDDHHMM[SS][Z] formats.
+Dates and times will be interpreted in the current system time zone unless
+suffixed with a Z character, which causes them to be interpreted in the UTC
+time zone.
.It Cm valid-before Ns = Ns "timestamp"
Indicates that the key is valid for use at or before the specified timestamp.
.El
diff --git a/ssh-keygen.c b/ssh-keygen.c
index d62fab3e818a..9b2beda05f0c 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-keygen.c,v 1.450 2022/03/18 02:32:22 djm Exp $ */
+/* $OpenBSD: ssh-keygen.c,v 1.459 2022/08/11 01:56:51 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -127,6 +127,7 @@ static u_int64_t cert_valid_to = ~0ULL;
#define CERTOPT_PTY (1<<3)
#define CERTOPT_USER_RC (1<<4)
#define CERTOPT_NO_REQUIRE_USER_PRESENCE (1<<5)
+#define CERTOPT_REQUIRE_VERIFY (1<<6)
#define CERTOPT_DEFAULT (CERTOPT_X_FWD|CERTOPT_AGENT_FWD| \
CERTOPT_PORT_FWD|CERTOPT_PTY|CERTOPT_USER_RC)
static u_int32_t certflags_flags = CERTOPT_DEFAULT;
@@ -590,10 +591,13 @@ do_convert_private_ssh2(struct sshbuf *b)
error_f("remaining bytes in key blob %d", rlen);
/* try the key */
- if (sshkey_sign(key, &sig, &slen, data, sizeof(data),
- NULL, NULL, NULL, 0) != 0 ||
- sshkey_verify(key, sig, slen, data, sizeof(data),
- NULL, 0, NULL) != 0) {
+ if ((r = sshkey_sign(key, &sig, &slen, data, sizeof(data),
+ NULL, NULL, NULL, 0)) != 0)
+ error_fr(r, "signing with converted key failed");
+ else if ((r = sshkey_verify(key, sig, slen, data, sizeof(data),
+ NULL, 0, NULL)) != 0)
+ error_fr(r, "verification with converted key failed");
+ if (r != 0) {
sshkey_free(key);
free(sig);
return NULL;
@@ -1044,7 +1048,6 @@ do_gen_all_hostkeys(struct passwd *pw)
} key_types[] = {
#ifdef WITH_OPENSSL
{ "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE },
- { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE },
#ifdef OPENSSL_HAS_ECC
{ "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE },
#endif /* OPENSSL_HAS_ECC */
@@ -1672,6 +1675,8 @@ finalise_cert_exts(void)
cert_ext_add("force-command", certflags_command, 1);
if (certflags_src_addr != NULL)
cert_ext_add("source-address", certflags_src_addr, 1);
+ if ((certflags_flags & CERTOPT_REQUIRE_VERIFY) != 0)
+ cert_ext_add("verify-required", NULL, 1);
/* extensions */
if ((certflags_flags & CERTOPT_X_FWD) != 0)
cert_ext_add("permit-X11-forwarding", NULL, 0);
@@ -1912,6 +1917,21 @@ parse_relative_time(const char *s, time_t now)
}
static void
+parse_hex_u64(const char *s, uint64_t *up)
+{
+ char *ep;
+ unsigned long long ull;
+
+ errno = 0;
+ ull = strtoull(s, &ep, 16);
+ if (*s == '\0' || *ep != '\0')
+ fatal("Invalid certificate time: not a number");
+ if (errno == ERANGE && ull == ULONG_MAX)
+ fatal_fr(SSH_ERR_SYSTEM_ERROR, "Invalid certificate time");
+ *up = (uint64_t)ull;
+}
+
+static void
parse_cert_times(char *timespec)
{
char *from, *to;
@@ -1933,8 +1953,8 @@ parse_cert_times(char *timespec)
/*
* from:to, where
- * from := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | "always"
- * to := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | "forever"
+ * from := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | 0x... | "always"
+ * to := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | 0x... | "forever"
*/
from = xstrdup(timespec);
to = strchr(from, ':');
@@ -1946,6 +1966,8 @@ parse_cert_times(char *timespec)
cert_valid_from = parse_relative_time(from, now);
else if (strcmp(from, "always") == 0)
cert_valid_from = 0;
+ else if (strncmp(from, "0x", 2) == 0)
+ parse_hex_u64(from, &cert_valid_from);
else if (parse_absolute_time(from, &cert_valid_from) != 0)
fatal("Invalid from time \"%s\"", from);
@@ -1953,6 +1975,8 @@ parse_cert_times(char *timespec)
cert_valid_to = parse_relative_time(to, now);
else if (strcmp(to, "forever") == 0)
cert_valid_to = ~(u_int64_t)0;
+ else if (strncmp(from, "0x", 2) == 0)
+ parse_hex_u64(to, &cert_valid_to);
else if (parse_absolute_time(to, &cert_valid_to) != 0)
fatal("Invalid to time \"%s\"", to);
@@ -1993,6 +2017,10 @@ add_cert_option(char *opt)
certflags_flags &= ~CERTOPT_NO_REQUIRE_USER_PRESENCE;
else if (strcasecmp(opt, "no-touch-required") == 0)
certflags_flags |= CERTOPT_NO_REQUIRE_USER_PRESENCE;
+ else if (strcasecmp(opt, "no-verify-required") == 0)
+ certflags_flags &= ~CERTOPT_REQUIRE_VERIFY;
+ else if (strcasecmp(opt, "verify-required") == 0)
+ certflags_flags |= CERTOPT_REQUIRE_VERIFY;
else if (strncasecmp(opt, "force-command=", 14) == 0) {
val = opt + 14;
if (*val == '\0')
@@ -2051,6 +2079,9 @@ show_options(struct sshbuf *optbuf, int in_critical)
fatal_fr(r, "parse critical");
printf(" %s\n", arg);
free(arg);
+ } else if (in_critical &&
+ strcmp(name, "verify-required") == 0) {
+ printf("\n");
} else if (sshbuf_len(option) > 0) {
hex = sshbuf_dtob16(option);
printf(" UNKNOWN OPTION: %s (len %zu)\n",
@@ -2462,7 +2493,8 @@ load_sign_key(const char *keypath, const struct sshkey *pubkey)
char *privpath = xstrdup(keypath);
static const char * const suffixes[] = { "-cert.pub", ".pub", NULL };
struct sshkey *ret = NULL, *privkey = NULL;
- int r;
+ int r, waspub = 0;
+ struct stat st;
/*
* If passed a public key filename, then try to locate the corresponding
@@ -2477,11 +2509,17 @@ load_sign_key(const char *keypath, const struct sshkey *pubkey)
privpath[plen - slen] = '\0';
debug_f("%s looks like a public key, using private key "
"path %s instead", keypath, privpath);
+ waspub = 1;
}
- if ((privkey = load_identity(privpath, NULL)) == NULL) {
- error("Couldn't load identity %s", keypath);
- goto done;
- }
+ if (waspub && stat(privpath, &st) != 0 && errno == ENOENT)
+ fatal("No private key found for public key \"%s\"", keypath);
+ if ((r = sshkey_load_private(privpath, "", &privkey, NULL)) != 0 &&
+ (r != SSH_ERR_KEY_WRONG_PASSPHRASE)) {
+ debug_fr(r, "load private key \"%s\"", privpath);
+ fatal("No private key found for \"%s\"", privpath);
+ } else if (privkey == NULL)
+ privkey = load_identity(privpath, NULL);
+
if (!sshkey_equal_public(pubkey, privkey)) {
error("Public key %s doesn't match private %s",
keypath, privpath);
@@ -2647,8 +2685,8 @@ sig_process_opts(char * const *opts, size_t nopts, char **hashalgp,
static int
-sig_sign(const char *keypath, const char *sig_namespace, int argc, char **argv,
- char * const *opts, size_t nopts)
+sig_sign(const char *keypath, const char *sig_namespace, int require_agent,
+ int argc, char **argv, char * const *opts, size_t nopts)
{
int i, fd = -1, r, ret = -1;
int agent_fd = -1;
@@ -2672,13 +2710,18 @@ sig_sign(const char *keypath, const char *sig_namespace, int argc, char **argv,
goto done;
}
- if ((r = ssh_get_authentication_socket(&agent_fd)) != 0)
+ if ((r = ssh_get_authentication_socket(&agent_fd)) != 0) {
+ if (require_agent)
+ fatal("Couldn't get agent socket");
debug_r(r, "Couldn't get agent socket");
- else {
+ } else {
if ((r = ssh_agent_has_key(agent_fd, pubkey)) == 0)
signer = agent_signer;
- else
+ else {
+ if (require_agent)
+ fatal("Couldn't find key in agent");
debug_r(r, "Couldn't find key in agent");
+ }
}
if (signer == NULL) {
@@ -3005,37 +3048,43 @@ do_moduli_screen(const char *out_file, char **opts, size_t nopts)
#endif /* WITH_OPENSSL */
}
+/* Read and confirm a passphrase */
static char *
-private_key_passphrase(void)
+read_check_passphrase(const char *prompt1, const char *prompt2,
+ const char *retry_prompt)
{
char *passphrase1, *passphrase2;
- /* Ask for a passphrase (twice). */
- if (identity_passphrase)
- passphrase1 = xstrdup(identity_passphrase);
- else if (identity_new_passphrase)
- passphrase1 = xstrdup(identity_new_passphrase);
- else {
-passphrase_again:
- passphrase1 =
- read_passphrase("Enter passphrase (empty for no "
- "passphrase): ", RP_ALLOW_STDIN);
- passphrase2 = read_passphrase("Enter same passphrase again: ",
- RP_ALLOW_STDIN);
- if (strcmp(passphrase1, passphrase2) != 0) {
- /*
- * The passphrases do not match. Clear them and
- * retry.
- */
- freezero(passphrase1, strlen(passphrase1));
+ for (;;) {
+ passphrase1 = read_passphrase(prompt1, RP_ALLOW_STDIN);
+ passphrase2 = read_passphrase(prompt2, RP_ALLOW_STDIN);
+ if (strcmp(passphrase1, passphrase2) == 0) {
freezero(passphrase2, strlen(passphrase2));
- printf("Passphrases do not match. Try again.\n");
- goto passphrase_again;
+ return passphrase1;
}
- /* Clear the other copy of the passphrase. */
+ /* The passphrases do not match. Clear them and retry. */
+ freezero(passphrase1, strlen(passphrase1));
freezero(passphrase2, strlen(passphrase2));
+ fputs(retry_prompt, stdout);
+ fputc('\n', stdout);
+ fflush(stdout);
}
- return passphrase1;
+ /* NOTREACHED */
+ return NULL;
+}
+
+static char *
+private_key_passphrase(void)
+{
+ if (identity_passphrase)
+ return xstrdup(identity_passphrase);
+ if (identity_new_passphrase)
+ return xstrdup(identity_new_passphrase);
+
+ return read_check_passphrase(
+ "Enter passphrase (empty for no passphrase): ",
+ "Enter same passphrase again: ",
+ "Passphrases do not match. Try again.");
}
static char *
@@ -3186,6 +3235,23 @@ save_attestation(struct sshbuf *attest, const char *path)
"%s\n", path);
}
+static int
+confirm_sk_overwrite(const char *application, const char *user)
+{
+ char yesno[3];
+
+ printf("A resident key scoped to '%s' with user id '%s' already "
+ "exists.\n", application == NULL ? "ssh:" : application,
+ user == NULL ? "null" : user);
+ printf("Overwrite key in token (y/n)? ");
+ fflush(stdout);
+ if (fgets(yesno, sizeof(yesno), stdin) == NULL)
+ return 0;
+ if (yesno[0] != 'y' && yesno[0] != 'Y')
+ return 0;
+ return 1;
+}
+
static void
usage(void)
{
@@ -3241,7 +3307,7 @@ usage(void)
int
main(int argc, char **argv)
{
- char comment[1024], *passphrase;
+ char comment[1024], *passphrase = NULL;
char *rr_hostname = NULL, *ep, *fp, *ra;
struct sshkey *private, *public;
struct passwd *pw;
@@ -3536,7 +3602,7 @@ main(int argc, char **argv)
exit(1);
}
return sig_sign(identity_file, cert_principals,
- argc, argv, opts, nopts);
+ prefer_agent, argc, argv, opts, nopts);
} else if (strncmp(sign_op, "check-novalidate", 16) == 0) {
/* NB. cert_principals is actually namespace, via -n */
if (cert_principals == NULL ||
@@ -3752,20 +3818,16 @@ main(int argc, char **argv)
"FIDO authenticator enrollment", opts[i]);
}
}
- if (!quiet) {
- printf("You may need to touch your authenticator "
- "to authorize key generation.\n");
- }
if ((attest = sshbuf_new()) == NULL)
fatal("sshbuf_new failed");
- if ((sk_flags &
- (SSH_SK_USER_VERIFICATION_REQD|SSH_SK_RESIDENT_KEY))) {
- passphrase = read_passphrase("Enter PIN for "
- "authenticator: ", RP_ALLOW_STDIN);
- } else {
- passphrase = NULL;
- }
- for (i = 0 ; ; i++) {
+ r = 0;
+ for (i = 0 ;;) {
+ if (!quiet) {
+ printf("You may need to touch your "
+ "authenticator%s to authorize key "
+ "generation.\n",
+ r == 0 ? "" : " again");
+ }
fflush(stdout);
r = sshsk_enroll(type, sk_provider, sk_device,
sk_application == NULL ? "ssh:" : sk_application,
@@ -3773,6 +3835,13 @@ main(int argc, char **argv)
&private, attest);
if (r == 0)
break;
+ if (r == SSH_ERR_KEY_BAD_PERMISSIONS &&
+ (sk_flags & SSH_SK_RESIDENT_KEY) != 0 &&
+ (sk_flags & SSH_SK_FORCE_OPERATION) == 0 &&
+ confirm_sk_overwrite(sk_application, sk_user)) {
+ sk_flags |= SSH_SK_FORCE_OPERATION;
+ continue;
+ }
if (r != SSH_ERR_KEY_WRONG_PASSPHRASE)
fatal_r(r, "Key enrollment failed");
else if (passphrase != NULL) {
@@ -3780,15 +3849,10 @@ main(int argc, char **argv)
freezero(passphrase, strlen(passphrase));
passphrase = NULL;
}
- if (i >= 3)
+ if (++i >= 3)
fatal("Too many incorrect PINs");
passphrase = read_passphrase("Enter PIN for "
"authenticator: ", RP_ALLOW_STDIN);
- if (!quiet) {
- printf("You may need to touch your "
- "authenticator (again) to authorize "
- "key generation.\n");
- }
}
if (passphrase != NULL) {
freezero(passphrase, strlen(passphrase));
diff --git a/ssh-keyscan.0 b/ssh-keyscan.0
index 7e41755b5375..b3b2a207598e 100644
--- a/ssh-keyscan.0
+++ b/ssh-keyscan.0
@@ -55,9 +55,10 @@ DESCRIPTION
-t type
Specify the type of the key to fetch from the scanned hosts. The
- possible values are M-bM-^@M-^\dsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], M-bM-^@M-^\ed25519M-bM-^@M-^], or M-bM-^@M-^\rsaM-bM-^@M-^].
- Multiple values may be specified by separating them with commas.
- The default is to fetch M-bM-^@M-^\rsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], and M-bM-^@M-^\ed25519M-bM-^@M-^] keys.
+ possible values are M-bM-^@M-^\dsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], M-bM-^@M-^\ed25519M-bM-^@M-^], M-bM-^@M-^\ecdsa-skM-bM-^@M-^],
+ M-bM-^@M-^\ed25519-skM-bM-^@M-^], or M-bM-^@M-^\rsaM-bM-^@M-^]. Multiple values may be specified by
+ separating them with commas. The default is to fetch M-bM-^@M-^\rsaM-bM-^@M-^],
+ M-bM-^@M-^\ecdsaM-bM-^@M-^], M-bM-^@M-^\ed25519M-bM-^@M-^], M-bM-^@M-^\ecdsa-skM-bM-^@M-^], and M-bM-^@M-^\ed25519-skM-bM-^@M-^] keys.
-v Verbose mode: print debugging messages about progress.
@@ -93,4 +94,4 @@ AUTHORS
Davison <wayned@users.sourceforge.net> added support for protocol version
2.
-OpenBSD 7.0 November 30, 2019 OpenBSD 7.0
+OpenBSD 7.1 June 3, 2022 OpenBSD 7.1
diff --git a/ssh-keyscan.1 b/ssh-keyscan.1
index f9df75d42f1a..4eb0bea09168 100644
--- a/ssh-keyscan.1
+++ b/ssh-keyscan.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: ssh-keyscan.1,v 1.45 2019/11/30 07:07:59 jmc Exp $
+.\" $OpenBSD: ssh-keyscan.1,v 1.46 2022/06/03 04:00:15 dtucker Exp $
.\"
.\" Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
.\"
@@ -6,7 +6,7 @@
.\" permitted provided that due credit is given to the author and the
.\" OpenBSD project by leaving this copyright notice intact.
.\"
-.Dd $Mdocdate: November 30 2019 $
+.Dd $Mdocdate: June 3 2022 $
.Dt SSH-KEYSCAN 1
.Os
.Sh NAME
@@ -103,14 +103,18 @@ The possible values are
.Dq dsa ,
.Dq ecdsa ,
.Dq ed25519 ,
+.Dq ecdsa-sk ,
+.Dq ed25519-sk ,
or
.Dq rsa .
Multiple values may be specified by separating them with commas.
The default is to fetch
.Dq rsa ,
.Dq ecdsa ,
+.Dq ed25519 ,
+.Dq ecdsa-sk ,
and
-.Dq ed25519
+.Dq ed25519-sk
keys.
.It Fl v
Verbose mode:
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index d29a03b4e68a..d7283136c7d2 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-keyscan.c,v 1.145 2022/01/21 00:53:40 deraadt Exp $ */
+/* $OpenBSD: ssh-keyscan.c,v 1.146 2022/08/19 04:02:46 dtucker Exp $ */
/*
* Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
*
@@ -490,6 +490,15 @@ congreet(int s)
return;
}
+ /*
+ * Read the server banner as per RFC4253 section 4.2. The "SSH-"
+ * protocol identification string may be preceeded by an arbitarily
+ * large banner which we must read and ignore. Loop while reading
+ * newline-terminated lines until we have one starting with "SSH-".
+ * The ID string cannot be longer than 255 characters although the
+ * preceeding banner lines may (in which case they'll be discarded
+ * in multiple iterations of the outer loop).
+ */
for (;;) {
memset(buf, '\0', sizeof(buf));
bufsiz = sizeof(buf);
@@ -517,6 +526,11 @@ congreet(int s)
conrecycle(s);
return;
}
+ if (cp >= buf + sizeof(buf)) {
+ error("%s: greeting exceeds allowable length", c->c_name);
+ confree(s);
+ return;
+ }
if (*cp != '\n' && *cp != '\r') {
error("%s: bad greeting", c->c_name);
confree(s);
diff --git a/ssh-keysign.0 b/ssh-keysign.0
index 8e109a291fe3..6937679e46a3 100644
--- a/ssh-keysign.0
+++ b/ssh-keysign.0
@@ -49,4 +49,4 @@ HISTORY
AUTHORS
Markus Friedl <markus@openbsd.org>
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 March 31, 2022 OpenBSD 7.1
diff --git a/ssh-keysign.c b/ssh-keysign.c
index c52321e220e7..b989f5e941ad 100644
--- a/ssh-keysign.c
+++ b/ssh-keysign.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-keysign.c,v 1.70 2022/01/06 22:00:18 djm Exp $ */
+/* $OpenBSD: ssh-keysign.c,v 1.71 2022/08/01 11:09:26 djm Exp $ */
/*
* Copyright (c) 2002 Markus Friedl. All rights reserved.
*
@@ -155,9 +155,7 @@ valid_request(struct passwd *pw, char *host, struct sshkey **ret, char **pkalgp,
debug3_f("fail %d", fail);
- if (fail)
- sshkey_free(key);
- else {
+ if (!fail) {
if (ret != NULL) {
*ret = key;
key = NULL;
diff --git a/ssh-pkcs11-helper.0 b/ssh-pkcs11-helper.0
index 5b38bb07d8ca..7f46839780a0 100644
--- a/ssh-pkcs11-helper.0
+++ b/ssh-pkcs11-helper.0
@@ -7,11 +7,10 @@ SYNOPSIS
ssh-pkcs11-helper [-v]
DESCRIPTION
- ssh-pkcs11-helper is used by ssh-agent(1) to access keys provided by a
- PKCS#11 token.
+ ssh-pkcs11-helper is used by ssh(1), ssh-agent(1), and ssh-keygen(1) to
+ access keys provided by a PKCS#11 token.
- ssh-pkcs11-helper is not intended to be invoked by the user, but from
- ssh-agent(1).
+ ssh-pkcs11-helper is not intended to be invoked directly by the user.
A single option is supported:
@@ -20,11 +19,12 @@ DESCRIPTION
problems. Multiple -v options increase the verbosity. The
maximum is 3.
- Note that ssh-agent(1) will automatically pass the -v flag to
- ssh-pkcs11-helper when it has itself been placed in debug mode.
+ Note that ssh(1), ssh-agent(1), and ssh-keygen(1) will
+ automatically pass the -v flag to ssh-pkcs11-helper when they
+ have themselves been placed in debug mode.
SEE ALSO
- ssh(1), ssh-add(1), ssh-agent(1)
+ ssh(1), ssh-agent(1), ssh-keygen(1)
HISTORY
ssh-pkcs11-helper first appeared in OpenBSD 4.7.
@@ -32,4 +32,4 @@ HISTORY
AUTHORS
Markus Friedl <markus@openbsd.org>
-OpenBSD 7.0 November 30, 2019 OpenBSD 7.0
+OpenBSD 7.1 April 29, 2022 OpenBSD 7.1
diff --git a/ssh-pkcs11-helper.8 b/ssh-pkcs11-helper.8
index 6a592b1f36e3..5edc98507e0c 100644
--- a/ssh-pkcs11-helper.8
+++ b/ssh-pkcs11-helper.8
@@ -1,4 +1,4 @@
-.\" $OpenBSD: ssh-pkcs11-helper.8,v 1.6 2019/11/30 07:07:59 jmc Exp $
+.\" $OpenBSD: ssh-pkcs11-helper.8,v 1.7 2022/04/29 03:24:30 djm Exp $
.\"
.\" Copyright (c) 2010 Markus Friedl. All rights reserved.
.\"
@@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: November 30 2019 $
+.Dd $Mdocdate: April 29 2022 $
.Dt SSH-PKCS11-HELPER 8
.Os
.Sh NAME
@@ -26,12 +26,14 @@
.Sh DESCRIPTION
.Nm
is used by
-.Xr ssh-agent 1
+.Xr ssh 1 ,
+.Xr ssh-agent 1 ,
+and
+.Xr ssh-keygen 1
to access keys provided by a PKCS#11 token.
.Pp
.Nm
-is not intended to be invoked by the user, but from
-.Xr ssh-agent 1 .
+is not intended to be invoked directly by the user.
.Pp
A single option is supported:
.Bl -tag -width Ds
@@ -47,17 +49,20 @@ options increase the verbosity.
The maximum is 3.
.Pp
Note that
-.Xr ssh-agent 1
+.Xr ssh 1 ,
+.Xr ssh-agent 1 ,
+and
+.Xr ssh-keygen 1
will automatically pass the
.Fl v
flag to
.Nm
-when it has itself been placed in debug mode.
+when they have themselves been placed in debug mode.
.El
.Sh SEE ALSO
.Xr ssh 1 ,
-.Xr ssh-add 1 ,
-.Xr ssh-agent 1
+.Xr ssh-agent 1 ,
+.Xr ssh-keygen 1
.Sh HISTORY
.Nm
first appeared in
diff --git a/ssh-sk-helper.8 b/ssh-sk-helper.8
index 3c53da1ec796..e9b2ae12b102 100644
--- a/ssh-sk-helper.8
+++ b/ssh-sk-helper.8
@@ -1,4 +1,4 @@
-.\" $OpenBSD: ssh-sk-helper.8,v 1.3 2019/12/21 20:22:34 naddy Exp $
+.\" $OpenBSD: ssh-sk-helper.8,v 1.4 2022/04/29 03:24:30 djm Exp $
.\"
.\" Copyright (c) 2010 Markus Friedl. All rights reserved.
.\"
@@ -14,7 +14,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: December 21 2019 $
+.Dd $Mdocdate: April 29 2022 $
.Dt SSH-SK-HELPER 8
.Os
.Sh NAME
@@ -26,12 +26,14 @@
.Sh DESCRIPTION
.Nm
is used by
-.Xr ssh-agent 1
+.Xr ssh 1 ,
+.Xr ssh-agent 1 ,
+and
+.Xr ssh-keygen 1
to access keys provided by a FIDO authenticator.
.Pp
.Nm
-is not intended to be invoked by the user, but from
-.Xr ssh-agent 1 .
+is not intended to be invoked directly by the user.
.Pp
A single option is supported:
.Bl -tag -width Ds
@@ -47,17 +49,20 @@ options increase the verbosity.
The maximum is 3.
.Pp
Note that
-.Xr ssh-agent 1
+.Xr ssh 1 ,
+.Xr ssh-agent 1 ,
+and
+.Xr ssh-keygen 1
will automatically pass the
.Fl v
flag to
.Nm
-when it has itself been placed in debug mode.
+when they have themselves been placed in debug mode.
.El
.Sh SEE ALSO
.Xr ssh 1 ,
-.Xr ssh-add 1 ,
-.Xr ssh-agent 1
+.Xr ssh-agent 1 ,
+.Xr ssh-keygen 1
.Sh HISTORY
.Nm
first appeared in
diff --git a/ssh-sk-helper.c b/ssh-sk-helper.c
index b1d22631f2f6..bd9b410a6974 100644
--- a/ssh-sk-helper.c
+++ b/ssh-sk-helper.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-sk-helper.c,v 1.12 2021/10/28 02:54:18 djm Exp $ */
+/* $OpenBSD: ssh-sk-helper.c,v 1.13 2022/04/29 03:16:48 dtucker Exp $ */
/*
* Copyright (c) 2019 Google LLC
*
@@ -265,6 +265,7 @@ process_load_resident(struct sshbuf *req)
sshsk_free_resident_keys(srks, nsrks);
sshbuf_free(kbuf);
free(provider);
+ free(device);
if (pin != NULL)
freezero(pin, strlen(pin));
return resp;
diff --git a/ssh-sk.c b/ssh-sk.c
index a1ff5cc485e8..fbeb39320976 100644
--- a/ssh-sk.c
+++ b/ssh-sk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-sk.c,v 1.38 2022/01/14 03:35:10 djm Exp $ */
+/* $OpenBSD: ssh-sk.c,v 1.39 2022/07/20 03:29:14 djm Exp $ */
/*
* Copyright (c) 2019 Google LLC
*
@@ -127,10 +127,11 @@ sshsk_open(const char *path)
ret->sk_enroll = ssh_sk_enroll;
ret->sk_sign = ssh_sk_sign;
ret->sk_load_resident_keys = ssh_sk_load_resident_keys;
+ return ret;
#else
error("internal security key support not enabled");
+ goto fail;
#endif
- return ret;
}
if ((ret->dlhandle = dlopen(path, RTLD_NOW)) == NULL) {
error("Provider \"%s\" dlopen failed: %s", path, dlerror());
@@ -353,6 +354,8 @@ skerr_to_ssherr(int skerr)
return SSH_ERR_KEY_WRONG_PASSPHRASE;
case SSH_SK_ERR_DEVICE_NOT_FOUND:
return SSH_ERR_DEVICE_NOT_FOUND;
+ case SSH_SK_ERR_CREDENTIAL_EXISTS:
+ return SSH_ERR_KEY_BAD_PERMISSIONS;
case SSH_SK_ERR_GENERAL:
default:
return SSH_ERR_INVALID_FORMAT;
diff --git a/ssh-xmss.c b/ssh-xmss.c
index 7bd3a96a3bf5..41ede29607c0 100644
--- a/ssh-xmss.c
+++ b/ssh-xmss.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-xmss.c,v 1.4 2020/10/19 22:49:23 dtucker Exp $*/
+/* $OpenBSD: ssh-xmss.c,v 1.5 2022/04/20 15:59:18 millert Exp $*/
/*
* Copyright (c) 2017 Stefan-Lukas Gazdag.
* Copyright (c) 2017 Markus Friedl.
@@ -22,8 +22,10 @@
#include <sys/types.h>
#include <limits.h>
+#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
+#include <stdint.h>
#include <unistd.h>
#include "log.h"
diff --git a/ssh.0 b/ssh.0
index d1140cf17dff..8449746bd71c 100644
--- a/ssh.0
+++ b/ssh.0
@@ -67,7 +67,7 @@ DESCRIPTION
gzip(1). Compression is desirable on modem lines and other slow
connections, but will only slow down things on fast networks.
The default value can be set on a host-by-host basis in the
- configuration files; see the Compression option.
+ configuration files; see the Compression option in ssh_config(5).
-c cipher_spec
Selects the cipher specification for encrypting the session.
@@ -209,7 +209,7 @@ DESCRIPTION
-m mac_spec
A comma-separated list of MAC (message authentication code)
algorithms, specified in order of preference. See the MACs
- keyword for more information.
+ keyword in ssh_config(5) for more information.
-N Do not execute a remote command. This is useful for just
forwarding ports. Refer to the description of SessionType in
@@ -313,6 +313,7 @@ DESCRIPTION
RemoteCommand
RemoteForward
RequestTTY
+ RequiredRSASize
SendEnv
ServerAliveInterval
ServerAliveCountMax
@@ -1013,4 +1014,4 @@ AUTHORS
created OpenSSH. Markus Friedl contributed the support for SSH protocol
versions 1.5 and 2.0.
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 17, 2022 OpenBSD 7.1
diff --git a/ssh.1 b/ssh.1
index 4a4f1683a82a..e255b9b9d2e4 100644
--- a/ssh.1
+++ b/ssh.1
@@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $OpenBSD: ssh.1,v 1.430 2022/03/31 17:27:27 naddy Exp $
-.Dd $Mdocdate: March 31 2022 $
+.\" $OpenBSD: ssh.1,v 1.432 2022/09/17 10:33:18 djm Exp $
+.Dd $Mdocdate: September 17 2022 $
.Dt SSH 1
.Os
.Sh NAME
@@ -159,7 +159,8 @@ slow connections, but will only slow down things on fast networks.
The default value can be set on a host-by-host basis in the
configuration files; see the
.Cm Compression
-option.
+option in
+.Xr ssh_config 5 .
.Pp
.It Fl c Ar cipher_spec
Selects the cipher specification for encrypting the session.
@@ -434,7 +435,9 @@ A comma-separated list of MAC (message authentication code) algorithms,
specified in order of preference.
See the
.Cm MACs
-keyword for more information.
+keyword in
+.Xr ssh_config 5
+for more information.
.Pp
.It Fl N
Do not execute a remote command.
@@ -568,6 +571,7 @@ For full details of the options listed below, and their possible values, see
.It RemoteCommand
.It RemoteForward
.It RequestTTY
+.It RequiredRSASize
.It SendEnv
.It ServerAliveInterval
.It ServerAliveCountMax
diff --git a/ssh.c b/ssh.c
index 89ca1940c1ff..25be53d56918 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh.c,v 1.574 2022/03/30 04:33:09 djm Exp $ */
+/* $OpenBSD: ssh.c,v 1.576 2022/09/17 10:33:18 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -516,14 +516,22 @@ resolve_canonicalize(char **hostp, int port)
}
/*
- * Check the result of hostkey loading, ignoring some errors and
- * fatal()ing for others.
+ * Check the result of hostkey loading, ignoring some errors and either
+ * discarding the key or fatal()ing for others.
*/
static void
-check_load(int r, const char *path, const char *message)
+check_load(int r, struct sshkey **k, const char *path, const char *message)
{
switch (r) {
case 0:
+ /* Check RSA keys size and discard if undersized */
+ if (k != NULL && *k != NULL &&
+ (r = sshkey_check_rsa_length(*k,
+ options.required_rsa_size)) != 0) {
+ error_r(r, "load %s \"%s\"", message, path);
+ free(*k);
+ *k = NULL;
+ }
break;
case SSH_ERR_INTERNAL_ERROR:
case SSH_ERR_ALLOC_FAIL:
@@ -1124,6 +1132,8 @@ main(int ac, char **av)
}
}
+ ssh_signal(SIGPIPE, SIG_IGN); /* ignore SIGPIPE early */
+
/*
* Initialize "log" output. Since we are the client all output
* goes to stderr unless otherwise specified by -y or -E.
@@ -1576,7 +1586,7 @@ main(int ac, char **av)
if ((o) >= sensitive_data.nkeys) \
fatal_f("pubkey out of array bounds"); \
check_load(sshkey_load_public(p, &(sensitive_data.keys[o]), NULL), \
- p, "pubkey"); \
+ &(sensitive_data.keys[o]), p, "pubkey"); \
if (sensitive_data.keys[o] != NULL) \
debug2("hostbased key %d: %s key from \"%s\"", o, \
sshkey_ssh_name(sensitive_data.keys[o]), p); \
@@ -1584,7 +1594,8 @@ main(int ac, char **av)
#define L_CERT(p,o) do { \
if ((o) >= sensitive_data.nkeys) \
fatal_f("cert out of array bounds"); \
- check_load(sshkey_load_cert(p, &(sensitive_data.keys[o])), p, "cert"); \
+ check_load(sshkey_load_cert(p, &(sensitive_data.keys[o])), \
+ &(sensitive_data.keys[o]), p, "cert"); \
if (sensitive_data.keys[o] != NULL) \
debug2("hostbased key %d: %s cert from \"%s\"", o, \
sshkey_ssh_name(sensitive_data.keys[o]), p); \
@@ -1652,7 +1663,6 @@ main(int ac, char **av)
options.num_system_hostfiles);
tilde_expand_paths(options.user_hostfiles, options.num_user_hostfiles);
- ssh_signal(SIGPIPE, SIG_IGN); /* ignore SIGPIPE early */
ssh_signal(SIGCHLD, main_sigchld_handler);
/* Log into the remote system. Never returns if the login fails. */
@@ -2264,7 +2274,7 @@ load_public_identity_files(const struct ssh_conn_info *cinfo)
filename = default_client_percent_dollar_expand(cp, cinfo);
free(cp);
check_load(sshkey_load_public(filename, &public, NULL),
- filename, "pubkey");
+ &public, filename, "pubkey");
debug("identity file %s type %d", filename,
public ? public->type : -1);
free(options.identity_files[i]);
@@ -2283,7 +2293,7 @@ load_public_identity_files(const struct ssh_conn_info *cinfo)
continue;
xasprintf(&cp, "%s-cert", filename);
check_load(sshkey_load_public(cp, &public, NULL),
- filename, "pubkey");
+ &public, filename, "pubkey");
debug("identity file %s type %d", cp,
public ? public->type : -1);
if (public == NULL) {
@@ -2314,7 +2324,7 @@ load_public_identity_files(const struct ssh_conn_info *cinfo)
free(cp);
check_load(sshkey_load_public(filename, &public, NULL),
- filename, "certificate");
+ &public, filename, "certificate");
debug("certificate file %s type %d", filename,
public ? public->type : -1);
free(options.certificate_files[i]);
diff --git a/ssh_config.0 b/ssh_config.0
index 50cdbca70752..85eefd2a70ea 100644
--- a/ssh_config.0
+++ b/ssh_config.0
@@ -915,14 +915,14 @@ DESCRIPTION
restricted ssh-agent(1) forwarding.
RekeyLimit
- Specifies the maximum amount of data that may be transmitted
- before the session key is renegotiated, optionally followed by a
- maximum amount of time that may pass before the session key is
- renegotiated. The first argument is specified in bytes and may
- have a suffix of M-bM-^@M-^XKM-bM-^@M-^Y, M-bM-^@M-^XMM-bM-^@M-^Y, or M-bM-^@M-^XGM-bM-^@M-^Y to indicate Kilobytes,
- Megabytes, or Gigabytes, respectively. The default is between
- M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional second
- value is specified in seconds and may use any of the units
+ Specifies the maximum amount of data that may be transmitted or
+ received before the session key is renegotiated, optionally
+ followed by a maximum amount of time that may pass before the
+ session key is renegotiated. The first argument is specified in
+ bytes and may have a suffix of M-bM-^@M-^XKM-bM-^@M-^Y, M-bM-^@M-^XMM-bM-^@M-^Y, or M-bM-^@M-^XGM-bM-^@M-^Y to indicate
+ Kilobytes, Megabytes, or Gigabytes, respectively. The default is
+ between M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional
+ second value is specified in seconds and may use any of the units
documented in the TIME FORMATS section of sshd_config(5). The
default value for RekeyLimit is default none, which means that
rekeying is performed after the cipher's default amount of data
@@ -975,6 +975,13 @@ DESCRIPTION
request a TTY) or auto (request a TTY when opening a login
session). This option mirrors the -t and -T flags for ssh(1).
+ RequiredRSASize
+ Specifies the minimum RSA key size (in bits) that ssh(1) will
+ accept. User authentication keys smaller than this limit will be
+ ignored. Servers that present host keys smaller than this limit
+ will cause the connection to be terminated. The default is 1024
+ bits. Note that this limit may only be raised from the default.
+
RevokedHostKeys
Specifies revoked host public keys. Keys listed in this file
will be refused for host authentication. Note that if this file
@@ -1271,7 +1278,7 @@ TOKENS
LocalCommand accepts all tokens.
- ProxyCommand accepts the tokens %%, %h, %n, %p, and %r.
+ ProxyCommand and ProxyJump accept the tokens %%, %h, %n, %p, and %r.
ENVIRONMENT VARIABLES
Arguments to some keywords can be expanded at runtime from environment
@@ -1308,4 +1315,4 @@ AUTHORS
created OpenSSH. Markus Friedl contributed the support for SSH protocol
versions 1.5 and 2.0.
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 17, 2022 OpenBSD 7.1
diff --git a/ssh_config.5 b/ssh_config.5
index 59ff96465e1c..d1ede18e780d 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $OpenBSD: ssh_config.5,v 1.371 2022/03/31 17:58:44 naddy Exp $
-.Dd $Mdocdate: March 31 2022 $
+.\" $OpenBSD: ssh_config.5,v 1.374 2022/09/17 10:33:18 djm Exp $
+.Dd $Mdocdate: September 17 2022 $
.Dt SSH_CONFIG 5
.Os
.Sh NAME
@@ -1532,9 +1532,9 @@ extension required for restricted
.Xr ssh-agent 1
forwarding.
.It Cm RekeyLimit
-Specifies the maximum amount of data that may be transmitted before the
-session key is renegotiated, optionally followed by a maximum amount of
-time that may pass before the session key is renegotiated.
+Specifies the maximum amount of data that may be transmitted or received
+before the session key is renegotiated, optionally followed by a maximum
+amount of time that may pass before the session key is renegotiated.
The first argument is specified in bytes and may have a suffix of
.Sq K ,
.Sq M ,
@@ -1634,6 +1634,17 @@ and
.Fl T
flags for
.Xr ssh 1 .
+.It Cm RequiredRSASize
+Specifies the minimum RSA key size (in bits) that
+.Xr ssh 1
+will accept.
+User authentication keys smaller than this limit will be ignored.
+Servers that present host keys smaller than this limit will cause the
+connection to be terminated.
+The default is
+.Cm 1024
+bits.
+Note that this limit may only be raised from the default.
.It Cm RevokedHostKeys
Specifies revoked host public keys.
Keys listed in this file will be refused for host authentication.
@@ -2123,7 +2134,9 @@ accepts the tokens %% and %h.
accepts all tokens.
.Pp
.Cm ProxyCommand
-accepts the tokens %%, %h, %n, %p, and %r.
+and
+.Cm ProxyJump
+accept the tokens %%, %h, %n, %p, and %r.
.Sh ENVIRONMENT VARIABLES
Arguments to some keywords can be expanded at runtime from environment
variables on the client by enclosing them in
diff --git a/sshbuf-getput-basic.c b/sshbuf-getput-basic.c
index 9803fb5ed904..5c71b0e53563 100644
--- a/sshbuf-getput-basic.c
+++ b/sshbuf-getput-basic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshbuf-getput-basic.c,v 1.11 2020/06/05 03:25:35 djm Exp $ */
+/* $OpenBSD: sshbuf-getput-basic.c,v 1.13 2022/05/25 06:03:44 djm Exp $ */
/*
* Copyright (c) 2011 Damien Miller
*
diff --git a/sshbuf-getput-crypto.c b/sshbuf-getput-crypto.c
index 2e61d3bcd809..56ffdd86156a 100644
--- a/sshbuf-getput-crypto.c
+++ b/sshbuf-getput-crypto.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshbuf-getput-crypto.c,v 1.8 2019/11/15 06:00:20 djm Exp $ */
+/* $OpenBSD: sshbuf-getput-crypto.c,v 1.10 2022/05/25 06:03:44 djm Exp $ */
/*
* Copyright (c) 2011 Damien Miller
*
diff --git a/sshbuf.c b/sshbuf.c
index 368ba7980b75..d5757b7264ed 100644
--- a/sshbuf.c
+++ b/sshbuf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshbuf.c,v 1.15 2020/02/26 13:40:09 jsg Exp $ */
+/* $OpenBSD: sshbuf.c,v 1.18 2022/05/25 06:03:44 djm Exp $ */
/*
* Copyright (c) 2011 Damien Miller
*
@@ -109,6 +109,8 @@ sshbuf_set_parent(struct sshbuf *child, struct sshbuf *parent)
if ((r = sshbuf_check_sanity(child)) != 0 ||
(r = sshbuf_check_sanity(parent)) != 0)
return r;
+ if (child->parent != NULL && child->parent != parent)
+ return SSH_ERR_INTERNAL_ERROR;
child->parent = parent;
child->parent->refcount++;
return 0;
@@ -177,7 +179,8 @@ sshbuf_reset(struct sshbuf *buf)
buf->off = buf->size;
return;
}
- (void) sshbuf_check_sanity(buf);
+ if (sshbuf_check_sanity(buf) != 0)
+ return;
buf->off = buf->size = 0;
if (buf->alloc != SSHBUF_SIZE_INIT) {
if ((d = recallocarray(buf->d, buf->alloc, SSHBUF_SIZE_INIT,
@@ -186,7 +189,7 @@ sshbuf_reset(struct sshbuf *buf)
buf->alloc = SSHBUF_SIZE_INIT;
}
}
- explicit_bzero(buf->d, SSHBUF_SIZE_INIT);
+ explicit_bzero(buf->d, buf->alloc);
}
size_t
diff --git a/sshbuf.h b/sshbuf.h
index 07d54f0a988d..feb91f762b9d 100644
--- a/sshbuf.h
+++ b/sshbuf.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshbuf.h,v 1.25 2022/01/22 00:43:43 djm Exp $ */
+/* $OpenBSD: sshbuf.h,v 1.27 2022/05/25 06:03:44 djm Exp $ */
/*
* Copyright (c) 2011 Damien Miller
*
diff --git a/sshconnect.c b/sshconnect.c
index ebecc83747bb..7b3f260ee788 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect.c,v 1.356 2021/12/19 22:10:24 djm Exp $ */
+/* $OpenBSD: sshconnect.c,v 1.358 2022/08/26 08:16:27 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -816,7 +816,7 @@ other_hostkeys_message(const char *host, const char *ip,
system_hostfiles, num_system_hostfiles,
&othernames, &num_othernames);
if (num_othernames == 0)
- return xstrdup("This key is not known by any other names");
+ return xstrdup("This key is not known by any other names.");
xasprintf(&ret, "This host key is known by the following other "
"names/addresses:");
@@ -1334,7 +1334,7 @@ check_host_key(char *hostname, const struct ssh_conn_info *cinfo,
if (options.exit_on_forward_failure && cancelled_forwarding)
fatal("Error: forwarding disabled due to host key "
"check failure");
-
+
/*
* XXX Should permit the user to change to use the new id.
* This could be done by converting the host key to an
diff --git a/sshconnect2.c b/sshconnect2.c
index b25225e645cb..58fe98db2200 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect2.c,v 1.356 2022/02/01 23:32:51 djm Exp $ */
+/* $OpenBSD: sshconnect2.c,v 1.361 2022/09/17 10:33:18 djm Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -96,6 +96,11 @@ static const struct ssh_conn_info *xxx_conn_info;
static int
verify_host_key_callback(struct sshkey *hostkey, struct ssh *ssh)
{
+ int r;
+
+ if ((r = sshkey_check_rsa_length(hostkey,
+ options.required_rsa_size)) != 0)
+ fatal_r(r, "Bad server host key");
if (verify_host_key(xxx_host, xxx_hostaddr, hostkey,
xxx_conn_info) == -1)
fatal("Host key verification failed.");
@@ -218,6 +223,7 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port,
{
char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT };
char *s, *all_key;
+ char *prop_kex = NULL, *prop_enc = NULL, *prop_hostkey = NULL;
int r, use_known_hosts_order = 0;
xxx_host = host;
@@ -243,10 +249,9 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port,
if ((s = kex_names_cat(options.kex_algorithms, "ext-info-c")) == NULL)
fatal_f("kex_names_cat");
- myproposal[PROPOSAL_KEX_ALGS] = compat_kex_proposal(ssh, s);
+ myproposal[PROPOSAL_KEX_ALGS] = prop_kex = compat_kex_proposal(ssh, s);
myproposal[PROPOSAL_ENC_ALGS_CTOS] =
- compat_cipher_proposal(ssh, options.ciphers);
- myproposal[PROPOSAL_ENC_ALGS_STOC] =
+ myproposal[PROPOSAL_ENC_ALGS_STOC] = prop_enc =
compat_cipher_proposal(ssh, options.ciphers);
myproposal[PROPOSAL_COMP_ALGS_CTOS] =
myproposal[PROPOSAL_COMP_ALGS_STOC] =
@@ -255,12 +260,12 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port,
myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs;
if (use_known_hosts_order) {
/* Query known_hosts and prefer algorithms that appear there */
- myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] =
+ myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = prop_hostkey =
compat_pkalg_proposal(ssh,
order_hostkeyalgs(host, hostaddr, port, cinfo));
} else {
/* Use specified HostkeyAlgorithms exactly */
- myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] =
+ myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = prop_hostkey =
compat_pkalg_proposal(ssh, options.hostkeyalgorithms);
}
@@ -303,6 +308,10 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port,
(r = ssh_packet_write_wait(ssh)) != 0)
fatal_fr(r, "send packet");
#endif
+ /* Free only parts of proposal that were dynamically allocated here. */
+ free(prop_kex);
+ free(prop_enc);
+ free(prop_hostkey);
}
/*
@@ -1231,7 +1240,7 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
const u_char *data, size_t datalen, u_int compat, const char *alg)
{
struct sshkey *sign_key = NULL, *prv = NULL;
- int retried = 0, r = SSH_ERR_INTERNAL_ERROR;
+ int is_agent = 0, retried = 0, r = SSH_ERR_INTERNAL_ERROR;
struct notifier_ctx *notifier = NULL;
char *fp = NULL, *pin = NULL, *prompt = NULL;
@@ -1251,6 +1260,7 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
if (id->key != NULL &&
(id->isprivate || (id->key->flags & SSHKEY_FLAG_EXT))) {
sign_key = id->key;
+ is_agent = 1;
} else {
/* Load the private key from the file. */
if ((prv = load_identity_file(id)) == NULL)
@@ -1262,34 +1272,31 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp,
goto out;
}
sign_key = prv;
- if (sshkey_is_sk(sign_key)) {
- if ((sign_key->sk_flags &
- SSH_SK_USER_VERIFICATION_REQD)) {
+ }
retry_pin:
- xasprintf(&prompt, "Enter PIN for %s key %s: ",
- sshkey_type(sign_key), id->filename);
- pin = read_passphrase(prompt, 0);
- }
- if ((sign_key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) {
- /* XXX should batch mode just skip these? */
- if ((fp = sshkey_fingerprint(sign_key,
- options.fingerprint_hash,
- SSH_FP_DEFAULT)) == NULL)
- fatal_f("fingerprint failed");
- notifier = notify_start(options.batch_mode,
- "Confirm user presence for key %s %s",
- sshkey_type(sign_key), fp);
- free(fp);
- }
- }
+ /* Prompt for touch for non-agent FIDO keys that request UP */
+ if (!is_agent && sshkey_is_sk(sign_key) &&
+ (sign_key->sk_flags & SSH_SK_USER_PRESENCE_REQD)) {
+ /* XXX should batch mode just skip these? */
+ if ((fp = sshkey_fingerprint(sign_key,
+ options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL)
+ fatal_f("fingerprint failed");
+ notifier = notify_start(options.batch_mode,
+ "Confirm user presence for key %s %s",
+ sshkey_type(sign_key), fp);
+ free(fp);
}
if ((r = sshkey_sign(sign_key, sigp, lenp, data, datalen,
alg, options.sk_provider, pin, compat)) != 0) {
debug_fr(r, "sshkey_sign");
- if (pin == NULL && !retried && sshkey_is_sk(sign_key) &&
+ if (!retried && pin == NULL && !is_agent &&
+ sshkey_is_sk(sign_key) &&
r == SSH_ERR_KEY_WRONG_PASSPHRASE) {
notify_complete(notifier, NULL);
notifier = NULL;
+ xasprintf(&prompt, "Enter PIN for %s key %s: ",
+ sshkey_type(sign_key), id->filename);
+ pin = read_passphrase(prompt, 0);
retried = 1;
goto retry_pin;
}
@@ -1604,6 +1611,13 @@ load_identity_file(Identity *id)
private = NULL;
quit = 1;
}
+ if (!quit && (r = sshkey_check_rsa_length(private,
+ options.required_rsa_size)) != 0) {
+ debug_fr(r, "Skipping key %s", id->filename);
+ sshkey_free(private);
+ private = NULL;
+ quit = 1;
+ }
if (!quit && private != NULL && id->agent_fd == -1 &&
!(id->key && id->isprivate))
maybe_add_key_to_agent(id->filename, private, comment,
@@ -1750,6 +1764,12 @@ pubkey_prepare(struct ssh *ssh, Authctxt *authctxt)
/* list of keys supported by the agent */
if ((r = get_agent_identities(ssh, &agent_fd, &idlist)) == 0) {
for (j = 0; j < idlist->nkeys; j++) {
+ if ((r = sshkey_check_rsa_length(idlist->keys[j],
+ options.required_rsa_size)) != 0) {
+ debug_fr(r, "ignoring %s agent key",
+ sshkey_ssh_name(idlist->keys[j]));
+ continue;
+ }
found = 0;
TAILQ_FOREACH(id, &files, next) {
/*
diff --git a/sshd.0 b/sshd.0
index d97624e253c7..2a4613e3296f 100644
--- a/sshd.0
+++ b/sshd.0
@@ -311,8 +311,10 @@ AUTHORIZED_KEYS FILE FORMAT
expiry-time="timespec"
Specifies a time after which the key will not be accepted. The
- time may be specified as a YYYYMMDD date or a YYYYMMDDHHMM[SS]
- time in the system time-zone.
+ time may be specified as a YYYYMMDD[Z] date or a
+ YYYYMMDDHHMM[SS][Z] time. Dates and times will be interpreted in
+ the system time zone unless suffixed by a Z character, in which
+ case they will be interpreted in the UTC time zone.
from="pattern-list"
Specifies that in addition to public key authentication, either
@@ -516,7 +518,6 @@ SSH_KNOWN_HOSTS FILE FORMAT
An example ssh_known_hosts file:
# Comments allowed at start of line
- closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# A hashed hostname
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
@@ -672,4 +673,4 @@ AUTHORS
versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
for privilege separation.
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 11, 2022 OpenBSD 7.1
diff --git a/sshd.8 b/sshd.8
index 350b08ad2380..ac1c62de0b0a 100644
--- a/sshd.8
+++ b/sshd.8
@@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $OpenBSD: sshd.8,v 1.318 2022/03/31 17:27:27 naddy Exp $
-.Dd $Mdocdate: March 31 2022 $
+.\" $OpenBSD: sshd.8,v 1.321 2022/09/11 06:38:11 jmc Exp $
+.Dd $Mdocdate: September 11 2022 $
.Dt SSHD 8
.Os
.Sh NAME
@@ -217,7 +217,7 @@ reliably as configuration options may change.
.It Fl u Ar len
This option is used to specify the size of the field
in the
-.Li utmp
+.Vt utmp
structure that holds the remote host name.
If the resolved host name is longer than
.Ar len ,
@@ -533,8 +533,9 @@ controlled via the
option.
.It Cm expiry-time="timespec"
Specifies a time after which the key will not be accepted.
-The time may be specified as a YYYYMMDD date or a YYYYMMDDHHMM[SS] time
-in the system time-zone.
+The time may be specified as a YYYYMMDD[Z] date or a YYYYMMDDHHMM[SS][Z] time.
+Dates and times will be interpreted in the system time zone unless suffixed
+by a Z character, in which case they will be interpreted in the UTC time zone.
.It Cm from="pattern-list"
Specifies that in addition to public key authentication, either the canonical
name of the remote host or its IP address must be present in the
@@ -812,7 +813,6 @@ names to their hashed representations.
An example ssh_known_hosts file:
.Bd -literal -offset 3n
# Comments allowed at start of line
-closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# A hashed hostname
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
diff --git a/sshd.c b/sshd.c
index 0ee65b54be9c..395ef493d461 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshd.c,v 1.585 2022/03/18 04:04:11 djm Exp $ */
+/* $OpenBSD: sshd.c,v 1.591 2022/09/17 10:34:29 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1267,8 +1267,12 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
usleep(100 * 1000);
continue;
}
- if (unset_nonblock(*newsock) == -1 ||
- pipe(startup_p) == -1) {
+ if (unset_nonblock(*newsock) == -1) {
+ close(*newsock);
+ continue;
+ }
+ if (pipe(startup_p) == -1) {
+ error_f("pipe(startup_p): %s", strerror(errno));
close(*newsock);
continue;
}
@@ -1866,6 +1870,13 @@ main(int ac, char **av)
fatal_r(r, "Could not demote key: \"%s\"",
options.host_key_files[i]);
}
+ if (pubkey != NULL && (r = sshkey_check_rsa_length(pubkey,
+ options.required_rsa_size)) != 0) {
+ error_fr(r, "Host key %s", options.host_key_files[i]);
+ sshkey_free(pubkey);
+ sshkey_free(key);
+ continue;
+ }
sensitive_data.host_keys[i] = key;
sensitive_data.host_pubkeys[i] = pubkey;
@@ -2364,14 +2375,14 @@ do_ssh2_kex(struct ssh *ssh)
{
char *myproposal[PROPOSAL_MAX] = { KEX_SERVER };
struct kex *kex;
+ char *prop_kex = NULL, *prop_enc = NULL, *prop_hostkey = NULL;
int r;
- myproposal[PROPOSAL_KEX_ALGS] = compat_kex_proposal(ssh,
+ myproposal[PROPOSAL_KEX_ALGS] = prop_kex = compat_kex_proposal(ssh,
options.kex_algorithms);
- myproposal[PROPOSAL_ENC_ALGS_CTOS] = compat_cipher_proposal(ssh,
- options.ciphers);
- myproposal[PROPOSAL_ENC_ALGS_STOC] = compat_cipher_proposal(ssh,
- options.ciphers);
+ myproposal[PROPOSAL_ENC_ALGS_CTOS] =
+ myproposal[PROPOSAL_ENC_ALGS_STOC] = prop_enc =
+ compat_cipher_proposal(ssh, options.ciphers);
myproposal[PROPOSAL_MAC_ALGS_CTOS] =
myproposal[PROPOSAL_MAC_ALGS_STOC] = options.macs;
@@ -2384,8 +2395,8 @@ do_ssh2_kex(struct ssh *ssh)
ssh_packet_set_rekey_limits(ssh, options.rekey_limit,
options.rekey_interval);
- myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal(
- ssh, list_hostkey_types());
+ myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = prop_hostkey =
+ compat_pkalg_proposal(ssh, list_hostkey_types());
/* start key exchange */
if ((r = kex_setup(ssh, myproposal)) != 0)
@@ -2420,6 +2431,9 @@ do_ssh2_kex(struct ssh *ssh)
(r = ssh_packet_write_wait(ssh)) != 0)
fatal_fr(r, "send test");
#endif
+ free(prop_kex);
+ free(prop_enc);
+ free(prop_hostkey);
debug("KEX done");
}
diff --git a/sshd_config.0 b/sshd_config.0
index be2ccfcfc214..2278ba61db45 100644
--- a/sshd_config.0
+++ b/sshd_config.0
@@ -498,7 +498,7 @@ DESCRIPTION
IgnoreUserKnownHosts
Specifies whether sshd(8) should ignore the user's
~/.ssh/known_hosts during HostbasedAuthentication and use only
- the system-wide known hosts file /etc/ssh/known_hosts. The
+ the system-wide known hosts file /etc/ssh/ssh_known_hosts. The
default is M-bM-^@M-^\noM-bM-^@M-^].
Include
@@ -932,19 +932,25 @@ DESCRIPTION
default is yes.
RekeyLimit
- Specifies the maximum amount of data that may be transmitted
- before the session key is renegotiated, optionally followed by a
- maximum amount of time that may pass before the session key is
- renegotiated. The first argument is specified in bytes and may
- have a suffix of M-bM-^@M-^XKM-bM-^@M-^Y, M-bM-^@M-^XMM-bM-^@M-^Y, or M-bM-^@M-^XGM-bM-^@M-^Y to indicate Kilobytes,
- Megabytes, or Gigabytes, respectively. The default is between
- M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional second
- value is specified in seconds and may use any of the units
+ Specifies the maximum amount of data that may be transmitted or
+ received before the session key is renegotiated, optionally
+ followed by a maximum amount of time that may pass before the
+ session key is renegotiated. The first argument is specified in
+ bytes and may have a suffix of M-bM-^@M-^XKM-bM-^@M-^Y, M-bM-^@M-^XMM-bM-^@M-^Y, or M-bM-^@M-^XGM-bM-^@M-^Y to indicate
+ Kilobytes, Megabytes, or Gigabytes, respectively. The default is
+ between M-bM-^@M-^X1GM-bM-^@M-^Y and M-bM-^@M-^X4GM-bM-^@M-^Y, depending on the cipher. The optional
+ second value is specified in seconds and may use any of the units
documented in the TIME FORMATS section. The default value for
RekeyLimit is default none, which means that rekeying is
performed after the cipher's default amount of data has been sent
or received and no time based rekeying is done.
+ RequiredRSASize
+ Specifies the minimum RSA key size (in bits) that sshd(8) will
+ accept. User and host-based authentication keys smaller than
+ this limit will be refused. The default is 1024 bits. Note that
+ this limit may only be raised from the default.
+
RevokedKeys
Specifies revoked public keys file, or none to not use one. Keys
listed in this file will be refused for public key
@@ -1191,4 +1197,4 @@ AUTHORS
versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
for privilege separation.
-OpenBSD 7.0 March 31, 2022 OpenBSD 7.0
+OpenBSD 7.1 September 17, 2022 OpenBSD 7.1
diff --git a/sshd_config.5 b/sshd_config.5
index 3a4ffab7c502..f5a06637f2c0 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -33,8 +33,8 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.\" $OpenBSD: sshd_config.5,v 1.340 2022/03/31 17:58:44 naddy Exp $
-.Dd $Mdocdate: March 31 2022 $
+.\" $OpenBSD: sshd_config.5,v 1.343 2022/09/17 10:34:29 djm Exp $
+.Dd $Mdocdate: September 17 2022 $
.Dt SSHD_CONFIG 5
.Os
.Sh NAME
@@ -817,7 +817,7 @@ should ignore the user's
during
.Cm HostbasedAuthentication
and use only the system-wide known hosts file
-.Pa /etc/ssh/known_hosts .
+.Pa /etc/ssh/ssh_known_hosts .
The default is
.Dq no .
.It Cm Include
@@ -1572,9 +1572,9 @@ Specifies whether public key authentication is allowed.
The default is
.Cm yes .
.It Cm RekeyLimit
-Specifies the maximum amount of data that may be transmitted before the
-session key is renegotiated, optionally followed by a maximum amount of
-time that may pass before the session key is renegotiated.
+Specifies the maximum amount of data that may be transmitted or received
+before the session key is renegotiated, optionally followed by a maximum
+amount of time that may pass before the session key is renegotiated.
The first argument is specified in bytes and may have a suffix of
.Sq K ,
.Sq M ,
@@ -1596,6 +1596,16 @@ is
.Cm default none ,
which means that rekeying is performed after the cipher's default amount
of data has been sent or received and no time based rekeying is done.
+.It Cm RequiredRSASize
+Specifies the minimum RSA key size (in bits) that
+.Xr sshd 8
+will accept.
+User and host-based authentication keys smaller than this limit will be
+refused.
+The default is
+.Cm 1024
+bits.
+Note that this limit may only be raised from the default.
.It Cm RevokedKeys
Specifies revoked public keys file, or
.Cm none
diff --git a/sshkey.c b/sshkey.c
index f1e92003b7e4..770932357139 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.120 2022/01/06 22:05:42 djm Exp $ */
+/* $OpenBSD: sshkey.c,v 1.122 2022/09/17 10:30:45 djm Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -2125,14 +2125,38 @@ sshkey_shield_private(struct sshkey *k)
return r;
}
+/* Check deterministic padding after private key */
+static int
+private2_check_padding(struct sshbuf *decrypted)
+{
+ u_char pad;
+ size_t i;
+ int r;
+
+ i = 0;
+ while (sshbuf_len(decrypted)) {
+ if ((r = sshbuf_get_u8(decrypted, &pad)) != 0)
+ goto out;
+ if (pad != (++i & 0xff)) {
+ r = SSH_ERR_INVALID_FORMAT;
+ goto out;
+ }
+ }
+ /* success */
+ r = 0;
+ out:
+ explicit_bzero(&pad, sizeof(pad));
+ explicit_bzero(&i, sizeof(i));
+ return r;
+}
+
int
sshkey_unshield_private(struct sshkey *k)
{
struct sshbuf *prvbuf = NULL;
- u_char pad, *cp, keyiv[SSH_DIGEST_MAX_LENGTH];
+ u_char *cp, keyiv[SSH_DIGEST_MAX_LENGTH];
struct sshcipher_ctx *cctx = NULL;
const struct sshcipher *cipher;
- size_t i;
struct sshkey *kswap = NULL, tmp;
int r = SSH_ERR_INTERNAL_ERROR;
@@ -2194,16 +2218,9 @@ sshkey_unshield_private(struct sshkey *k)
/* Parse private key */
if ((r = sshkey_private_deserialize(prvbuf, &kswap)) != 0)
goto out;
- /* Check deterministic padding */
- i = 0;
- while (sshbuf_len(prvbuf)) {
- if ((r = sshbuf_get_u8(prvbuf, &pad)) != 0)
- goto out;
- if (pad != (++i & 0xff)) {
- r = SSH_ERR_INVALID_FORMAT;
- goto out;
- }
- }
+
+ if ((r = private2_check_padding(prvbuf)) != 0)
+ goto out;
/* Swap the parsed key back into place */
tmp = *kswap;
@@ -2348,18 +2365,24 @@ cert_parse(struct sshbuf *b, struct sshkey *key, struct sshbuf *certbuf)
return ret;
}
-#ifdef WITH_OPENSSL
-static int
-check_rsa_length(const RSA *rsa)
+int
+sshkey_check_rsa_length(const struct sshkey *k, int min_size)
{
+#ifdef WITH_OPENSSL
const BIGNUM *rsa_n;
+ int nbits;
- RSA_get0_key(rsa, &rsa_n, NULL, NULL);
- if (BN_num_bits(rsa_n) < SSH_RSA_MINIMUM_MODULUS_SIZE)
+ if (k == NULL || k->rsa == NULL ||
+ (k->type != KEY_RSA && k->type != KEY_RSA_CERT))
+ return 0;
+ RSA_get0_key(k->rsa, &rsa_n, NULL, NULL);
+ nbits = BN_num_bits(rsa_n);
+ if (nbits < SSH_RSA_MINIMUM_MODULUS_SIZE ||
+ (min_size > 0 && nbits < min_size))
return SSH_ERR_KEY_LENGTH;
+#endif /* WITH_OPENSSL */
return 0;
}
-#endif
static int
sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp,
@@ -2422,7 +2445,7 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp,
goto out;
}
rsa_n = rsa_e = NULL; /* transferred */
- if ((ret = check_rsa_length(key->rsa)) != 0)
+ if ((ret = sshkey_check_rsa_length(key, 0)) != 0)
goto out;
#ifdef DEBUG_PK
RSA_print_fp(stderr, key->rsa, 8);
@@ -3625,7 +3648,7 @@ sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp)
goto out;
}
rsa_p = rsa_q = NULL; /* transferred */
- if ((r = check_rsa_length(k->rsa)) != 0)
+ if ((r = sshkey_check_rsa_length(k, 0)) != 0)
goto out;
if ((r = ssh_rsa_complete_crt_parameters(k, rsa_iqmp)) != 0)
goto out;
@@ -4028,9 +4051,9 @@ sshkey_private_to_blob2(struct sshkey *prv, struct sshbuf *blob,
explicit_bzero(salt, sizeof(salt));
if (key != NULL)
freezero(key, keylen + ivlen);
- if (pubkeyblob != NULL)
+ if (pubkeyblob != NULL)
freezero(pubkeyblob, pubkeylen);
- if (b64 != NULL)
+ if (b64 != NULL)
freezero(b64, strlen(b64));
return r;
}
@@ -4257,31 +4280,6 @@ private2_decrypt(struct sshbuf *decoded, const char *passphrase,
return r;
}
-/* Check deterministic padding after private key */
-static int
-private2_check_padding(struct sshbuf *decrypted)
-{
- u_char pad;
- size_t i;
- int r = SSH_ERR_INTERNAL_ERROR;
-
- i = 0;
- while (sshbuf_len(decrypted)) {
- if ((r = sshbuf_get_u8(decrypted, &pad)) != 0)
- goto out;
- if (pad != (++i & 0xff)) {
- r = SSH_ERR_INVALID_FORMAT;
- goto out;
- }
- }
- /* success */
- r = 0;
- out:
- explicit_bzero(&pad, sizeof(pad));
- explicit_bzero(&i, sizeof(i));
- return r;
-}
-
static int
sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
struct sshkey **keyp, char **commentp)
@@ -4652,7 +4650,7 @@ sshkey_parse_private_pem_fileblob(struct sshbuf *blob, int type,
r = SSH_ERR_LIBCRYPTO_ERROR;
goto out;
}
- if ((r = check_rsa_length(prv->rsa)) != 0)
+ if ((r = sshkey_check_rsa_length(prv, 0)) != 0)
goto out;
} else if (EVP_PKEY_base_id(pk) == EVP_PKEY_DSA &&
(type == KEY_UNSPEC || type == KEY_DSA)) {
diff --git a/sshkey.h b/sshkey.h
index 094815e00a2a..be254e6be9dc 100644
--- a/sshkey.h
+++ b/sshkey.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.h,v 1.51 2022/01/06 22:05:42 djm Exp $ */
+/* $OpenBSD: sshkey.h,v 1.52 2022/09/17 10:30:45 djm Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -273,6 +273,7 @@ int sshkey_parse_private_fileblob_type(struct sshbuf *blob, int type,
int sshkey_parse_pubkey_from_private_fileblob_type(struct sshbuf *blob,
int type, struct sshkey **pubkeyp);
+int sshkey_check_rsa_length(const struct sshkey *, int);
/* XXX should be internal, but used by ssh-keygen */
int ssh_rsa_complete_crt_parameters(struct sshkey *, const BIGNUM *);
diff --git a/sshlogin.c b/sshlogin.c
index 82dd848191b1..06a7b381ade7 100644
--- a/sshlogin.c
+++ b/sshlogin.c
@@ -50,6 +50,7 @@
#include <fcntl.h>
#include <stdarg.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
diff --git a/sshsig.c b/sshsig.c
index 1e3b63982ba8..eb2a931e9c18 100644
--- a/sshsig.c
+++ b/sshsig.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshsig.c,v 1.29 2022/03/30 04:27:51 djm Exp $ */
+/* $OpenBSD: sshsig.c,v 1.30 2022/08/19 03:06:30 djm Exp $ */
/*
* Copyright (c) 2019 Google LLC
*
@@ -491,7 +491,7 @@ hash_file(int fd, const char *hashalg, struct sshbuf **bp)
{
char *hex, rbuf[8192], hash[SSH_DIGEST_MAX_LENGTH];
ssize_t n, total = 0;
- struct ssh_digest_ctx *ctx;
+ struct ssh_digest_ctx *ctx = NULL;
int alg, oerrno, r = SSH_ERR_INTERNAL_ERROR;
struct sshbuf *b = NULL;
@@ -514,7 +514,6 @@ hash_file(int fd, const char *hashalg, struct sshbuf **bp)
continue;
oerrno = errno;
error_f("read: %s", strerror(errno));
- ssh_digest_free(ctx);
errno = oerrno;
r = SSH_ERR_SYSTEM_ERROR;
goto out;
@@ -549,9 +548,11 @@ hash_file(int fd, const char *hashalg, struct sshbuf **bp)
/* success */
r = 0;
out:
+ oerrno = errno;
sshbuf_free(b);
ssh_digest_free(ctx);
explicit_bzero(hash, sizeof(hash));
+ errno = oerrno;
return r;
}
diff --git a/version.h b/version.h
index e600fe4c34c9..1a034c838dd2 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
-/* $OpenBSD: version.h,v 1.94 2022/04/04 22:45:25 djm Exp $ */
+/* $OpenBSD: version.h,v 1.95 2022/09/26 22:18:40 djm Exp $ */
-#define SSH_VERSION "OpenSSH_9.0"
+#define SSH_VERSION "OpenSSH_9.1"
#define SSH_PORTABLE "p1"
#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
diff --git a/xmss_hash.c b/xmss_hash.c
index 50a577943974..db0e5fa36597 100644
--- a/xmss_hash.c
+++ b/xmss_hash.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xmss_hash.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */
+/* $OpenBSD: xmss_hash.c,v 1.3 2022/04/20 16:00:25 millert Exp $ */
/*
hash.c version 20160722
Andreas Hülsing
@@ -19,9 +19,6 @@ Public domain.
#endif
#include <stdio.h>
#include <string.h>
-#include <openssl/sha.h>
-#include <openssl/hmac.h>
-#include <openssl/evp.h>
int core_hash_SHA2(unsigned char *, const unsigned int, const unsigned char *,
unsigned int, const unsigned char *, unsigned long long, unsigned int);