summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2713
-rw-r--r--PROTOCOL4
-rw-r--r--PROTOCOL.agent4
-rw-r--r--README2
-rw-r--r--auth-chall.c2
-rw-r--r--auth-options.c25
-rw-r--r--auth-pam.c4
-rw-r--r--auth.c5
-rw-r--r--auth.h6
-rw-r--r--auth2-hostbased.c5
-rw-r--r--auth2-pubkey.c625
-rw-r--r--authfd.c8
-rw-r--r--authfile.c6
-rw-r--r--channels.c63
-rw-r--r--channels.h5
-rw-r--r--clientloop.c32
-rw-r--r--compat.c51
-rw-r--r--compat.h4
-rwxr-xr-xconfig.guess6
-rwxr-xr-xconfigure124
-rw-r--r--configure.ac30
-rw-r--r--contrib/redhat/openssh.spec2
-rw-r--r--contrib/suse/openssh.spec2
-rw-r--r--debian/.git-dpm14
-rw-r--r--debian/changelog68
-rw-r--r--debian/patches/auth-log-verbosity.patch24
-rw-r--r--debian/patches/authorized-keys-man-symlink.patch2
-rw-r--r--debian/patches/consolekit.patch20
-rw-r--r--debian/patches/debian-banner.patch24
-rw-r--r--debian/patches/debian-config.patch22
-rw-r--r--debian/patches/dnssec-sshfp.patch2
-rw-r--r--debian/patches/doc-hash-tab-completion.patch6
-rw-r--r--debian/patches/doc-upstart.patch4
-rw-r--r--debian/patches/gnome-ssh-askpass2-icon.patch2
-rw-r--r--debian/patches/gssapi.patch237
-rw-r--r--debian/patches/helpful-wait-terminate.patch2
-rw-r--r--debian/patches/keepalive-extensions.patch16
-rw-r--r--debian/patches/lintian-symlink-pickiness.patch2
-rw-r--r--debian/patches/mention-ssh-keygen-on-keychange.patch4
-rw-r--r--debian/patches/no-openssl-version-status.patch2
-rw-r--r--debian/patches/openbsd-docs.patch14
-rw-r--r--debian/patches/package-versioning.patch10
-rw-r--r--debian/patches/quieter-signals.patch6
-rw-r--r--debian/patches/restore-tcp-wrappers.patch20
-rw-r--r--debian/patches/scp-quoting.patch4
-rw-r--r--debian/patches/selinux-role.patch22
-rw-r--r--debian/patches/shell-path.patch6
-rw-r--r--debian/patches/sigstop.patch6
-rw-r--r--debian/patches/ssh-agent-setgid.patch6
-rw-r--r--debian/patches/ssh-argv0.patch6
-rw-r--r--debian/patches/ssh-vulnkey-compat.patch8
-rw-r--r--debian/patches/ssh1-keepalive.patch12
-rw-r--r--debian/patches/syslog-level-silent.patch6
-rw-r--r--debian/patches/user-group-modes.patch22
-rw-r--r--dh.c49
-rw-r--r--dh.h3
-rw-r--r--digest-libc.c4
-rw-r--r--dispatch.c22
-rw-r--r--dns.h4
-rw-r--r--groupaccess.c6
-rw-r--r--gss-genr.c1
-rw-r--r--gss-serv.c8
-rw-r--r--hmac.c4
-rw-r--r--hostfile.c11
-rw-r--r--kex.c4
-rw-r--r--kexc25519.c7
-rw-r--r--kexc25519s.c3
-rw-r--r--kexgexc.c33
-rw-r--r--kexgexs.c49
-rw-r--r--krl.c4
-rw-r--r--match.c14
-rw-r--r--match.h6
-rw-r--r--misc.c4
-rw-r--r--moduli507
-rw-r--r--monitor.c22
-rw-r--r--monitor_wrap.c19
-rw-r--r--monitor_wrap.h6
-rw-r--r--mux.c23
-rw-r--r--myproposal.h25
-rw-r--r--openbsd-compat/bcrypt_pbkdf.c18
-rw-r--r--openbsd-compat/blowfish.c2
-rw-r--r--openbsd-compat/bsd-cygwin_util.c2
-rw-r--r--openbsd-compat/bsd-misc.h4
-rw-r--r--openbsd-compat/openbsd-compat.h2
-rw-r--r--openbsd-compat/rmd160.c2
-rw-r--r--packet.c50
-rw-r--r--readconf.c37
-rw-r--r--regress/Makefile12
-rw-r--r--regress/README.regress2
-rw-r--r--regress/cfgparse.sh75
-rw-r--r--regress/cipher-speed.sh4
-rw-r--r--regress/hostkey-rotate.sh8
-rw-r--r--regress/integrity.sh4
-rw-r--r--regress/kextype.sh4
-rw-r--r--regress/keys-command.sh59
-rw-r--r--regress/netcat.c8
-rw-r--r--regress/principals-command.sh141
-rw-r--r--regress/ssh-com.sh6
-rwxr-xr-xregress/ssh2putty.sh6
-rw-r--r--regress/test-exec.sh2
-rw-r--r--regress/try-ciphers.sh4
-rw-r--r--regress/unittests/hostkeys/test_iterate.c6
-rw-r--r--regress/unittests/sshkey/test_sshkey.c4
-rw-r--r--rijndael.c2
-rw-r--r--sandbox-seccomp-filter.c111
-rw-r--r--sandbox-systrace.c21
-rw-r--r--scp.c4
-rw-r--r--servconf.c164
-rw-r--r--servconf.h16
-rw-r--r--session.c8
-rw-r--r--sftp-client.c9
-rw-r--r--sftp-client.h6
-rw-r--r--sftp-server.c7
-rw-r--r--ssh-add.019
-rw-r--r--ssh-add.118
-rw-r--r--ssh-add.c20
-rw-r--r--ssh-agent.09
-rw-r--r--ssh-agent.113
-rw-r--r--ssh-agent.c80
-rw-r--r--ssh-keygen.c349
-rw-r--r--ssh-keyscan.c11
-rw-r--r--ssh-keysign.c4
-rw-r--r--ssh-pkcs11.c34
-rw-r--r--ssh-rsa.c4
-rw-r--r--ssh.051
-rw-r--r--ssh.132
-rw-r--r--ssh.c12
-rw-r--r--ssh_config.034
-rw-r--r--ssh_config.525
-rw-r--r--sshbuf-misc.c4
-rw-r--r--sshconnect.c7
-rw-r--r--sshconnect2.c5
-rw-r--r--sshd.06
-rw-r--r--sshd.86
-rw-r--r--sshd.c25
-rw-r--r--sshd_config4
-rw-r--r--sshd_config.0131
-rw-r--r--sshd_config.5105
-rw-r--r--sshkey.c201
-rw-r--r--sshkey.h3
-rw-r--r--sshpty.c4
-rw-r--r--uidswap.c6
-rw-r--r--uuencode.c4
-rw-r--r--version.h4
-rw-r--r--xmalloc.c18
-rw-r--r--xmalloc.h4
146 files changed, 4390 insertions, 2837 deletions
diff --git a/ChangeLog b/ChangeLog
index 092cc48ef..c63681f16 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1535 @@
1commit 7de4b03a6e4071d454b72927ffaf52949fa34545
2Author: djm@openbsd.org <djm@openbsd.org>
3Date: Wed Jul 1 02:32:17 2015 +0000
4
5 upstream commit
6
7 twiddle; (this commit marks the openssh-6.9 release)
8
9 Upstream-ID: 78500582819f61dd8adee36ec5cc9b9ac9351234
10
11commit 1bf477d3cdf1a864646d59820878783d42357a1d
12Author: djm@openbsd.org <djm@openbsd.org>
13Date: Wed Jul 1 02:26:31 2015 +0000
14
15 upstream commit
16
17 better refuse ForwardX11Trusted=no connections attempted
18 after ForwardX11Timeout expires; reported by Jann Horn
19
20 Upstream-ID: bf0fddadc1b46a0334e26c080038313b4b6dea21
21
22commit 47aa7a0f8551b471fcae0447c1d78464f6dba869
23Author: djm@openbsd.org <djm@openbsd.org>
24Date: Wed Jul 1 01:56:13 2015 +0000
25
26 upstream commit
27
28 put back default PermitRootLogin=no
29
30 Upstream-ID: 7bdedd5cead99c57ed5571f3b6b7840922d5f728
31
32commit 984b064fe2a23733733262f88d2e1b2a1a501662
33Author: djm@openbsd.org <djm@openbsd.org>
34Date: Wed Jul 1 01:55:13 2015 +0000
35
36 upstream commit
37
38 openssh-6.9
39
40 Upstream-ID: 6cfe8e1904812531080e6ab6e752d7001b5b2d45
41
42commit d921082ed670f516652eeba50705e1e9f6325346
43Author: djm@openbsd.org <djm@openbsd.org>
44Date: Wed Jul 1 01:55:00 2015 +0000
45
46 upstream commit
47
48 reset default PermitRootLogin to 'yes' (momentarily, for
49 release)
50
51 Upstream-ID: cad8513527066e65dd7a1c16363d6903e8cefa24
52
53commit 66295e0e1ba860e527f191b6325d2d77dec4dbce
54Author: Damien Miller <djm@mindrot.org>
55Date: Wed Jul 1 11:49:12 2015 +1000
56
57 crank version numbers for release
58
59commit 37035c07d4f26bb1fbe000d2acf78efdb008681d
60Author: Damien Miller <djm@mindrot.org>
61Date: Wed Jul 1 10:49:37 2015 +1000
62
63 s/--with-ssh1/--without-ssh1/
64
65commit 629df770dbadc2accfbe1c81b3f31f876d0acd84
66Author: djm@openbsd.org <djm@openbsd.org>
67Date: Tue Jun 30 05:25:07 2015 +0000
68
69 upstream commit
70
71 fatal() when a remote window update causes the window
72 value to overflow. Reported by Georg Wicherski, ok markus@
73
74 Upstream-ID: ead397a9aceb3bf74ebfa5fcaf259d72e569f351
75
76commit f715afebe735d61df3fd30ad72d9ac1c8bd3b5f2
77Author: djm@openbsd.org <djm@openbsd.org>
78Date: Tue Jun 30 05:23:25 2015 +0000
79
80 upstream commit
81
82 Fix math error in remote window calculations that causes
83 eventual stalls for datagram channels. Reported by Georg Wicherski, ok
84 markus@
85
86 Upstream-ID: be54059d11bf64e0d85061f7257f53067842e2ab
87
88commit 52fb6b9b034fcfd24bf88cc7be313e9c31de9889
89Author: Damien Miller <djm@mindrot.org>
90Date: Tue Jun 30 16:05:40 2015 +1000
91
92 skip IPv6-related portions on hosts without IPv6
93
94 with Tim Rice
95
96commit 512caddf590857af6aa12218461b5c0441028cf5
97Author: djm@openbsd.org <djm@openbsd.org>
98Date: Mon Jun 29 22:35:12 2015 +0000
99
100 upstream commit
101
102 add getpid to sandbox, reachable by grace_alarm_handler
103
104 reported by Jakub Jelen; bz#2419
105
106 Upstream-ID: d0da1117c16d4c223954995d35b0f47c8f684cd8
107
108commit 78c2a4f883ea9aba866358e2acd9793a7f42ca93
109Author: djm@openbsd.org <djm@openbsd.org>
110Date: Fri Jun 26 05:13:20 2015 +0000
111
112 upstream commit
113
114 Fix \-escaping bug that caused forward path parsing to skip
115 two characters and skip past the end of the string.
116
117 Based on patch by Salvador Fandino; ok dtucker@
118
119 Upstream-ID: 7b879dc446335677cbe4cb549495636a0535f3bd
120
121commit bc20205c91c9920361d12b15d253d4997dba494a
122Author: Damien Miller <djm@mindrot.org>
123Date: Thu Jun 25 09:51:39 2015 +1000
124
125 add missing pselect6
126
127 patch from Jakub Jelen
128
129commit 9d27fb73b4a4e5e99cb880af790d5b1ce44f720a
130Author: djm@openbsd.org <djm@openbsd.org>
131Date: Wed Jun 24 23:47:23 2015 +0000
132
133 upstream commit
134
135 correct test to sshkey_sign(); spotted by Albert S.
136
137 Upstream-ID: 5f7347f40f0ca6abdaca2edb3bd62f4776518933
138
139commit 7ed01a96a1911d8b4a9ef4f3d064e1923bfad7e3
140Author: dtucker@openbsd.org <dtucker@openbsd.org>
141Date: Wed Jun 24 01:49:19 2015 +0000
142
143 upstream commit
144
145 Revert previous commit. We still want to call setgroups
146 in the case where there are zero groups to remove any that we might otherwise
147 inherit (as pointed out by grawity at gmail.com) and since the 2nd argument
148 to setgroups is always a static global it's always valid to dereference in
149 this case. ok deraadt@ djm@
150
151 Upstream-ID: 895b5ac560a10befc6b82afa778641315725fd01
152
153commit 882f8bf94f79528caa65b0ba71c185d705bb7195
154Author: dtucker@openbsd.org <dtucker@openbsd.org>
155Date: Wed Jun 24 01:49:19 2015 +0000
156
157 upstream commit
158
159 Revert previous commit. We still want to call setgroups in
160 the case where there are zero groups to remove any that we might otherwise
161 inherit (as pointed out by grawity at gmail.com) and since the 2nd argument
162 to setgroups is always a static global it's always valid to dereference in
163 this case. ok deraadt@ djm@
164
165 Upstream-ID: 895b5ac560a10befc6b82afa778641315725fd01
166
167commit 9488538a726951e82b3a4374f3c558d72c80a89b
168Author: djm@openbsd.org <djm@openbsd.org>
169Date: Mon Jun 22 23:42:16 2015 +0000
170
171 upstream commit
172
173 Don't count successful partial authentication as failures
174 in monitor; this may have caused the monitor to refuse multiple
175 authentications that would otherwise have successfully completed; ok markus@
176
177 Upstream-ID: eb74b8e506714d0f649bd5c300f762a527af04a3
178
179commit 63b78d003bd8ca111a736e6cea6333da50f5f09b
180Author: dtucker@openbsd.org <dtucker@openbsd.org>
181Date: Mon Jun 22 12:29:57 2015 +0000
182
183 upstream commit
184
185 Don't call setgroups if we have zero groups; there's no
186 guarantee that it won't try to deref the pointer. Based on a patch from mail
187 at quitesimple.org, ok djm deraadt
188
189 Upstream-ID: 2fff85e11d7a9a387ef7fddf41fbfaf566708ab1
190
191commit 5c15e22c691c79a47747bcf5490126656f97cecd
192Author: Damien Miller <djm@mindrot.org>
193Date: Thu Jun 18 15:07:56 2015 +1000
194
195 fix syntax error
196
197commit 596dbca82f3f567fb3d2d69af4b4e1d3ba1e6403
198Author: jsing@openbsd.org <jsing@openbsd.org>
199Date: Mon Jun 15 18:44:22 2015 +0000
200
201 upstream commit
202
203 If AuthorizedPrincipalsCommand is specified, however
204 AuthorizedPrincipalsFile is not (or is set to "none"), authentication will
205 potentially fail due to key_cert_check_authority() failing to locate a
206 principal that matches the username, even though an authorized principal has
207 already been matched in the output of the subprocess. Fix this by using the
208 same logic to determine if pw->pw_name should be passed, as is used to
209 determine if a authorized principal must be matched earlier on.
210
211 ok djm@
212
213 Upstream-ID: 43b42302ec846b0ea68aceb40677245391b9409d
214
215commit aff3e94c0d75d0d0fa84ea392b50ab04f8c57905
216Author: jsing@openbsd.org <jsing@openbsd.org>
217Date: Mon Jun 15 18:42:19 2015 +0000
218
219 upstream commit
220
221 Make the arguments to match_principals_command() similar
222 to match_principals_file(), by changing the last argument a struct
223 sshkey_cert * and dereferencing key->cert in the caller.
224
225 No functional change.
226
227 ok djm@
228
229 Upstream-ID: 533f99b844b21b47342b32b62e198dfffcf8651c
230
231commit 97e2e1596c202a4693468378b16b2353fd2d6c5e
232Author: Damien Miller <djm@mindrot.org>
233Date: Wed Jun 17 14:36:54 2015 +1000
234
235 trivial optimisation for seccomp-bpf
236
237 When doing arg inspection and the syscall doesn't match, skip
238 past the instruction that reloads the syscall into the accumulator,
239 since the accumulator hasn't been modified at this point.
240
241commit 99f33d7304893bd9fa04d227cb6e870171cded19
242Author: Damien Miller <djm@mindrot.org>
243Date: Wed Jun 17 10:50:51 2015 +1000
244
245 aarch64 support for seccomp-bpf sandbox
246
247 Also resort and tidy syscall list. Based on patches by Jakub Jelen
248 bz#2361; ok dtucker@
249
250commit 4ef702e1244633c1025ec7cfe044b9ab267097bf
251Author: djm@openbsd.org <djm@openbsd.org>
252Date: Mon Jun 15 01:32:50 2015 +0000
253
254 upstream commit
255
256 return failure on RSA signature error; reported by Albert S
257
258 Upstream-ID: e61bb93dbe0349625807b0810bc213a6822121fa
259
260commit a170f22baf18af0b1acf2788b8b715605f41a1f9
261Author: Tim Rice <tim@multitalents.net>
262Date: Tue Jun 9 22:41:13 2015 -0700
263
264 Fix t12 rules for out of tree builds.
265
266commit ec04dc4a5515c913121bc04ed261857e68fa5c18
267Author: millert@openbsd.org <millert@openbsd.org>
268Date: Fri Jun 5 15:13:13 2015 +0000
269
270 upstream commit
271
272 For "ssh -L 12345:/tmp/sock" don't fail with "No forward host
273 name." (we have a path, not a host name). Based on a diff from Jared
274 Yanovich. OK djm@
275
276 Upstream-ID: 2846b0a8c7de037e33657f95afbd282837fc213f
277
278commit 732d61f417a6aea0aa5308b59cb0f563bcd6edd6
279Author: djm@openbsd.org <djm@openbsd.org>
280Date: Fri Jun 5 03:44:14 2015 +0000
281
282 upstream commit
283
284 typo: accidental repetition; bz#2386
285
286 Upstream-ID: 45e620d99f6bc301e5949d34a54027374991c88b
287
288commit adfb24c69d1b6f5e758db200866c711e25a2ba73
289Author: Darren Tucker <dtucker@zip.com.au>
290Date: Fri Jun 5 14:51:40 2015 +1000
291
292 Add Linux powerpc64le and powerpcle entries.
293
294 Stopgap to resolve bz#2409 because we are so close to release and will
295 update config.guess and friends shortly after the release. ok djm@
296
297commit a1195a0fdc9eddddb04d3e9e44c4775431cb77da
298Merge: 6397eed d2480bc
299Author: Tim Rice <tim@multitalents.net>
300Date: Wed Jun 3 21:43:13 2015 -0700
301
302 Merge branch 'master' of git.mindrot.org:/var/git/openssh
303
304commit 6397eedf953b2b973d2d7cbb504ab501a07f8ddc
305Author: Tim Rice <tim@multitalents.net>
306Date: Wed Jun 3 21:41:11 2015 -0700
307
308 Remove unneeded backslashes. Patch from Ángel González
309
310commit d2480bcac1caf31b03068de877a47d6e1027bf6d
311Author: Darren Tucker <dtucker@zip.com.au>
312Date: Thu Jun 4 14:10:55 2015 +1000
313
314 Remove redundant include of stdarg.h. bz#2410
315
316commit 5e67859a623826ccdf2df284cbb37e2d8e2787eb
317Author: djm@openbsd.org <djm@openbsd.org>
318Date: Tue Jun 2 09:10:40 2015 +0000
319
320 upstream commit
321
322 mention CheckHostIP adding addresses to known_hosts;
323 bz#1993; ok dtucker@
324
325 Upstream-ID: fd44b68440fd0dc29abf9f2d3f703d74a2396cb7
326
327commit d7a58bbac6583e33fd5eca8e2c2cc70c57617818
328Author: Darren Tucker <dtucker@zip.com.au>
329Date: Tue Jun 2 20:15:26 2015 +1000
330
331 Replace strcpy with strlcpy.
332
333 ok djm, sanity check by Corinna Vinschen.
334
335commit 51a1c2115265c6e80ede8a5c9dccada9aeed7143
336Author: Damien Miller <djm@mindrot.org>
337Date: Fri May 29 18:27:21 2015 +1000
338
339 skip, rather than fatal when run without SUDO set
340
341commit 599f01142a376645b15cbc9349d7e8975e1cf245
342Author: Damien Miller <djm@mindrot.org>
343Date: Fri May 29 18:03:15 2015 +1000
344
345 fix merge botch that left ",," in KEX algs
346
347commit 0c2a81dfc21822f2423edd30751e5ec53467b347
348Author: Damien Miller <djm@mindrot.org>
349Date: Fri May 29 17:08:28 2015 +1000
350
351 re-enable SSH protocol 1 at compile time
352
353commit db438f9285d64282d3ac9e8c0944f59f037c0151
354Author: djm@openbsd.org <djm@openbsd.org>
355Date: Fri May 29 03:05:13 2015 +0000
356
357 upstream commit
358
359 make this work without SUDO set; ok dtucker@
360
361 Upstream-Regress-ID: bca88217b70bce2fe52b23b8e06bdeb82d98c715
362
363commit 1d9a2e2849c9864fe75daabf433436341c968e14
364Author: djm@openbsd.org <djm@openbsd.org>
365Date: Thu May 28 07:37:31 2015 +0000
366
367 upstream commit
368
369 wrap all moduli-related code in #ifdef WITH_OPENSSL.
370 based on patch from Reuben Hawkins; bz#2388 feedback and ok dtucker@
371
372 Upstream-ID: d80cfc8be3e6ec65b3fac9e87c4466533b31b7cf
373
374commit 496aeb25bc2d6c434171292e4714771b594bd00e
375Author: dtucker@openbsd.org <dtucker@openbsd.org>
376Date: Thu May 28 05:41:29 2015 +0000
377
378 upstream commit
379
380 Increase the allowed length of the known host file name
381 in the log message to be consistent with other cases. Part of bz#1993, ok
382 deraadt.
383
384 Upstream-ID: a9e97567be49f25daf286721450968251ff78397
385
386commit dd2cfeb586c646ff8d70eb93567b2e559ace5b14
387Author: dtucker@openbsd.org <dtucker@openbsd.org>
388Date: Thu May 28 05:09:45 2015 +0000
389
390 upstream commit
391
392 Fix typo (keywork->keyword)
393
394 Upstream-ID: 8aacd0f4089c0a244cf43417f4f9045dfaeab534
395
396commit 9cc6842493fbf23025ccc1edab064869640d3bec
397Author: djm@openbsd.org <djm@openbsd.org>
398Date: Thu May 28 04:50:53 2015 +0000
399
400 upstream commit
401
402 add error message on ftruncate failure; bz#2176
403
404 Upstream-ID: cbcc606e0b748520c74a210d8f3cc9718d3148cf
405
406commit d1958793a0072c22be26d136dbda5ae263e717a0
407Author: djm@openbsd.org <djm@openbsd.org>
408Date: Thu May 28 04:40:13 2015 +0000
409
410 upstream commit
411
412 make ssh-keygen default to ed25519 keys when compiled
413 without OpenSSL; bz#2388, ok dtucker@
414
415 Upstream-ID: 85a471fa6d3fa57a7b8e882d22cfbfc1d84cdc71
416
417commit 3ecde664c9fc5fb3667aedf9e6671462600f6496
418Author: dtucker@openbsd.org <dtucker@openbsd.org>
419Date: Wed May 27 23:51:10 2015 +0000
420
421 upstream commit
422
423 Reorder client proposal to prefer
424 diffie-hellman-group-exchange-sha1 over diffie-hellman-group14-sha1. ok djm@
425
426 Upstream-ID: 552c08d47347c3ee1a9a57d88441ab50abe17058
427
428commit 40f64292b907afd0a674fdbf3e4c2356d17a7d68
429Author: dtucker@openbsd.org <dtucker@openbsd.org>
430Date: Wed May 27 23:39:18 2015 +0000
431
432 upstream commit
433
434 Add a stronger (4k bit) fallback group that sshd can use
435 when the moduli file is missing or broken, sourced from RFC3526. bz#2302, ok
436 markus@ (earlier version), djm@
437
438 Upstream-ID: b635215746a25a829d117673d5e5a76d4baee7f4
439
440commit 5ab7d5fa03ad55bc438fab45dfb3aeb30a3c237a
441Author: Darren Tucker <dtucker@zip.com.au>
442Date: Thu May 28 10:03:40 2015 +1000
443
444 New moduli file from OpenBSD, removing 1k groups.
445
446 Remove 1k bit groups. ok deraadt@, markus@
447
448commit a71ba58adf34e599f30cdda6e9b93ae6e3937eea
449Author: djm@openbsd.org <djm@openbsd.org>
450Date: Wed May 27 05:15:02 2015 +0000
451
452 upstream commit
453
454 support PKCS#11 devices with external PIN entry devices
455 bz#2240, based on patch from Dirk-Willem van Gulik; feedback and ok dtucker@
456
457 Upstream-ID: 504568992b55a8fc984375242b1bd505ced61b0d
458
459commit b282fec1aa05246ed3482270eb70fc3ec5f39a00
460Author: dtucker@openbsd.org <dtucker@openbsd.org>
461Date: Tue May 26 23:23:40 2015 +0000
462
463 upstream commit
464
465 Cap DH-GEX group size at 4kbits for Cisco implementations.
466 Some of them will choke when asked for preferred sizes >4k instead of
467 returning the 4k group that they do have. bz#2209, ok djm@
468
469 Upstream-ID: 54b863a19713446b7431f9d06ad0532b4fcfef8d
470
471commit 3e91b4e8b0dc2b4b7e7d42cf6e8994a32e4cb55e
472Author: djm@openbsd.org <djm@openbsd.org>
473Date: Sun May 24 23:39:16 2015 +0000
474
475 upstream commit
476
477 add missing 'c' option to getopt(), case statement was
478 already there; from Felix Bolte
479
480 Upstream-ID: 9b19b4e2e0b54d6fefa0dfac707c51cf4bae3081
481
482commit 64a89ec07660abba4d0da7c0095b7371c98bab62
483Author: jsg@openbsd.org <jsg@openbsd.org>
484Date: Sat May 23 14:28:37 2015 +0000
485
486 upstream commit
487
488 fix a memory leak in an error path ok markus@ dtucker@
489
490 Upstream-ID: bc1da0f205494944918533d8780fde65dff6c598
491
492commit f948737449257d2cb83ffcfe7275eb79b677fd4a
493Author: djm@openbsd.org <djm@openbsd.org>
494Date: Fri May 22 05:28:45 2015 +0000
495
496 upstream commit
497
498 mention ssh-keygen -E for comparing legacy MD5
499 fingerprints; bz#2332
500
501 Upstream-ID: 079a3669549041dbf10dbc072d9563f0dc3b2859
502
503commit 0882332616e4f0272c31cc47bf2018f9cb258a4e
504Author: djm@openbsd.org <djm@openbsd.org>
505Date: Fri May 22 04:45:52 2015 +0000
506
507 upstream commit
508
509 Reorder EscapeChar option parsing to avoid a single-byte
510 out- of-bounds read. bz#2396 from Jaak Ristioja; ok dtucker@
511
512 Upstream-ID: 1dc6b5b63d1c8d9a88619da0b27ade461d79b060
513
514commit d7c31da4d42c115843edee2074d7d501f8804420
515Author: djm@openbsd.org <djm@openbsd.org>
516Date: Fri May 22 03:50:02 2015 +0000
517
518 upstream commit
519
520 add knob to relax GSSAPI host credential check for
521 multihomed hosts bz#928, patch by Simon Wilkinson; ok dtucker
522 (kerberos/GSSAPI is not compiled by default on OpenBSD)
523
524 Upstream-ID: 15ddf1c6f7fd9d98eea9962f480079ae3637285d
525
526commit aa72196a00be6e0b666215edcffbc10af234cb0e
527Author: Darren Tucker <dtucker@zip.com.au>
528Date: Fri May 22 17:49:46 2015 +1000
529
530 Include signal.h for sig_atomic_t, used by kex.h.
531
532 bz#2402, from tomas.kuthan at oracle com.
533
534commit 8b02481143d75e91c49d1bfae0876ac1fbf9511a
535Author: Darren Tucker <dtucker@zip.com.au>
536Date: Fri May 22 12:47:24 2015 +1000
537
538 Import updated moduli file from OpenBSD.
539
540commit 4739e8d5e1c0be49624082bd9f6b077e9e758db9
541Author: djm@openbsd.org <djm@openbsd.org>
542Date: Thu May 21 12:01:19 2015 +0000
543
544 upstream commit
545
546 Support "ssh-keygen -lF hostname" to find search known_hosts
547 and print key hashes. Already advertised by ssh-keygen(1), but not delivered
548 by code; ok dtucker@
549
550 Upstream-ID: 459e0e2bf39825e41b0811c336db2d56a1c23387
551
552commit e97201feca10b5196da35819ae516d0b87cf3a50
553Author: Damien Miller <djm@mindrot.org>
554Date: Thu May 21 17:55:15 2015 +1000
555
556 conditionalise util.h inclusion
557
558commit 13640798c7dd011ece0a7d02841fe48e94cfa0e0
559Author: djm@openbsd.org <djm@openbsd.org>
560Date: Thu May 21 06:44:25 2015 +0000
561
562 upstream commit
563
564 regress test for AuthorizedPrincipalsCommand
565
566 Upstream-Regress-ID: c658fbf1ab6b6011dc83b73402322e396f1e1219
567
568commit 84452c5d03c21f9bfb28c234e0dc1dc67dd817b1
569Author: djm@openbsd.org <djm@openbsd.org>
570Date: Thu May 21 06:40:02 2015 +0000
571
572 upstream commit
573
574 regress test for AuthorizedKeysCommand arguments
575
576 Upstream-Regress-ID: bbd65c13c6b3be9a442ec115800bff9625898f12
577
578commit bcc50d816187fa9a03907ac1f3a52f04a52e10d1
579Author: djm@openbsd.org <djm@openbsd.org>
580Date: Thu May 21 06:43:30 2015 +0000
581
582 upstream commit
583
584 add AuthorizedPrincipalsCommand that allows getting
585 authorized_principals from a subprocess rather than a file, which is quite
586 useful in deployments with large userbases
587
588 feedback and ok markus@
589
590 Upstream-ID: aa1bdac7b16fc6d2fa3524ef08f04c7258d247f6
591
592commit 24232a3e5ab467678a86aa67968bbb915caffed4
593Author: djm@openbsd.org <djm@openbsd.org>
594Date: Thu May 21 06:38:35 2015 +0000
595
596 upstream commit
597
598 support arguments to AuthorizedKeysCommand
599
600 bz#2081 loosely based on patch by Sami Hartikainen
601 feedback and ok markus@
602
603 Upstream-ID: b080387a14aa67dddd8ece67c00f268d626541f7
604
605commit d80fbe41a57c72420c87a628444da16d09d66ca7
606Author: djm@openbsd.org <djm@openbsd.org>
607Date: Thu May 21 04:55:51 2015 +0000
608
609 upstream commit
610
611 refactor: split base64 encoding of pubkey into its own
612 sshkey_to_base64() function and out of sshkey_write(); ok markus@
613
614 Upstream-ID: 54fc38f5832e9b91028900819bda46c3959a0c1a
615
616commit 7cc44ef74133a473734bbcbd3484f24d6a7328c5
617Author: deraadt@openbsd.org <deraadt@openbsd.org>
618Date: Mon May 18 15:06:05 2015 +0000
619
620 upstream commit
621
622 getentropy() and sendsyslog() have been around long
623 enough. openssh-portable may want the #ifdef's but not base. discussed with
624 djm few weeks back
625
626 Upstream-ID: 0506a4334de108e3fb6c66f8d6e0f9c112866926
627
628commit 9173d0fbe44de7ebcad8a15618e13a8b8d78902e
629Author: dtucker@openbsd.org <dtucker@openbsd.org>
630Date: Fri May 15 05:44:21 2015 +0000
631
632 upstream commit
633
634 Use a salted hash of the lock passphrase instead of plain
635 text and do constant-time comparisons of it. Should prevent leaking any
636 information about it via timing, pointed out by Ryan Castellucci. Add a 0.1s
637 incrementing delay for each failed unlock attempt up to 10s. ok markus@
638 (earlier version), djm@
639
640 Upstream-ID: c599fcc325aa1cc65496b25220b622d22208c85f
641
642commit d028d5d3a697c71b21e4066d8672cacab3caa0a8
643Author: Damien Miller <djm@mindrot.org>
644Date: Tue May 5 19:10:58 2015 +1000
645
646 upstream commit
647
648 - tedu@cvs.openbsd.org 2015/01/12 03:20:04
649 [bcrypt_pbkdf.c]
650 rename blocks to words. bcrypt "blocks" are unrelated to blowfish blocks,
651 nor are they the same size.
652
653commit f6391d4e59b058984163ab28f4e317e7a72478f1
654Author: Damien Miller <djm@mindrot.org>
655Date: Tue May 5 19:10:23 2015 +1000
656
657 upstream commit
658
659 - deraadt@cvs.openbsd.org 2015/01/08 00:30:07
660 [bcrypt_pbkdf.c]
661 declare a local version of MIN(), call it MINIMUM()
662
663commit 8ac6b13cc9113eb47cd9e86c97d7b26b4b71b77f
664Author: Damien Miller <djm@mindrot.org>
665Date: Tue May 5 19:09:46 2015 +1000
666
667 upstream commit
668
669 - djm@cvs.openbsd.org 2014/12/30 01:41:43
670 [bcrypt_pbkdf.c]
671 typo in comment: ouput => output
672
673commit 1f792489d5cf86a4f4e3003e6e9177654033f0f2
674Author: djm@openbsd.org <djm@openbsd.org>
675Date: Mon May 4 06:10:48 2015 +0000
676
677 upstream commit
678
679 Remove pattern length argument from match_pattern_list(), we
680 only ever use it for strlen(pattern).
681
682 Prompted by hanno AT hboeck.de pointing an out-of-bound read
683 error caused by an incorrect pattern length found using AFL
684 and his own tools.
685
686 ok markus@
687
688commit 639d6bc57b1942393ed12fb48f00bc05d4e093e4
689Author: djm@openbsd.org <djm@openbsd.org>
690Date: Fri May 1 07:10:01 2015 +0000
691
692 upstream commit
693
694 refactor ssh_dispatch_run_fatal() to use sshpkt_fatal()
695 to better report error conditions. Teach sshpkt_fatal() about ECONNRESET.
696
697 Improves error messages on TCP connection resets. bz#2257
698
699 ok dtucker@
700
701commit 9559d7de34c572d4d3fd990ca211f8ec99f62c4d
702Author: djm@openbsd.org <djm@openbsd.org>
703Date: Fri May 1 07:08:08 2015 +0000
704
705 upstream commit
706
707 a couple of parse targets were missing activep checks,
708 causing them to be misapplied in match context; bz#2272 diagnosis and
709 original patch from Sami Hartikainen ok dtucker@
710
711commit 7e8528cad04b2775c3b7db08abf8fb42e47e6b2a
712Author: djm@openbsd.org <djm@openbsd.org>
713Date: Fri May 1 04:17:51 2015 +0000
714
715 upstream commit
716
717 make handling of AuthorizedPrincipalsFile=none more
718 consistent with other =none options; bz#2288 from Jakub Jelen; ok dtucker@
719
720commit ca430d4d9cc0f62eca3b1fb1e2928395b7ce80f7
721Author: djm@openbsd.org <djm@openbsd.org>
722Date: Fri May 1 04:03:20 2015 +0000
723
724 upstream commit
725
726 remove failed remote forwards established by muliplexing
727 from the list of active forwards; bz#2363, patch mostly by Yoann Ricordel; ok
728 dtucker@
729
730commit 8312cfb8ad88657517b3e23ac8c56c8e38eb9792
731Author: djm@openbsd.org <djm@openbsd.org>
732Date: Fri May 1 04:01:58 2015 +0000
733
734 upstream commit
735
736 reduce stderr spam when using ssh -S /path/mux -O forward
737 -R 0:... ok dtucker@
738
739commit 179be0f5e62f1f492462571944e45a3da660d82b
740Author: djm@openbsd.org <djm@openbsd.org>
741Date: Fri May 1 03:23:51 2015 +0000
742
743 upstream commit
744
745 prevent authorized_keys options picked up on public key
746 tests without a corresponding private key authentication being applied to
747 other authentication methods. Reported by halex@, ok markus@
748
749commit a42d67be65b719a430b7fcaba2a4e4118382723a
750Author: djm@openbsd.org <djm@openbsd.org>
751Date: Fri May 1 03:20:54 2015 +0000
752
753 upstream commit
754
755 Don't make parsing of authorized_keys' environment=
756 option conditional on PermitUserEnv - always parse it, but only use the
757 result if the option is enabled. This prevents the syntax of authorized_keys
758 changing depending on which sshd_config options were enabled.
759
760 bz#2329; based on patch from coladict AT gmail.com, ok dtucker@
761
762commit e661a86353e11592c7ed6a847e19a83609f49e77
763Author: djm@openbsd.org <djm@openbsd.org>
764Date: Mon May 4 06:10:48 2015 +0000
765
766 upstream commit
767
768 Remove pattern length argument from match_pattern_list(), we
769 only ever use it for strlen(pattern).
770
771 Prompted by hanno AT hboeck.de pointing an out-of-bound read
772 error caused by an incorrect pattern length found using AFL
773 and his own tools.
774
775 ok markus@
776
777commit 0ef1de742be2ee4b10381193fe90730925b7f027
778Author: dtucker@openbsd.org <dtucker@openbsd.org>
779Date: Thu Apr 23 05:01:19 2015 +0000
780
781 upstream commit
782
783 Add a simple regression test for sshd's configuration
784 parser. Right now, all it does is run the output of sshd -T back through
785 itself and ensure the output is valid and invariant.
786
787commit 368f83c793275faa2c52f60eaa9bdac155c4254b
788Author: djm@openbsd.org <djm@openbsd.org>
789Date: Wed Apr 22 01:38:36 2015 +0000
790
791 upstream commit
792
793 use correct key for nested certificate test
794
795commit 8d4d1bfddbbd7d21f545dc6997081d1ea1fbc99a
796Author: djm@openbsd.org <djm@openbsd.org>
797Date: Fri May 1 07:11:47 2015 +0000
798
799 upstream commit
800
801 mention that the user's shell from /etc/passwd is used
802 for commands too; bz#1459 ok dtucker@
803
804commit 5ab283d0016bbc9d4d71e8e5284d011bc5a930cf
805Author: djm@openbsd.org <djm@openbsd.org>
806Date: Fri May 8 07:29:00 2015 +0000
807
808 upstream commit
809
810 whitespace
811
812 Upstream-Regress-ID: 6b708a3e709d5b7fd37890f874bafdff1f597519
813
814commit 8377d5008ad260048192e1e56ad7d15a56d103dd
815Author: djm@openbsd.org <djm@openbsd.org>
816Date: Fri May 8 07:26:13 2015 +0000
817
818 upstream commit
819
820 whitespace at EOL
821
822 Upstream-Regress-ID: 9c48911643d5b05173b36a012041bed4080b8554
823
824commit c28a3436fa8737709ea88e4437f8f23a6ab50359
825Author: djm@openbsd.org <djm@openbsd.org>
826Date: Fri May 8 06:45:13 2015 +0000
827
828 upstream commit
829
830 moar whitespace at eol
831
832 Upstream-ID: 64eaf872a3ba52ed41e494287e80d40aaba4b515
833
834commit 2b64c490468fd4ca35ac8d5cc31c0520dc1508bb
835Author: djm@openbsd.org <djm@openbsd.org>
836Date: Fri May 8 06:41:56 2015 +0000
837
838 upstream commit
839
840 whitespace at EOL
841
842 Upstream-ID: 57bcf67d666c6fc1ad798aee448fdc3f70f7ec2c
843
844commit 4e636cf201ce6e7e3b9088568218f9d4e2c51712
845Author: djm@openbsd.org <djm@openbsd.org>
846Date: Fri May 8 03:56:51 2015 +0000
847
848 upstream commit
849
850 whitespace at EOL
851
852commit 38b8272f823dc1dd4e29dbcee83943ed48bb12fa
853Author: dtucker@openbsd.org <dtucker@openbsd.org>
854Date: Mon May 4 01:47:53 2015 +0000
855
856 upstream commit
857
858 Use diff w/out -u for better portability
859
860commit 297060f42d5189a4065ea1b6f0afdf6371fb0507
861Author: dtucker@openbsd.org <dtucker@openbsd.org>
862Date: Fri May 8 03:25:07 2015 +0000
863
864 upstream commit
865
866 Use xcalloc for permitted_adm_opens instead of xmalloc to
867 ensure it's zeroed. Fixes post-auth crash with permitopen=none. bz#2355, ok
868 djm@
869
870commit 63ebf019be863b2d90492a85e248cf55a6e87403
871Author: djm@openbsd.org <djm@openbsd.org>
872Date: Fri May 8 03:17:49 2015 +0000
873
874 upstream commit
875
876 don't choke on new-format private keys encrypted with an
877 AEAD cipher; bz#2366, patch from Ron Frederick; ok markus@
878
879commit f8484dac678ab3098ae522a5f03bb2530f822987
880Author: dtucker@openbsd.org <dtucker@openbsd.org>
881Date: Wed May 6 05:45:17 2015 +0000
882
883 upstream commit
884
885 Clarify pseudo-terminal request behaviour and use
886 "pseudo-terminal" consistently. bz#1716, ok jmc@ "I like it" deraadt@.
887
888commit ea139507bef8bad26e86ed99a42c7233ad115c38
889Author: dtucker@openbsd.org <dtucker@openbsd.org>
890Date: Wed May 6 04:07:18 2015 +0000
891
892 upstream commit
893
894 Blacklist DH-GEX for specific PuTTY versions known to
895 send non-RFC4419 DH-GEX messages rather than all versions of PuTTY.
896 According to Simon Tatham, 0.65 and newer versions will send RFC4419 DH-GEX
897 messages. ok djm@
898
899commit b58234f00ee3872eb84f6e9e572a9a34e902e36e
900Author: dtucker@openbsd.org <dtucker@openbsd.org>
901Date: Tue May 5 10:17:49 2015 +0000
902
903 upstream commit
904
905 WinSCP doesn't implement RFC4419 DH-GEX so flag it so we
906 don't offer that KEX method. ok markus@
907
908commit d5b1507a207253b39e810e91e68f9598691b7a29
909Author: jsg@openbsd.org <jsg@openbsd.org>
910Date: Tue May 5 02:48:17 2015 +0000
911
912 upstream commit
913
914 use the sizeof the struct not the sizeof a pointer to the
915 struct in ssh_digest_start()
916
917 This file is only used if ssh is built with OPENSSL=no
918
919 ok markus@
920
921commit a647b9b8e616c231594b2710c925d31b1b8afea3
922Author: Darren Tucker <dtucker@zip.com.au>
923Date: Fri May 8 11:07:27 2015 +1000
924
925 Put brackets around mblen() compat constant.
926
927 This might help with the reported problem cross compiling for Android
928 ("error: expected identifier or '(' before numeric constant") but
929 shouldn't hurt in any case.
930
931commit d1680d36e17244d9af3843aeb5025cb8e40d6c07
932Author: Darren Tucker <dtucker@zip.com.au>
933Date: Thu Apr 30 09:18:11 2015 +1000
934
935 xrealloc -> xreallocarray in portable code too.
936
937commit 531a57a3893f9fcd4aaaba8c312b612bbbcc021e
938Author: dtucker@openbsd.org <dtucker@openbsd.org>
939Date: Wed Apr 29 03:48:56 2015 +0000
940
941 upstream commit
942
943 Allow ListenAddress, Port and AddressFamily in any
944 order. bz#68, ok djm@, jmc@ (for the man page bit).
945
946commit c1d5bcf1aaf1209af02f79e48ba1cbc76a87b56f
947Author: jmc@openbsd.org <jmc@openbsd.org>
948Date: Tue Apr 28 13:47:38 2015 +0000
949
950 upstream commit
951
952 enviroment -> environment: apologies to darren for not
953 spotting that first time round...
954
955commit 43beea053db191cac47c2cd8d3dc1930158aff1a
956Author: dtucker@openbsd.org <dtucker@openbsd.org>
957Date: Tue Apr 28 10:25:15 2015 +0000
958
959 upstream commit
960
961 Fix typo in previous
962
963commit 85b96ef41374f3ddc9139581f87da09b2cd9199e
964Author: dtucker@openbsd.org <dtucker@openbsd.org>
965Date: Tue Apr 28 10:17:58 2015 +0000
966
967 upstream commit
968
969 Document that the TERM environment variable is not
970 subject to SendEnv and AcceptEnv. bz#2386, based loosely on a patch from
971 jjelen at redhat, help and ok jmc@
972
973commit 88a7c598a94ff53f76df228eeaae238d2d467565
974Author: djm@openbsd.org <djm@openbsd.org>
975Date: Mon Apr 27 21:42:48 2015 +0000
976
977 upstream commit
978
979 Make sshd default to PermitRootLogin=no; ok deraadt@
980 rpe@
981
982commit 734226b4480a6c736096c729fcf6f391400599c7
983Author: djm@openbsd.org <djm@openbsd.org>
984Date: Mon Apr 27 01:52:30 2015 +0000
985
986 upstream commit
987
988 fix compilation with OPENSSL=no; ok dtucker@
989
990commit a4b9d2ce1eb7703eaf0809b0c8a82ded8aa4f1c6
991Author: dtucker@openbsd.org <dtucker@openbsd.org>
992Date: Mon Apr 27 00:37:53 2015 +0000
993
994 upstream commit
995
996 Include stdio.h for FILE (used in sshkey.h) so it
997 compiles with OPENSSL=no.
998
999commit dbcc652f4ca11fe04e5930c7ef18a219318c6cda
1000Author: djm@openbsd.org <djm@openbsd.org>
1001Date: Mon Apr 27 00:21:21 2015 +0000
1002
1003 upstream commit
1004
1005 allow "sshd -f none" to skip reading the config file,
1006 much like "ssh -F none" does. ok dtucker
1007
1008commit b7ca276fca316c952f0b90f5adb1448c8481eedc
1009Author: jmc@openbsd.org <jmc@openbsd.org>
1010Date: Fri Apr 24 06:26:49 2015 +0000
1011
1012 upstream commit
1013
1014 combine -Dd onto one line and update usage();
1015
1016commit 2ea974630d7017e4c7666d14d9dc939707613e96
1017Author: djm@openbsd.org <djm@openbsd.org>
1018Date: Fri Apr 24 05:26:44 2015 +0000
1019
1020 upstream commit
1021
1022 add ssh-agent -D to leave ssh-agent in foreground
1023 without enabling debug mode; bz#2381 ok dtucker@
1024
1025commit 8ac2ffd7aa06042f6b924c87139f2fea5c5682f7
1026Author: deraadt@openbsd.org <deraadt@openbsd.org>
1027Date: Fri Apr 24 01:36:24 2015 +0000
1028
1029 upstream commit
1030
1031 2*len -> use xreallocarray() ok djm
1032
1033commit 657a5fbc0d0aff309079ff8fb386f17e964963c2
1034Author: deraadt@openbsd.org <deraadt@openbsd.org>
1035Date: Fri Apr 24 01:36:00 2015 +0000
1036
1037 upstream commit
1038
1039 rename xrealloc() to xreallocarray() since it follows
1040 that form. ok djm
1041
1042commit 1108ae242fdd2c304307b68ddf46aebe43ebffaa
1043Author: dtucker@openbsd.org <dtucker@openbsd.org>
1044Date: Thu Apr 23 04:59:10 2015 +0000
1045
1046 upstream commit
1047
1048 Two small fixes for sshd -T: ListenAddress'es are added
1049 to a list head so reverse the order when printing them to ensure the
1050 behaviour remains the same, and print StreamLocalBindMask as octal with
1051 leading zero. ok deraadt@
1052
1053commit bd902b8473e1168f19378d5d0ae68d0c203525df
1054Author: dtucker@openbsd.org <dtucker@openbsd.org>
1055Date: Thu Apr 23 04:53:53 2015 +0000
1056
1057 upstream commit
1058
1059 Check for and reject missing arguments for
1060 VersionAddendum and ForceCommand. bz#2281, patch from plautrba at redhat com,
1061 ok djm@
1062
1063commit ca42c1758575e592239de1d5755140e054b91a0d
1064Author: djm@openbsd.org <djm@openbsd.org>
1065Date: Wed Apr 22 01:24:01 2015 +0000
1066
1067 upstream commit
1068
1069 unknown certificate extensions are non-fatal, so don't
1070 fatal when they are encountered; bz#2387 reported by Bob Van Zant; ok
1071 dtucker@
1072
1073commit 39bfbf7caad231cc4bda6909fb1af0705bca04d8
1074Author: jsg@openbsd.org <jsg@openbsd.org>
1075Date: Tue Apr 21 07:01:00 2015 +0000
1076
1077 upstream commit
1078
1079 Add back a backslash removed in rev 1.42 so
1080 KEX_SERVER_ENCRYPT will include aes again.
1081
1082 ok deraadt@
1083
1084commit 6b0d576bb87eca3efd2b309fcfe4edfefc289f9c
1085Author: djm@openbsd.org <djm@openbsd.org>
1086Date: Fri Apr 17 13:32:09 2015 +0000
1087
1088 upstream commit
1089
1090 s/recommended/required/ that private keys be og-r this
1091 wording change was made a while ago but got accidentally reverted
1092
1093commit 44a8e7ce6f3ab4c2eb1ae49115c210b98e53c4df
1094Author: djm@openbsd.org <djm@openbsd.org>
1095Date: Fri Apr 17 13:25:52 2015 +0000
1096
1097 upstream commit
1098
1099 don't try to cleanup NULL KEX proposals in
1100 kex_prop_free(); found by Jukka Taimisto and Markus Hietava
1101
1102commit 3038a191872d2882052306098c1810d14835e704
1103Author: djm@openbsd.org <djm@openbsd.org>
1104Date: Fri Apr 17 13:19:22 2015 +0000
1105
1106 upstream commit
1107
1108 use error/logit/fatal instead of fprintf(stderr, ...)
1109 and exit(0), fix a few errors that were being printed to stdout instead of
1110 stderr and a few non-errors that were going to stderr instead of stdout
1111 bz#2325; ok dtucker
1112
1113commit a58be33cb6cd24441fa7e634db0e5babdd56f07f
1114Author: djm@openbsd.org <djm@openbsd.org>
1115Date: Fri Apr 17 13:16:48 2015 +0000
1116
1117 upstream commit
1118
1119 debug log missing DISPLAY environment when X11
1120 forwarding requested; bz#1682 ok dtucker@
1121
1122commit 17d4d9d9fbc8fb80e322f94d95eecc604588a474
1123Author: djm@openbsd.org <djm@openbsd.org>
1124Date: Fri Apr 17 04:32:31 2015 +0000
1125
1126 upstream commit
1127
1128 don't call record_login() in monitor when UseLogin is
1129 enabled; bz#278 reported by drk AT sgi.com; ok dtucker
1130
1131commit 40132ff87b6cbc3dc05fb5df2e9d8e3afa06aafd
1132Author: dtucker@openbsd.org <dtucker@openbsd.org>
1133Date: Fri Apr 17 04:12:35 2015 +0000
1134
1135 upstream commit
1136
1137 Add some missing options to sshd -T and fix the output
1138 of VersionAddendum HostCertificate. bz#2346, patch from jjelen at redhat
1139 com, ok djm.
1140
1141commit 6cc7cfa936afde2d829e56ee6528c7ea47a42441
1142Author: dtucker@openbsd.org <dtucker@openbsd.org>
1143Date: Thu Apr 16 23:25:50 2015 +0000
1144
1145 upstream commit
1146
1147 Document "none" for PidFile XAuthLocation
1148 TrustedUserCAKeys and RevokedKeys. bz#2382, feedback from jmc@, ok djm@
1149
1150commit 15fdfc9b1c6808b26bc54d4d61a38b54541763ed
1151Author: dtucker@openbsd.org <dtucker@openbsd.org>
1152Date: Wed Apr 15 23:23:25 2015 +0000
1153
1154 upstream commit
1155
1156 Plug leak of address passed to logging. bz#2373, patch
1157 from jjelen at redhat, ok markus@
1158
1159commit bb2289e2a47d465eaaaeff3dee2a6b7777b4c291
1160Author: dtucker@openbsd.org <dtucker@openbsd.org>
1161Date: Tue Apr 14 04:17:03 2015 +0000
1162
1163 upstream commit
1164
1165 Output remote username in debug output since with Host
1166 and Match it's not always obvious what it will be. bz#2368, ok djm@
1167
1168commit 70860b6d07461906730632f9758ff1b7c98c695a
1169Author: Darren Tucker <dtucker@zip.com.au>
1170Date: Fri Apr 17 10:56:13 2015 +1000
1171
1172 Format UsePAM setting when using sshd -T.
1173
1174 Part of bz#2346, patch from jjelen at redhat com.
1175
1176commit ee15d9c9f0720f5a8b0b34e4b10ecf21f9824814
1177Author: Darren Tucker <dtucker@zip.com.au>
1178Date: Fri Apr 17 10:40:23 2015 +1000
1179
1180 Wrap endian.h include inside ifdef (bz#2370).
1181
1182commit 408f4c2ad4a4c41baa7b9b2b7423d875abbfa70b
1183Author: Darren Tucker <dtucker@zip.com.au>
1184Date: Fri Apr 17 09:39:58 2015 +1000
1185
1186 Look for '${host}-ar' before 'ar'.
1187
1188 This changes configure.ac to look for '${host}-ar' as set by
1189 AC_CANONICAL_HOST before looking for the unprefixed 'ar'.
1190 Useful when cross-compiling when all your binutils are prefixed.
1191
1192 Patch from moben at exherbo org via astrand at lysator liu se and
1193 bz#2352.
1194
1195commit 673a1c16ad078d41558247ce739fe812c960acc8
1196Author: Damien Miller <djm@google.com>
1197Date: Thu Apr 16 11:40:20 2015 +1000
1198
1199 remove dependency on arpa/telnet.h
1200
1201commit 202d443eeda1829d336595a3cfc07827e49f45ed
1202Author: Darren Tucker <dtucker@zip.com.au>
1203Date: Wed Apr 15 15:59:49 2015 +1000
1204
1205 Remove duplicate include of pwd.h. bz#2337, patch from Mordy Ovits.
1206
1207commit 597986493412c499f2bc2209420cb195f97b3668
1208Author: Damien Miller <djm@google.com>
1209Date: Thu Apr 9 10:14:48 2015 +1000
1210
1211 platform's with openpty don't need pty_release
1212
1213commit 318be28cda1fd9108f2e6f2f86b0b7589ba2aed0
1214Author: djm@openbsd.org <djm@openbsd.org>
1215Date: Mon Apr 13 02:04:08 2015 +0000
1216
1217 upstream commit
1218
1219 deprecate ancient, pre-RFC4419 and undocumented
1220 SSH2_MSG_KEX_DH_GEX_REQUEST_OLD message; ok markus@ deraadt@ "seems
1221 reasonable" dtucker@
1222
1223commit d8f391caef62378463a0e6b36f940170dadfe605
1224Author: dtucker@openbsd.org <dtucker@openbsd.org>
1225Date: Fri Apr 10 05:16:50 2015 +0000
1226
1227 upstream commit
1228
1229 Don't send hostkey advertisments
1230 (hostkeys-00@openssh.com) to current versions of Tera Term as they can't
1231 handle them. Newer versions should be OK. Patch from Bryan Drewery and
1232 IWAMOTO Kouichi, ok djm@
1233
1234commit 2c2cfe1a1c97eb9a08cc9817fd0678209680c636
1235Author: djm@openbsd.org <djm@openbsd.org>
1236Date: Fri Apr 10 00:08:55 2015 +0000
1237
1238 upstream commit
1239
1240 include port number if a non-default one has been
1241 specified; based on patch from Michael Handler
1242
1243commit 4492a4f222da4cf1e8eab12689196322e27b08c4
1244Author: djm@openbsd.org <djm@openbsd.org>
1245Date: Tue Apr 7 23:00:42 2015 +0000
1246
1247 upstream commit
1248
1249 treat Protocol=1,2|2,1 as Protocol=2 when compiled
1250 without SSH1 support; ok dtucker@ millert@
1251
1252commit c265e2e6e932efc6d86f6cc885dea33637a67564
1253Author: miod@openbsd.org <miod@openbsd.org>
1254Date: Sun Apr 5 15:43:43 2015 +0000
1255
1256 upstream commit
1257
1258 Do not use int for sig_atomic_t; spotted by
1259 christos@netbsd; ok markus@
1260
1261commit e7bf3a5eda6a1b02bef6096fed78527ee11e54cc
1262Author: Darren Tucker <dtucker@zip.com.au>
1263Date: Tue Apr 7 10:48:04 2015 +1000
1264
1265 Use do{}while(0) for no-op functions.
1266
1267 From FreeBSD.
1268
1269commit bb99844abae2b6447272f79e7fa84134802eb4df
1270Author: Darren Tucker <dtucker@zip.com.au>
1271Date: Tue Apr 7 10:47:15 2015 +1000
1272
1273 Wrap blf.h include in ifdef. From FreeBSD.
1274
1275commit d9b9b43656091cf0ad55c122f08fadb07dad0abd
1276Author: Darren Tucker <dtucker@zip.com.au>
1277Date: Tue Apr 7 09:10:00 2015 +1000
1278
1279 Fix misspellings of regress CONFOPTS env variables.
1280
1281 Patch from Bryan Drewery.
1282
1283commit 3f4ea3c9ab1d32d43c9222c4351f58ca11144156
1284Author: djm@openbsd.org <djm@openbsd.org>
1285Date: Fri Apr 3 22:17:27 2015 +0000
1286
1287 upstream commit
1288
1289 correct return value in pubkey parsing, spotted by Ben Hawkes
1290 ok markus@
1291
1292commit 7da2be0cb9601ed25460c83aa4d44052b967ba0f
1293Author: djm@openbsd.org <djm@openbsd.org>
1294Date: Tue Mar 31 22:59:01 2015 +0000
1295
1296 upstream commit
1297
1298 adapt to recent hostfile.c change: when parsing
1299 known_hosts without fully parsing the keys therein, hostkeys_foreach() will
1300 now correctly identify KEY_RSA1 keys; ok markus@ miod@
1301
1302commit 9e1777a0d1c706714b055811c12ab8cc21033e4a
1303Author: markus@openbsd.org <markus@openbsd.org>
1304Date: Tue Mar 24 20:19:15 2015 +0000
1305
1306 upstream commit
1307
1308 use ${SSH} for -Q instead of installed ssh
1309
1310commit ce1b358ea414a2cc88e4430cd5a2ea7fecd9de57
1311Author: djm@openbsd.org <djm@openbsd.org>
1312Date: Mon Mar 16 22:46:14 2015 +0000
1313
1314 upstream commit
1315
1316 make CLEANFILES clean up more of the tests' droppings
1317
1318commit 398f9ef192d820b67beba01ec234d66faca65775
1319Author: djm@openbsd.org <djm@openbsd.org>
1320Date: Tue Mar 31 22:57:06 2015 +0000
1321
1322 upstream commit
1323
1324 downgrade error() for known_hosts parse errors to debug()
1325 to quiet warnings from ssh1 keys present when compiled !ssh1.
1326
1327 also identify ssh1 keys when scanning, even when compiled !ssh1
1328
1329 ok markus@ miod@
1330
1331commit 9a47ab80030a31f2d122b8fd95bd48c408b9fcd9
1332Author: djm@openbsd.org <djm@openbsd.org>
1333Date: Tue Mar 31 22:55:50 2015 +0000
1334
1335 upstream commit
1336
1337 fd leak for !ssh1 case; found by unittests; ok markus@
1338
1339commit c9a0805a6280681901c270755a7cd630d7c5280e
1340Author: djm@openbsd.org <djm@openbsd.org>
1341Date: Tue Mar 31 22:55:24 2015 +0000
1342
1343 upstream commit
1344
1345 don't fatal when a !ssh1 sshd is reexeced from a w/ssh1
1346 listener; reported by miod@; ok miod@ markus@
1347
1348commit 704d8c88988cae38fb755a6243b119731d223222
1349Author: tobias@openbsd.org <tobias@openbsd.org>
1350Date: Tue Mar 31 11:06:49 2015 +0000
1351
1352 upstream commit
1353
1354 Comments are only supported for RSA1 keys. If a user
1355 tried to add one and entered his passphrase, explicitly clear it before exit.
1356 This is done in all other error paths, too.
1357
1358 ok djm
1359
1360commit 78de1673c05ea2c33e0d4a4b64ecb5186b6ea2e9
1361Author: jmc@openbsd.org <jmc@openbsd.org>
1362Date: Mon Mar 30 18:28:37 2015 +0000
1363
1364 upstream commit
1365
1366 ssh-askpass(1) is the default, overridden by SSH_ASKPASS;
1367 diff originally from jiri b;
1368
1369commit 26e0bcf766fadb4a44fb6199386fb1dcab65ad00
1370Author: djm@openbsd.org <djm@openbsd.org>
1371Date: Mon Mar 30 00:00:29 2015 +0000
1372
1373 upstream commit
1374
1375 fix uninitialised memory read when parsing a config file
1376 consisting of a single nul byte. Found by hanno AT hboeck.de using AFL; ok
1377 dtucker
1378
1379commit fecede00a76fbb33a349f5121c0b2f9fbc04a777
1380Author: markus@openbsd.org <markus@openbsd.org>
1381Date: Thu Mar 26 19:32:19 2015 +0000
1382
1383 upstream commit
1384
1385 sigp and lenp are not optional in ssh_agent_sign(); ok
1386 djm@
1387
1388commit 1b0ef3813244c78669e6d4d54c624f600945327d
1389Author: naddy@openbsd.org <naddy@openbsd.org>
1390Date: Thu Mar 26 12:32:38 2015 +0000
1391
1392 upstream commit
1393
1394 don't try to load .ssh/identity by default if SSH1 is
1395 disabled; ok markus@
1396
1397commit f9b78852379b74a2d14e6fc94fe52af30b7e9c31
1398Author: djm@openbsd.org <djm@openbsd.org>
1399Date: Thu Mar 26 07:00:04 2015 +0000
1400
1401 upstream commit
1402
1403 ban all-zero curve25519 keys as recommended by latest
1404 CFRG curves draft; ok markus
1405
1406commit b8afbe2c1aaf573565e4da775261dfafc8b1ba9c
1407Author: djm@openbsd.org <djm@openbsd.org>
1408Date: Thu Mar 26 06:59:28 2015 +0000
1409
1410 upstream commit
1411
1412 relax bits needed check to allow
1413 diffie-hellman-group1-sha1 key exchange to complete for chacha20-poly1305 was
1414 selected as symmetric cipher; ok markus
1415
1416commit 47842f71e31da130555353c1d57a1e5a8937f1c0
1417Author: markus@openbsd.org <markus@openbsd.org>
1418Date: Wed Mar 25 19:29:58 2015 +0000
1419
1420 upstream commit
1421
1422 ignore v1 errors on ssh-add -D; only try v2 keys on
1423 -l/-L (unless WITH_SSH1) ok djm@
1424
1425commit 5f57e77f91bf2230c09eca96eb5ecec39e5f2da6
1426Author: markus@openbsd.org <markus@openbsd.org>
1427Date: Wed Mar 25 19:21:48 2015 +0000
1428
1429 upstream commit
1430
1431 unbreak ssh_agent_sign (lenp vs *lenp)
1432
1433commit 4daeb67181054f2a377677fac919ee8f9ed3490e
1434Author: markus@openbsd.org <markus@openbsd.org>
1435Date: Tue Mar 24 20:10:08 2015 +0000
1436
1437 upstream commit
1438
1439 don't leak 'setp' on error; noted by Nicholas Lemonias;
1440 ok djm@
1441
1442commit 7d4f96f9de2a18af0d9fa75ea89a4990de0344f5
1443Author: markus@openbsd.org <markus@openbsd.org>
1444Date: Tue Mar 24 20:09:11 2015 +0000
1445
1446 upstream commit
1447
1448 consistent check for NULL as noted by Nicholas
1449 Lemonias; ok djm@
1450
1451commit df100be51354e447d9345cf1ec22e6013c0eed50
1452Author: markus@openbsd.org <markus@openbsd.org>
1453Date: Tue Mar 24 20:03:44 2015 +0000
1454
1455 upstream commit
1456
1457 correct fmt-string for size_t as noted by Nicholas
1458 Lemonias; ok djm@
1459
1460commit a22b9ef21285e81775732436f7c84a27bd3f71e0
1461Author: djm@openbsd.org <djm@openbsd.org>
1462Date: Tue Mar 24 09:17:21 2015 +0000
1463
1464 upstream commit
1465
1466 promote chacha20-poly1305@openssh.com to be the default
1467 cipher; ok markus
1468
1469commit 2aa9da1a3b360cf7b13e96fe1521534b91501fb5
1470Author: djm@openbsd.org <djm@openbsd.org>
1471Date: Tue Mar 24 01:29:19 2015 +0000
1472
1473 upstream commit
1474
1475 Compile-time disable SSH protocol 1. You can turn it
1476 back on using the Makefile.inc knob if you need it to talk to ancient
1477 devices.
1478
1479commit 53097b2022154edf96b4e8526af5666f979503f7
1480Author: djm@openbsd.org <djm@openbsd.org>
1481Date: Tue Mar 24 01:11:12 2015 +0000
1482
1483 upstream commit
1484
1485 fix double-negative error message "ssh1 is not
1486 unsupported"
1487
1488commit 5c27e3b6ec2db711dfcd40e6359c0bcdd0b62ea9
1489Author: djm@openbsd.org <djm@openbsd.org>
1490Date: Mon Mar 23 06:06:38 2015 +0000
1491
1492 upstream commit
1493
1494 for ssh-keygen -A, don't try (and fail) to generate ssh
1495 v.1 keys when compiled without SSH1 support RSA/DSA/ECDSA keys when compiled
1496 without OpenSSL based on patch by Mike Frysinger; bz#2369
1497
1498commit 725fd22a8c41db7de73a638539a5157b7e4424ae
1499Author: djm@openbsd.org <djm@openbsd.org>
1500Date: Wed Mar 18 01:44:21 2015 +0000
1501
1502 upstream commit
1503
1504 KRL support doesn't need OpenSSL anymore, remove #ifdefs
1505 from around call
1506
1507commit b07011c18e0b2e172c5fd09d21fb159a0bf5fcc7
1508Author: djm@openbsd.org <djm@openbsd.org>
1509Date: Mon Mar 16 11:09:52 2015 +0000
1510
1511 upstream commit
1512
1513 #if 0 some more arrays used only for decrypting (we don't
1514 use since we only need encrypt for AES-CTR)
1515
1516commit 1cb3016635898d287e9d58b50c430995652d5358
1517Author: jsg@openbsd.org <jsg@openbsd.org>
1518Date: Wed Mar 11 00:48:39 2015 +0000
1519
1520 upstream commit
1521
1522 add back the changes from rev 1.206, djm reverted this by
1523 mistake in rev 1.207
1524
1525commit 4d24b3b6a4a6383e05e7da26d183b79fa8663697
1526Author: Damien Miller <djm@mindrot.org>
1527Date: Fri Mar 20 09:11:59 2015 +1100
1528
1529 remove error() accidentally inserted for debugging
1530
1531 pointed out by Christian Hesse
1532
1commit 9f82e5a9042f2d872e98f48a876fcab3e25dd9bb 1533commit 9f82e5a9042f2d872e98f48a876fcab3e25dd9bb
2Author: Tim Rice <tim@multitalents.net> 1534Author: Tim Rice <tim@multitalents.net>
3Date: Mon Mar 16 22:49:20 2015 -0700 1535Date: Mon Mar 16 22:49:20 2015 -0700
@@ -7401,1184 +8933,3 @@ Date: Tue Jul 2 20:06:46 2013 +1000
7401 the Cygwin README file (which hasn't been updated for ages), drop 8933 the Cygwin README file (which hasn't been updated for ages), drop
7402 unsupported OSes from the ssh-host-config help text, and drop an 8934 unsupported OSes from the ssh-host-config help text, and drop an
7403 unneeded option from ssh-user-config. Patch from vinschen at redhat com. 8935 unneeded option from ssh-user-config. Patch from vinschen at redhat com.
7404
7405commit b8ae92d08b91beaef34232c6ef34b9941473fdd6
7406Author: Darren Tucker <dtucker@zip.com.au>
7407Date: Tue Jun 11 12:10:02 2013 +1000
7408
7409 - (dtucker) [myproposal.h] Make the conditional algorithm support consistent
7410 and add some comments so it's clear what goes where.
7411
7412commit 97b62f41adcb0dcbeff142d0540793a7ea17c910
7413Author: Darren Tucker <dtucker@zip.com.au>
7414Date: Tue Jun 11 11:47:24 2013 +1000
7415
7416 - (dtucker) [myproposal.h] Do not advertise AES GSM ciphers if we don't have
7417 the required OpenSSL support. Patch from naddy at freebsd.
7418
7419commit 6d8bd57448b45b42809da32857d7804444349ee7
7420Author: Darren Tucker <dtucker@zip.com.au>
7421Date: Tue Jun 11 11:26:10 2013 +1000
7422
7423 - (dtucker) [Makefile.in configure.ac fixalgorithms] Remove unsupported
7424 algorithms (Ciphers, MACs and HostKeyAlgorithms) from man pages.
7425
7426commit 36187093ea0b2d2240c043417b8949611687e105
7427Author: Damien Miller <djm@mindrot.org>
7428Date: Mon Jun 10 13:07:11 2013 +1000
7429
7430 - dtucker@cvs.openbsd.org 2013/06/07 15:37:52
7431 [channels.c channels.h clientloop.c]
7432 Add an "ABANDONED" channel state and use for mux sessions that are
7433 disconnected via the ~. escape sequence. Channels in this state will
7434 be able to close if the server responds, but do not count as active channels.
7435 This means that if you ~. all of the mux clients when using ControlPersist
7436 on a broken network, the backgrounded mux master will exit when the
7437 Control Persist time expires rather than hanging around indefinitely.
7438 bz#1917, also reported and tested by tedu@. ok djm@ markus@.
7439
7440commit ae133d4b31af05bb232d797419f498f3ae7e9f2d
7441Author: Darren Tucker <dtucker@zip.com.au>
7442Date: Thu Jun 6 08:30:20 2013 +1000
7443
7444 - (dtucker) [configure.ac sftp.c openbsd-compat/openbsd-compat.h] Cater for
7445 platforms that don't have multibyte character support (specifically,
7446 mblen).
7447
7448commit 408eaf3ab716096f8faf30f091bd54a2c7a17a09
7449Author: Darren Tucker <dtucker@zip.com.au>
7450Date: Thu Jun 6 08:22:46 2013 +1000
7451
7452 - dtucker@cvs.openbsd.org 2013/06/05 22:00:28
7453 [readconf.c]
7454 plug another memleak. bz#1967, from Zhenbo Xu, detected by Melton, ok djm
7455
7456commit e52a260f16888ca75390f97de4606943e61785e8
7457Author: Darren Tucker <dtucker@zip.com.au>
7458Date: Thu Jun 6 08:22:05 2013 +1000
7459
7460 - dtucker@cvs.openbsd.org 2013/06/05 12:52:38
7461 [sshconnect2.c]
7462 Fix memory leaks found by Zhenbo Xu and the Melton tool. bz#1967, ok djm
7463
7464commit 0cca17fa1819d3a0ba06a6db41ab3eaa8d769587
7465Author: Darren Tucker <dtucker@zip.com.au>
7466Date: Thu Jun 6 08:21:14 2013 +1000
7467
7468 - dtucker@cvs.openbsd.org 2013/06/05 02:27:50
7469 [sshd.c]
7470 When running sshd -D, close stderr unless we have explicitly requesting
7471 logging to stderr. From james.hunt at ubuntu.com via bz#1976, djm's patch
7472 so, err, ok dtucker.
7473
7474commit 746e9067bd9b3501876e1c86f38f3c510a12f895
7475Author: Darren Tucker <dtucker@zip.com.au>
7476Date: Thu Jun 6 08:20:13 2013 +1000
7477
7478 - dtucker@cvs.openbsd.org 2013/06/05 02:07:29
7479 [mux.c]
7480 fix leaks in mux error paths, from Zhenbo Xu, found by Melton. bz#1967,
7481 ok djm
7482
7483commit ea64721275a81c4788af36294d94bf4f74012e06
7484Author: Darren Tucker <dtucker@zip.com.au>
7485Date: Thu Jun 6 08:19:09 2013 +1000
7486
7487 - dtucker@cvs.openbsd.org 2013/06/04 20:42:36
7488 [sftp.c]
7489 Make sftp's libedit interface marginally multibyte aware by building up
7490 the quoted string by character instead of by byte. Prevents failures
7491 when linked against a libedit built with wide character support (bz#1990).
7492 "looks ok" djm
7493
7494commit 194454d7a8f8cb8ac55f2b9d0199ef9445788bee
7495Author: Darren Tucker <dtucker@zip.com.au>
7496Date: Thu Jun 6 08:16:04 2013 +1000
7497
7498 - dtucker@cvs.openbsd.org 2013/06/04 19:12:23
7499 [scp.c]
7500 use MAXPATHLEN for buffer size instead of fixed value. ok markus
7501
7502commit 4ac66af091cf6db5a42c18e43738ca9c41e338e5
7503Author: Darren Tucker <dtucker@zip.com.au>
7504Date: Thu Jun 6 08:12:37 2013 +1000
7505
7506 - dtucker@cvs.openbsd.org 2013/06/03 00:03:18
7507 [mac.c]
7508 force the MAC output to be 64-bit aligned so umac won't see unaligned
7509 accesses on strict-alignment architectures. bz#2101, patch from
7510 tomas.kuthan at oracle.com, ok djm@
7511
7512commit ea8342c248ad6c0a4fe1a70de133f954973bd2b2
7513Author: Darren Tucker <dtucker@zip.com.au>
7514Date: Thu Jun 6 08:11:40 2013 +1000
7515
7516 - dtucker@cvs.openbsd.org 2013/06/02 23:36:29
7517 [clientloop.h clientloop.c mux.c]
7518 No need for the mux cleanup callback to be visible so restore it to static
7519 and call it through the detach_user function pointer. ok djm@
7520
7521commit 5d12b8f05d79ba89d0807910a664fa80f6f3bf8c
7522Author: Darren Tucker <dtucker@zip.com.au>
7523Date: Thu Jun 6 08:09:10 2013 +1000
7524
7525 - dtucker@cvs.openbsd.org 2013/06/02 21:01:51
7526 [channels.h]
7527 typo in comment
7528
7529commit dc62edbf121c41e8b5270904091039450206d98a
7530Author: Darren Tucker <dtucker@zip.com.au>
7531Date: Thu Jun 6 05:12:35 2013 +1000
7532
7533 - (dtucker) [Makefile.in] append $CFLAGS to compiler options when building
7534 modpipe in case there's anything in there we need.
7535
7536commit 2a22873cd869679415104bc9f6bb154811ee604c
7537Author: Darren Tucker <dtucker@zip.com.au>
7538Date: Thu Jun 6 01:59:13 2013 +1000
7539
7540 - (dtucker) [regress/forwarding.sh] For (as yet unknown) reason, the
7541 forwarding test is extremely slow copying data on some machines so switch
7542 back to copying the much smaller ls binary until we can figure out why
7543 this is.
7544
7545commit b4e00949f01176cd4fae3e0cef5ffa8dea379042
7546Author: Darren Tucker <dtucker@zip.com.au>
7547Date: Wed Jun 5 22:48:44 2013 +1000
7548
7549 - (dtucker) [contrib/ssh-copy-id] bz#2117: Use portable operator in test.
7550 Patch from cjwatson at debian.
7551
7552commit 2ea9eb77a7fcab3190564ef5a6a5377a600aa391
7553Author: Darren Tucker <dtucker@zip.com.au>
7554Date: Wed Jun 5 15:04:00 2013 +1000
7555
7556 - (dtucker) Enable sha256 kex methods based on the presence of the necessary
7557 functions, not from the openssl version.
7558
7559commit 16cac190ebb9b5612cccea63a7c22ac33bc9a07a
7560Author: Darren Tucker <dtucker@zip.com.au>
7561Date: Tue Jun 4 12:55:24 2013 +1000
7562
7563 - (dtucker) [configure.ac] Some other platforms need sys/types.h before
7564 sys/socket.h.
7565
7566commit 0b43ffe143a5843703c3755fa040b8684fb04134
7567Author: Darren Tucker <dtucker@zip.com.au>
7568Date: Mon Jun 3 09:30:44 2013 +1000
7569
7570 - (dtucker) [configure.ac] Some platforms need sys/types.h before sys/un.h.
7571
7572commit 3f3064c82238c486706471d300217d73dd0f125e
7573Author: Tim Rice <tim@multitalents.net>
7574Date: Sun Jun 2 15:13:09 2013 -0700
7575
7576 - (tim) [regress/sftp-chroot.sh] skip if no sudo. ok dtucker
7577
7578commit 01ec0af301f60fefdd0079647f13ef9abadd2db5
7579Author: Tim Rice <tim@multitalents.net>
7580Date: Sun Jun 2 14:31:27 2013 -0700
7581
7582 - (tim) [aclocal.m4] Enhance OSSH_CHECK_CFLAG_COMPILE to check stderr.
7583 feedback and ok dtucker
7584
7585commit 5ab9b63468100757479534edeb53f788a61fe08b
7586Author: Tim Rice <tim@multitalents.net>
7587Date: Sun Jun 2 14:05:48 2013 -0700
7588
7589 - (tim) [configure.ac regress/Makefile] With rev 1.47 of test-exec.sh we
7590 need a shell that can handle "[ file1 -nt file2 ]". Rather than keep
7591 dealing with shell portability issues in regression tests, we let
7592 configure find us a capable shell on those platforms with an old /bin/sh.
7593
7594commit 898ac935e56a7ac5d8b686c590fdb8b7aca27e59
7595Author: Darren Tucker <dtucker@zip.com.au>
7596Date: Mon Jun 3 02:03:25 2013 +1000
7597
7598 - (dtucker) [configure.ac] bz#2111: don't try to use lastlog on Android.
7599 Patch from Nathan Osman.
7600
7601commit ef4901c3eb98c7ab1342c3cd8f2638da1f4b0678
7602Author: Darren Tucker <dtucker@zip.com.au>
7603Date: Mon Jun 3 01:59:13 2013 +1000
7604
7605 - (dtucker) [configure.ac] sys/un.h needs sys/socket.h on some platforms
7606 to prevent noise from configure. Patch from Nathan Osman.
7607
7608commit 073f795bc1c7728c320e5982c0d417376b0907f5
7609Author: Darren Tucker <dtucker@zip.com.au>
7610Date: Sun Jun 2 23:47:11 2013 +1000
7611
7612 - dtucker@cvs.openbsd.org 2013/06/02 13:35:58
7613 [ssh-agent.c]
7614 Make parent_alive_interval time_t to avoid signed/unsigned comparison
7615
7616commit 00e1abb1ebe13ab24e812f68715f46e65e7c5271
7617Author: Darren Tucker <dtucker@zip.com.au>
7618Date: Sun Jun 2 23:46:24 2013 +1000
7619
7620 - dtucker@cvs.openbsd.org 2013/06/02 13:33:05
7621 [progressmeter.c]
7622 Add misc.h for monotime prototype. (id sync only)
7623
7624commit 86211d1738695e63b2a68f0c3a4f60e1a9d9bda3
7625Author: Tim Rice <tim@multitalents.net>
7626Date: Sat Jun 1 18:38:23 2013 -0700
7627
7628 20130602
7629 - (tim) [Makefile.in] Make Solaris, UnixWare, & OpenServer linkers happy
7630 linking regress/modpipe.
7631
7632commit e9887d1c37940b9d6c72d55cfad7a40de4c6e28d
7633Author: Darren Tucker <dtucker@zip.com.au>
7634Date: Sun Jun 2 09:17:09 2013 +1000
7635
7636 - (dtucker) [sandbox-seccomp-filter.c] Allow clock_gettimeofday.
7637
7638commit 65cf74079a2d563c4ede649116a13ca78c8cc2a4
7639Author: Darren Tucker <dtucker@zip.com.au>
7640Date: Sun Jun 2 09:11:19 2013 +1000
7641
7642 fix typo
7643
7644commit c9a1991b95a4c9f04f9dcef299a8110d2ec80d3e
7645Author: Darren Tucker <dtucker@zip.com.au>
7646Date: Sun Jun 2 08:37:05 2013 +1000
7647
7648 - dtucker@cvs.openbsd.org 2013/06/01 22:34:50
7649 [sftp-client.c]
7650 Update progressmeter when data is acked, not when it's sent. bz#2108, from
7651 Debian via Colin Watson, ok djm@
7652
7653commit a710891659202c82545e84725d4e5cd77aef567c
7654Author: Darren Tucker <dtucker@zip.com.au>
7655Date: Sun Jun 2 08:18:31 2013 +1000
7656
7657 - (dtucker) [configure.ac misc.c] Look for clock_gettime in librt and fall
7658 back to time(NULL) if we can't find it anywhere.
7659
7660commit f60845fde29cead9d75e812db1c04916b4c58ffd
7661Author: Darren Tucker <dtucker@zip.com.au>
7662Date: Sun Jun 2 08:07:31 2013 +1000
7663
7664 - (dtucker) [M auth-chall.c auth-krb5.c auth-pam.c cipher-aes.c cipher-ctr.c
7665 groupaccess.c loginrec.c monitor.c monitor_wrap.c session.c sshd.c
7666 sshlogin.c uidswap.c openbsd-compat/bsd-cygwin_util.c
7667 openbsd-compat/getrrsetbyname-ldns.c openbsd-compat/port-aix.c
7668 openbsd-compat/port-linux.c] Replace portable-specific instances of xfree
7669 with the equivalent calls to free.
7670
7671commit 12f6533215c0a36ab29d11ff52a853fce45573b4
7672Author: Darren Tucker <dtucker@zip.com.au>
7673Date: Sun Jun 2 08:01:24 2013 +1000
7674
7675 Remove stray '+' accidentally introduced in sync
7676
7677commit 3750fce6ac6b287f62584ac55a4406df95c71b92
7678Author: Darren Tucker <dtucker@zip.com.au>
7679Date: Sun Jun 2 07:52:21 2013 +1000
7680
7681 - dtucker@cvs.openbsd.org 2013/06/01 20:59:25
7682 [scp.c sftp-client.c]
7683 Replace S_IWRITE, which isn't standardized, with S_IWUSR, which is. Patch
7684 from Nathan Osman via bz#2113. ok deraadt.
7685
7686 (note: corrected bug number from 2085)
7687
7688commit b759c9c2efebe7b416ab81093ca8eb17836b6933
7689Author: Darren Tucker <dtucker@zip.com.au>
7690Date: Sun Jun 2 07:46:16 2013 +1000
7691
7692 - dtucker@cvs.openbsd.org 2013/06/01 13:15:52
7693 [ssh-agent.c clientloop.c misc.h packet.c progressmeter.c misc.c
7694 channels.c sandbox-systrace.c]
7695 Use clock_gettime(CLOCK_MONOTONIC ...) for ssh timers so that things like
7696 keepalives and rekeying will work properly over clock steps. Suggested by
7697 markus@, "looks good" djm@.
7698
7699commit 55119253c64808b0d3b2ab5d2bc67ee9dac3430b
7700Author: Darren Tucker <dtucker@zip.com.au>
7701Date: Sun Jun 2 07:43:59 2013 +1000
7702
7703 - dtucker@cvs.openbsd.org 2013/05/31 12:28:10
7704 [ssh-agent.c]
7705 Use time_t where appropriate. ok djm
7706
7707commit 0acca3797d53d958d240c69a5f222f2aa8444858
7708Author: Darren Tucker <dtucker@zip.com.au>
7709Date: Sun Jun 2 07:41:51 2013 +1000
7710
7711 - djm@cvs.openbsd.org 2013/05/19 02:42:42
7712 [auth.h auth.c key.c monitor.c auth-rsa.c auth2.c auth1.c key.h]
7713 Standardise logging of supplemental information during userauth. Keys
7714 and ruser is now logged in the auth success/failure message alongside
7715 the local username, remote host/port and protocol in use. Certificates
7716 contents and CA are logged too.
7717 Pushing all logging onto a single line simplifies log analysis as it is
7718 no longer necessary to relate information scattered across multiple log
7719 entries. "I like it" markus@
7720
7721commit 74836ae0fabcc1a76b9d9eacd1629c88a054b2d0
7722Author: Darren Tucker <dtucker@zip.com.au>
7723Date: Sun Jun 2 07:32:00 2013 +1000
7724
7725 - djm@cvs.openbsd.org 2013/05/19 02:38:28
7726 [auth2-pubkey.c]
7727 fix failure to recognise cert-authority keys if a key of a different type
7728 appeared in authorized_keys before it; ok markus@
7729
7730commit a627d42e51ffa71e014d7b2d2c07118122fd3ec3
7731Author: Darren Tucker <dtucker@zip.com.au>
7732Date: Sun Jun 2 07:31:17 2013 +1000
7733
7734 - djm@cvs.openbsd.org 2013/05/17 00:13:13
7735 [xmalloc.h cipher.c sftp-glob.c ssh-keyscan.c ssh.c sftp-common.c
7736 ssh-ecdsa.c auth2-chall.c compat.c readconf.c kexgexs.c monitor.c
7737 gss-genr.c cipher-3des1.c kex.c monitor_wrap.c ssh-pkcs11-client.c
7738 auth-options.c rsa.c auth2-pubkey.c sftp.c hostfile.c auth2.c
7739 servconf.c auth.c authfile.c xmalloc.c uuencode.c sftp-client.c
7740 auth2-gss.c sftp-server.c bufaux.c mac.c session.c jpake.c kexgexc.c
7741 sshconnect.c auth-chall.c auth2-passwd.c sshconnect1.c buffer.c
7742 kexecdhs.c kexdhs.c ssh-rsa.c auth1.c ssh-pkcs11.c auth2-kbdint.c
7743 kexdhc.c sshd.c umac.c ssh-dss.c auth2-jpake.c bufbn.c clientloop.c
7744 monitor_mm.c scp.c roaming_client.c serverloop.c key.c auth-rsa.c
7745 ssh-pkcs11-helper.c ssh-keysign.c ssh-keygen.c match.c channels.c
7746 sshconnect2.c addrmatch.c mux.c canohost.c kexecdhc.c schnorr.c
7747 ssh-add.c misc.c auth2-hostbased.c ssh-agent.c bufec.c groupaccess.c
7748 dns.c packet.c readpass.c authfd.c moduli.c]
7749 bye, bye xfree(); ok markus@
7750
7751commit c7aad0058c957afeb26a3f703e8cb0eddeb62365
7752Author: Darren Tucker <dtucker@zip.com.au>
7753Date: Sun Jun 2 07:18:47 2013 +1000
7754
7755 - (dtucker) [configure.ac defines.h] Test for fd_mask, howmany and NFDBITS
7756 rather than trying to enumerate the plaforms that don't have them.
7757 Based on a patch from Nathan Osman, with help from tim@.
7758
7759commit c0c3373216801797053e123b5f62d35bf41b3611
7760Author: Darren Tucker <dtucker@zip.com.au>
7761Date: Sun Jun 2 06:28:03 2013 +1000
7762
7763 - (dtucker) [configure.ac openbsd-compat/xcrypt.c] bz#2112: fall back to
7764 using openssl's DES_crpyt function on platorms that don't have a native
7765 one, eg Android. Based on a patch from Nathan Osman.
7766
7767commit efdf5342143a887013a1daae583167dadf6752a7
7768Author: Darren Tucker <dtucker@zip.com.au>
7769Date: Thu May 30 08:29:08 2013 +1000
7770
7771 - (dtucker) [configure.ac openbsd-compat/bsd-misc.h] bz#2087: Add a null
7772 implementation of endgrent for platforms that don't have it (eg Android).
7773 Loosely based on a patch from Nathan Osman, ok djm
7774
7775commit 9b42d327380e5cd04efde6fb70e1535fecedf0d7
7776Author: Darren Tucker <dtucker@zip.com.au>
7777Date: Fri May 17 20:48:59 2013 +1000
7778
7779 - dtucker@cvs.openbsd.org 2013/05/17 10:35:43
7780 [regress/scp.sh]
7781 use a file extention that's not special on some platforms. from portable
7782 (id sync only)
7783
7784commit 0a404b0ed79ba45ccaf7ed5528a8f5004c3698cb
7785Author: Darren Tucker <dtucker@zip.com.au>
7786Date: Fri May 17 20:47:29 2013 +1000
7787
7788 - dtucker@cvs.openbsd.org 2013/05/17 10:34:30
7789 [regress/portnum.sh]
7790 use a more portable negated if structure. from portable (id sync only)
7791
7792commit 62ee222e6f3f5ee288434f58b5136ae3d56f5164
7793Author: Darren Tucker <dtucker@zip.com.au>
7794Date: Fri May 17 20:46:00 2013 +1000
7795
7796 - dtucker@cvs.openbsd.org 2013/05/17 10:33:09
7797 [regress/agent-getpeereid.sh]
7798 don't redirect stdout from sudo. from portable (id sync only)
7799
7800commit 00478d30cb4bcc18dc1ced8144d16b03cdf790f6
7801Author: Darren Tucker <dtucker@zip.com.au>
7802Date: Fri May 17 20:45:06 2013 +1000
7803
7804 - dtucker@cvs.openbsd.org 2013/05/17 10:30:07
7805 [regress/test-exec.sh]
7806 wait a bit longer for startup and use case for absolute path.
7807 from portable (id sync only)
7808
7809commit 98989eb95eef0aefed7e9fb4e65c2f625be946f6
7810Author: Darren Tucker <dtucker@zip.com.au>
7811Date: Fri May 17 20:44:09 2013 +1000
7812
7813 - dtucker@cvs.openbsd.org 2013/05/17 10:28:11
7814 [regress/sftp.sh]
7815 only compare copied data if sftp succeeds. from portable (id sync only)
7816
7817commit 438f60eb9a5f7cd40bb242cfec865e4fde71b07c
7818Author: Darren Tucker <dtucker@zip.com.au>
7819Date: Fri May 17 20:43:13 2013 +1000
7820
7821 - dtucker@cvs.openbsd.org 2013/05/17 10:26:26
7822 [regress/sftp-badcmds.sh]
7823 remove unused BATCH variable. (id sync only)
7824
7825commit 1466bd25a8d1ff7ae455a795d2d7d52dc17d2938
7826Author: Darren Tucker <dtucker@zip.com.au>
7827Date: Fri May 17 20:42:05 2013 +1000
7828
7829 - dtucker@cvs.openbsd.org 2013/05/17 10:24:48
7830 [localcommand.sh]
7831 use backticks for portability. (id sync only)
7832
7833commit 05b5e518c9969d63471f2ccfd85b1de6e724d30b
7834Author: Darren Tucker <dtucker@zip.com.au>
7835Date: Fri May 17 20:41:07 2013 +1000
7836
7837 - dtucker@cvs.openbsd.org 2013/05/17 10:23:52
7838 [regress/login-timeout.sh regress/reexec.sh regress/test-exec.sh]
7839 Use SUDO when cat'ing pid files and running the sshd log wrapper so that
7840 it works with a restrictive umask and the pid files are not world readable.
7841 Changes from -portable. (id sync only)
7842
7843commit dd669173f93ea8c8397e0af758eaf13ab4f1c591
7844Author: Darren Tucker <dtucker@zip.com.au>
7845Date: Fri May 17 20:39:57 2013 +1000
7846
7847 - dtucker@cvs.openbsd.org 2013/05/17 10:16:26
7848 [regress/try-ciphers.sh]
7849 use expr for math to keep diffs vs portable down
7850 (id sync only)
7851
7852commit 044f32f4c6fd342f9f5949bb0ca77624c0db4494
7853Author: Darren Tucker <dtucker@zip.com.au>
7854Date: Fri May 17 20:12:57 2013 +1000
7855
7856 - (dtucker) [regress/cfgmatch.sh] Remove unneeded sleep renderd obsolete by
7857 rev 1.6 which calls wait.
7858
7859commit 9cc8ff7b63f175661c8807006f6d2649d56ac402
7860Author: Darren Tucker <dtucker@zip.com.au>
7861Date: Fri May 17 20:01:52 2013 +1000
7862
7863 - (dtucker) [regress/runtests.sh] Remove obsolete test driver script.
7864
7865commit f8d5b3451726530a864b172c556c311370c244e1
7866Author: Darren Tucker <dtucker@zip.com.au>
7867Date: Fri May 17 19:53:25 2013 +1000
7868
7869 - (dtucker) [regress/stderr-after-eof.sh regress/test-exec.sh] Move the md5
7870 helper function to the portable part of test-exec.sh.
7871
7872commit 6f66981ed3c6bb83b937959f329323975e356c33
7873Author: Darren Tucker <dtucker@zip.com.au>
7874Date: Fri May 17 19:28:51 2013 +1000
7875
7876 - (dtucker) [regress/test-exec.sh] Move the portable-specific functions
7877 together and add a couple of missing lines from openbsd.
7878
7879commit 5f1a89a3b67264f4aa83e057cd4f74fd60b9ffa4
7880Author: Darren Tucker <dtucker@zip.com.au>
7881Date: Fri May 17 19:17:58 2013 +1000
7882
7883 - (dtucker) [regress/integrity.sh regress/krl.sh regress/test-exec.sh]
7884 Move the jot helper function to portable-specific part of test-exec.sh.
7885
7886commit 96457a54d05dea81f34ecb4e059d2f8b98382b85
7887Author: Darren Tucker <dtucker@zip.com.au>
7888Date: Fri May 17 19:03:38 2013 +1000
7889
7890 - (dtucker) [regress/agent-getpeereid.sh] Resync spaces with openbsd.
7891
7892commit 7f193236594e8328ad133ea05eded31f837b45b5
7893Author: Darren Tucker <dtucker@zip.com.au>
7894Date: Fri May 17 19:02:28 2013 +1000
7895
7896 - (dtucker) [regress/cfgmatch.sh] Resync config file setup with openbsd.
7897
7898commit 8654dd2d737800d09e7730b3dfc2a54411f4cf90
7899Author: Darren Tucker <dtucker@zip.com.au>
7900Date: Fri May 17 16:03:48 2013 +1000
7901
7902 - (dtucker) [openbsd-compat/getopt.h] Remove unneeded bits.
7903
7904commit 59d928d3b47e8298f4a8b4b3fb37fb8c8ce1b098
7905Author: Darren Tucker <dtucker@zip.com.au>
7906Date: Fri May 17 15:32:29 2013 +1000
7907
7908 - dtucker@cvs.openbsd.org 2013/05/17 04:29:14
7909 [regress/sftp.sh regress/putty-ciphers.sh regress/cipher-speed.sh
7910 regress/test-exec.sh regress/sftp-batch.sh regress/dynamic-forward.sh
7911 regress/putty-transfer.sh regress/conch-ciphers.sh regress/sftp-cmds.sh
7912 regress/scp.sh regress/ssh-com-sftp.sh regress/rekey.sh
7913 regress/putty-kex.sh regress/stderr-data.sh regress/stderr-after-eof.sh
7914 regress/sftp-badcmds.sh regress/reexec.sh regress/ssh-com-client.sh
7915 regress/sftp-chroot.sh regress/forwarding.sh regress/transfer.sh
7916 regress/multiplex.sh]
7917 Move the setting of DATA and COPY into test-exec.sh
7918
7919commit 34035be27b7ddd84706fe95c39d37cba7d5c9572
7920Author: Darren Tucker <dtucker@zip.com.au>
7921Date: Fri May 17 14:47:51 2013 +1000
7922
7923 - dtucker@cvs.openbsd.org 2013/05/17 01:32:11
7924 [regress/integrity.sh]
7925 don't print output from ssh before getting it (it's available in ssh.log)
7926
7927commit b8b96b0aa634d440feba4331c80ae4de9dda2081
7928Author: Darren Tucker <dtucker@zip.com.au>
7929Date: Fri May 17 14:46:20 2013 +1000
7930
7931 - dtucker@cvs.openbsd.org 2013/05/17 01:16:09
7932 [regress/agent-timeout.sh]
7933 Pull back some portability changes from -portable:
7934 - TIMEOUT is a read-only variable in some shells
7935 - not all greps have -q so redirect to /dev/null instead.
7936 (ID sync only)
7937
7938commit a40d97ff46831c9081a6a4472036689360847fb1
7939Author: Darren Tucker <dtucker@zip.com.au>
7940Date: Fri May 17 14:44:53 2013 +1000
7941
7942 sync missing ID
7943
7944commit 56347efe796a0506e846621ae65562b978e45f1d
7945Author: Darren Tucker <dtucker@zip.com.au>
7946Date: Fri May 17 13:28:36 2013 +1000
7947
7948 - dtucker@cvs.openbsd.org 2013/05/17 00:37:40
7949 [regress/agent.sh regress/keytype.sh regress/cfgmatch.sh
7950 regress/forcecommand.sh regress/proto-version.sh regress/test-exec.sh
7951 regress/cipher-speed.sh regress/cert-hostkey.sh regress/cert-userkey.sh
7952 regress/ssh-com.sh]
7953 replace 'echo -n' with 'printf' since it's more portable
7954 also remove "echon" hack.
7955
7956commit 91af05c5167fe0aa5bd41d2e4a83757d9f627c18
7957Author: Darren Tucker <dtucker@zip.com.au>
7958Date: Fri May 17 13:16:59 2013 +1000
7959
7960 - (dtucker) [regress/integrity.sh]. Force fixed Diffie-Hellman key exchange
7961 methods. When the openssl version doesn't support ECDH then next one on
7962 the list is DH group exchange, but that causes a bit more traffic which can
7963 mean that the tests flip bits in the initial exchange rather than the MACed
7964 traffic and we get different errors to what the tests look for.
7965
7966commit 6e1e60c3c2e16c32bb7ca0876caaa6182a4e4b2c
7967Author: Darren Tucker <dtucker@zip.com.au>
7968Date: Fri May 17 11:23:41 2013 +1000
7969
7970 - (dtucker) [regress/bsd.regress.mk] Remove unused file. We've never used it
7971 in portable and it's long gone in openbsd.
7972
7973commit 982b0cbc4c2b5ea14725f4b339393cdf343dd0fe
7974Author: Darren Tucker <dtucker@zip.com.au>
7975Date: Fri May 17 09:45:12 2013 +1000
7976
7977 - dtucker@cvs.openbsd.org 2013/05/16 05:48:31
7978 [regress/rekey.sh]
7979 add tests for RekeyLimit parsing
7980
7981commit 14490fe7b0f45b1b19f8a3dc10eb3d214f27f5bd
7982Author: Darren Tucker <dtucker@zip.com.au>
7983Date: Fri May 17 09:44:20 2013 +1000
7984
7985 - dtucker@cvs.openbsd.org 2013/05/16 04:26:10
7986 [regress/rekey.sh]
7987 add server-side rekey test
7988
7989commit c31c8729c15f83fba14ef9da0d66bda6215ff69a
7990Author: Darren Tucker <dtucker@zip.com.au>
7991Date: Fri May 17 09:43:33 2013 +1000
7992
7993 - dtucker@cvs.openbsd.org 2013/05/16 03:33:30
7994 [regress/rekey.sh]
7995 test rekeying when there's no data being transferred
7996
7997commit a8a62fcc46c19997797846197a6256ed9a777a47
7998Author: Darren Tucker <dtucker@zip.com.au>
7999Date: Fri May 17 09:42:34 2013 +1000
8000
8001 - dtucker@cvs.openbsd.org 2013/05/16 02:10:35
8002 [rekey.sh]
8003 Add test for time-based rekeying
8004
8005commit 5e95173715d516e6014485e2b6def1fb3db84036
8006Author: Darren Tucker <dtucker@zip.com.au>
8007Date: Fri May 17 09:41:33 2013 +1000
8008
8009 - djm@cvs.openbsd.org 2013/05/10 03:46:14
8010 [modpipe.c]
8011 sync some portability changes from portable OpenSSH (id sync only)
8012
8013commit a4df65b9fc68a555a7d8781700475fb03ed6e694
8014Author: Darren Tucker <dtucker@zip.com.au>
8015Date: Fri May 17 09:37:31 2013 +1000
8016
8017 - dtucker@cvs.openbsd.org 2013/04/22 07:28:53
8018 [multiplex.sh]
8019 Add tests for -Oforward and -Ocancel for local and remote forwards
8020
8021commit 40aaff7e4bcb05b05e3d24938b6d34885be817da
8022Author: Darren Tucker <dtucker@zip.com.au>
8023Date: Fri May 17 09:36:20 2013 +1000
8024
8025 - dtucker@cvs.openbsd.org 2013/04/22 07:23:08
8026 [multiplex.sh]
8027 Write mux master logs to regress.log instead of ssh.log to keep separate
8028
8029commit f3568fc62b73b50a0a3c8447e4a00f4892cab25e
8030Author: Darren Tucker <dtucker@zip.com.au>
8031Date: Fri May 17 09:35:26 2013 +1000
8032
8033 - djm@cvs.openbsd.org 2013/04/18 02:46:12
8034 [Makefile regress/sftp-chroot.sh]
8035 test sshd ChrootDirectory+internal-sftp; feedback & ok dtucker@
8036
8037commit dfea3bcdd7c980c2335402464b7dd8d8721e426d
8038Author: Darren Tucker <dtucker@zip.com.au>
8039Date: Fri May 17 09:31:39 2013 +1000
8040
8041 - dtucker@cvs.openbsd.org 2013/04/07 02:16:03
8042 [regress/Makefile regress/rekey.sh regress/integrity.sh
8043 regress/sshd-log-wrapper.sh regress/forwarding.sh regress/test-exec.sh]
8044 use -E option for ssh and sshd to write debuging logs to ssh{,d}.log and
8045 save the output from any failing tests. If a test fails the debug output
8046 from ssh and sshd for the failing tests (and only the failing tests) should
8047 be available in failed-ssh{,d}.log.
8048
8049commit 75129025a2d504b630d1718fef0da002f5662f63
8050Author: Darren Tucker <dtucker@zip.com.au>
8051Date: Fri May 17 09:19:10 2013 +1000
8052
8053 - dtucker@cvs.openbsd.org 2013/04/06 06:00:22
8054 [regress/rekey.sh regress/test-exec.sh regress/integrity.sh
8055 regress/multiplex.sh Makefile regress/cfgmatch.sh]
8056 Split the regress log into 3 parts: the debug output from ssh, the debug
8057 log from sshd and the output from the client command (ssh, scp or sftp).
8058 Somewhat functional now, will become more useful when ssh/sshd -E is added.
8059
8060commit 7c8b1e72331293b4707dc6f7f68a69e975a3fa70
8061Author: Darren Tucker <dtucker@zip.com.au>
8062Date: Fri May 17 09:10:20 2013 +1000
8063
8064 - dtucker@cvs.openbsd.org 2013/03/23 11:09:43
8065 [test-exec.sh]
8066 Only regenerate host keys if they don't exist or if ssh-keygen has changed
8067 since they were. Reduces test runtime by 5-30% depending on machine
8068 speed.
8069
8070commit 712de4d1100963b11bc618472f95ce36bf7e2ae3
8071Author: Darren Tucker <dtucker@zip.com.au>
8072Date: Fri May 17 09:07:12 2013 +1000
8073
8074 - djm@cvs.openbsd.org 2013/03/07 00:20:34
8075 [regress/proxy-connect.sh]
8076 repeat test with a style appended to the username
8077
8078commit 09c0f0325b2f538de9a1073e03b8ef26dece4c16
8079Author: Darren Tucker <dtucker@zip.com.au>
8080Date: Thu May 16 20:48:57 2013 +1000
8081
8082 - dtucker@cvs.openbsd.org 2013/05/16 10:44:06
8083 [servconf.c]
8084 remove another now-unused variable
8085
8086commit 9113d0c2381202412c912a20c8083ab7d6824ec9
8087Author: Darren Tucker <dtucker@zip.com.au>
8088Date: Thu May 16 20:48:14 2013 +1000
8089
8090 - dtucker@cvs.openbsd.org 2013/05/16 10:43:34
8091 [servconf.c readconf.c]
8092 remove now-unused variables
8093
8094commit e194ba4111ffd47cd1f4c8be1ddc8a4cb673d005
8095Author: Darren Tucker <dtucker@zip.com.au>
8096Date: Thu May 16 20:47:31 2013 +1000
8097
8098 - (dtucker) [configure.ac readconf.c servconf.c
8099 openbsd-compat/openbsd-compat.h] Add compat bits for scan_scaled.
8100
8101commit b7ee8521448100e5b268111ff90feb017e657e44
8102Author: Darren Tucker <dtucker@zip.com.au>
8103Date: Thu May 16 20:33:10 2013 +1000
8104
8105 - dtucker@cvs.openbsd.org 2013/05/16 09:12:31
8106 [readconf.c servconf.c]
8107 switch RekeyLimit traffic volume parsing to scan_scaled. ok djm@
8108
8109commit dbee308253931f8c1aeebf781d7e7730ff6a0dc1
8110Author: Darren Tucker <dtucker@zip.com.au>
8111Date: Thu May 16 20:32:29 2013 +1000
8112
8113 - dtucker@cvs.openbsd.org 2013/05/16 09:08:41
8114 [log.c scp.c sshd.c serverloop.c schnorr.c sftp.c]
8115 Fix some "unused result" warnings found via clang and -portable.
8116 ok markus@
8117
8118commit 64d22946d664dad8165f1fae9e78b53831ed728d
8119Author: Darren Tucker <dtucker@zip.com.au>
8120Date: Thu May 16 20:31:29 2013 +1000
8121
8122 - jmc@cvs.openbsd.org 2013/05/16 06:30:06
8123 [sshd_config.5]
8124 oops! avoid Xr to self;
8125
8126commit 63e0df2b936770baadc8844617b99e5174b476d0
8127Author: Darren Tucker <dtucker@zip.com.au>
8128Date: Thu May 16 20:30:31 2013 +1000
8129
8130 - jmc@cvs.openbsd.org 2013/05/16 06:28:45
8131 [ssh_config.5]
8132 put IgnoreUnknown in the right place;
8133
8134commit 0763698f71efef8b3f8460c5700758359219eb7c
8135Author: Darren Tucker <dtucker@zip.com.au>
8136Date: Thu May 16 20:30:03 2013 +1000
8137
8138 - djm@cvs.openbsd.org 2013/05/16 04:27:50
8139 [ssh_config.5 readconf.h readconf.c]
8140 add the ability to ignore specific unrecognised ssh_config options;
8141 bz#866; ok markus@
8142
8143commit 5f96f3b4bee11ae2b9b32ff9b881c3693e210f96
8144Author: Darren Tucker <dtucker@zip.com.au>
8145Date: Thu May 16 20:29:28 2013 +1000
8146
8147 - dtucker@cvs.openbsd.org 2013/05/16 04:09:14
8148 [sshd_config.5 servconf.c servconf.h packet.c serverloop.c monitor.c sshd_config
8149 sshd.c] Add RekeyLimit to sshd with the same syntax as the client allowing
8150 rekeying based on traffic volume or time. ok djm@, help & ok jmc@ for the man
8151 page.
8152
8153commit c53c2af173cf67fd1c26f98e7900299b1b65b6ec
8154Author: Darren Tucker <dtucker@zip.com.au>
8155Date: Thu May 16 20:28:16 2013 +1000
8156
8157 - dtucker@cvs.openbsd.org 2013/05/16 02:00:34
8158 [ssh_config sshconnect2.c packet.c readconf.h readconf.c clientloop.c
8159 ssh_config.5 packet.h]
8160 Add an optional second argument to RekeyLimit in the client to allow
8161 rekeying based on elapsed time in addition to amount of traffic.
8162 with djm@ jmc@, ok djm
8163
8164commit 64c6fceecd27e1739040b42de8f3759454260b39
8165Author: Darren Tucker <dtucker@zip.com.au>
8166Date: Thu May 16 20:27:14 2013 +1000
8167
8168 - dtucker@cvs.openbsd.org 2013/05/10 10:13:50
8169 [ssh-pkcs11-helper.c]
8170 remove unused extern optarg. ok markus@
8171
8172commit caf00109346e4ab6bb495b0e22bc5b1e7ee22f26
8173Author: Darren Tucker <dtucker@zip.com.au>
8174Date: Thu May 16 20:26:18 2013 +1000
8175
8176 - djm@cvs.openbsd.org 2013/05/10 04:08:01
8177 [key.c]
8178 memleak in cert_free(), wasn't actually freeing the struct;
8179 bz#2096 from shm AT digitalsun.pl
8180
8181commit 7e831edbf7a1b0b9aeeb08328b9fceafaad1bf22
8182Author: Darren Tucker <dtucker@zip.com.au>
8183Date: Thu May 16 20:25:40 2013 +1000
8184
8185 add missing attribution
8186
8187commit 54da6be320495604ddf65d10ac4cc8cf7849c533
8188Author: Darren Tucker <dtucker@zip.com.au>
8189Date: Thu May 16 20:25:04 2013 +1000
8190
8191 - djm@cvs.openbsd.org 2013/05/10 03:40:07
8192 [sshconnect2.c]
8193 fix bzero(ptr_to_struct, sizeof(ptr_to_struct)); bz#2100 from
8194
8195commit 5d8b702d95c0dfc338726fecfbb709695afd1377
8196Author: Darren Tucker <dtucker@zip.com.au>
8197Date: Thu May 16 20:24:23 2013 +1000
8198
8199 - dtucker@cvs.openbsd.org 2013/05/06 07:35:12
8200 [sftp-server.8]
8201 Reference the version of the sftp draft we actually implement. ok djm@
8202
8203commit 026d9db3fbe311b5a7e98d62472cb666aa559648
8204Author: Darren Tucker <dtucker@zip.com.au>
8205Date: Thu May 16 20:23:52 2013 +1000
8206
8207 - tedu@cvs.openbsd.org 2013/04/24 16:01:46
8208 [misc.c]
8209 remove extra parens noticed by nicm
8210
8211commit 2ca51bf140ef2c2409fd220778529dc17c11d8fa
8212Author: Darren Tucker <dtucker@zip.com.au>
8213Date: Thu May 16 20:22:46 2013 +1000
8214
8215 - tedu@cvs.openbsd.org 2013/04/23 17:49:45
8216 [misc.c]
8217 use xasprintf instead of a series of strlcats and strdup. ok djm
8218
8219commit 6aa3eacc5e5f39702b6dd5b27970d9fd97bc2383
8220Author: Damien Miller <djm@mindrot.org>
8221Date: Thu May 16 11:10:17 2013 +1000
8222
8223 - (djm) [contrib/ssh-copy-id] Fix bug that could cause "rm *" to be
8224 executed if mktemp failed; bz#2105 ok dtucker@
8225
8226commit c54e3e0741a27119b3badd8ff92b1988b7e9bd50
8227Author: Darren Tucker <dtucker@zip.com.au>
8228Date: Fri May 10 18:53:14 2013 +1000
8229
8230 - (dtucker) [configure.ac] Add -Werror to the -Qunused-arguments test so
8231 we don't get a warning on compilers that *don't* support it. Add
8232 -Wno-unknown-warning-option. Move both to the start of the list for
8233 maximum noise suppression. Tested with gcc 4.6.3, gcc 2.95.4 and clang 2.9.
8234
8235commit a75d247a18a5099c60226395354eb252c097ac86
8236Author: Darren Tucker <dtucker@zip.com.au>
8237Date: Fri May 10 18:11:55 2013 +1000
8238
8239 - (dtucker) [kex.c] Only include sha256 and ECC key exchange methods when the
8240 underlying libraries support them.
8241
8242commit 0abfb559e3f79d1f217773510d7626c3722aa3c1
8243Author: Darren Tucker <dtucker@zip.com.au>
8244Date: Fri May 10 18:08:49 2013 +1000
8245
8246 - (dtucker) [openbsd-compat/getopt.h openbsd-compat/getopt_long.c
8247 openbsd-compat/openbsd-compat.h] pull in getopt.h from openbsd and plumb
8248 in to use it when we're using our own getopt.
8249
8250commit ccfdfceacb7e23d1479ed4cc91976c5ac6e23c56
8251Author: Darren Tucker <dtucker@zip.com.au>
8252Date: Fri May 10 16:28:55 2013 +1000
8253
8254 - (dtucker) [openbsd-compat/Makefile.in openbsd-compat/getopt.c
8255 openbsd-compat/getopt_long.c regress/modpipe.c] Remove getopt.c, add
8256 portability code to getopt_long.c and switch over Makefile and the ugly
8257 hack in modpipe.c. Fixes bz#1448.
8258
8259commit 39332020078aa8fd4fc28e00b336438dc64b0f5a
8260Author: Darren Tucker <dtucker@zip.com.au>
8261Date: Fri May 10 15:38:11 2013 +1000
8262
8263 - (dtucker) [openbsd-compat/getopt_long.c] Import from OpenBSD. No
8264 portability changes yet.
8265
8266commit 35b2fe99bee4f332d1c1efa49107cdb3c67da07a
8267Author: Darren Tucker <dtucker@zip.com.au>
8268Date: Fri May 10 15:35:26 2013 +1000
8269
8270 - (dtucker) [openbsd-compat/getopt.c] Factor out portibility changes to
8271 getopt.c. Preprocessed source is identical other than line numbers.
8272
8273commit abbc7a7c02e45787d023f50a30f62d7a3e14fe9e
8274Author: Darren Tucker <dtucker@zip.com.au>
8275Date: Fri May 10 13:54:23 2013 +1000
8276
8277 - (dtucker) [configure.ac] Enable -Wsizeof-pointer-memaccess if the compiler
8278 supports it. Mentioned by Colin Watson in bz#2100, ok djm.
8279
8280commit bc02f163f6e882d390abfb925b47b41e13ae523b
8281Author: Damien Miller <djm@mindrot.org>
8282Date: Tue Apr 23 19:25:49 2013 +1000
8283
8284 - dtucker@cvs.openbsd.org 2013/04/22 01:17:18
8285 [mux.c]
8286 typo in debug output: evitval->exitval
8287
8288commit f8b894e31dc3530c7eb6d0a378848260d54f74c4
8289Author: Damien Miller <djm@mindrot.org>
8290Date: Tue Apr 23 19:25:29 2013 +1000
8291
8292 - djm@cvs.openbsd.org 2013/04/19 12:07:08
8293 [kex.c]
8294 remove duplicated list entry pointed out by naddy@
8295
8296commit 34bd20a1e53b63ceb01f06c1654d9112e6784b0a
8297Author: Damien Miller <djm@mindrot.org>
8298Date: Tue Apr 23 19:25:00 2013 +1000
8299
8300 - djm@cvs.openbsd.org 2013/04/19 11:10:18
8301 [ssh.c]
8302 add -Q to usage; reminded by jmc@
8303
8304commit ea11119eee3c5e2429b1f5f8688b25b028fa991a
8305Author: Damien Miller <djm@mindrot.org>
8306Date: Tue Apr 23 19:24:32 2013 +1000
8307
8308 - djm@cvs.openbsd.org 2013/04/19 01:06:50
8309 [authfile.c cipher.c cipher.h kex.c kex.h kexecdh.c kexecdhc.c kexecdhs.c]
8310 [key.c key.h mac.c mac.h packet.c ssh.1 ssh.c]
8311 add the ability to query supported ciphers, MACs, key type and KEX
8312 algorithms to ssh. Includes some refactoring of KEX and key type handling
8313 to be table-driven; ok markus@
8314
8315commit a56086b9903b62c1c4fdedf01b68338fe4dc90e4
8316Author: Damien Miller <djm@mindrot.org>
8317Date: Tue Apr 23 15:24:18 2013 +1000
8318
8319 - djm@cvs.openbsd.org 2013/04/19 01:03:01
8320 [session.c]
8321 reintroduce 1.262 without the connection-killing bug:
8322 fatal() when ChrootDirectory specified by running without root privileges;
8323 ok markus@
8324
8325commit 0d6771b4648889ae5bc4235f9e3fc6cd82b710bd
8326Author: Damien Miller <djm@mindrot.org>
8327Date: Tue Apr 23 15:23:24 2013 +1000
8328
8329 - djm@cvs.openbsd.org 2013/04/19 01:01:00
8330 [ssh-keygen.c]
8331 fix some memory leaks; bz#2088 ok dtucker@
8332
8333commit 467b00c38ba244f9966466e57a89d003f3afb159
8334Author: Damien Miller <djm@mindrot.org>
8335Date: Tue Apr 23 15:23:07 2013 +1000
8336
8337 - djm@cvs.openbsd.org 2013/04/19 01:00:10
8338 [sshd_config.5]
8339 document the requirment that the AuthorizedKeysCommand be owned by root;
8340 ok dtucker@ markus@
8341
8342commit 9303e6527bb5ca7630c765f28624702c212bfd6c
8343Author: Damien Miller <djm@mindrot.org>
8344Date: Tue Apr 23 15:22:40 2013 +1000
8345
8346 - djm@cvs.openbsd.org 2013/04/18 02:16:07
8347 [sftp.c]
8348 make "sftp -q" do what it says on the sticker: hush everything but errors;
8349
8350commit f1a02aea35504e8bef2ed9eef6f9ddeab12bacb3
8351Author: Damien Miller <djm@mindrot.org>
8352Date: Tue Apr 23 15:22:13 2013 +1000
8353
8354 - dtucker@cvs.openbsd.org 2013/04/17 09:04:09
8355 [session.c]
8356 revert rev 1.262; it fails because uid is already set here. ok djm@
8357
8358commit d5edefd27a30768cc7a4817302e964b6cb2f9be7
8359Author: Damien Miller <djm@mindrot.org>
8360Date: Tue Apr 23 15:21:39 2013 +1000
8361
8362 - djm@cvs.openbsd.org 2013/04/11 02:27:50
8363 [packet.c]
8364 quiet disconnect notifications on the server from error() back to logit()
8365 if it is a normal client closure; bz#2057 ok+feedback dtucker@
8366
8367commit 6901032b05291fc5d2bd4067fc47904de3506fda
8368Author: Damien Miller <djm@mindrot.org>
8369Date: Tue Apr 23 15:21:24 2013 +1000
8370
8371 - dtucker@cvs.openbsd.org 2013/04/07 09:40:27
8372 [sshd.8]
8373 clarify -e text. suggested by & ok jmc@
8374
8375commit 03d4d7e60b16f913c75382e32e136ddfa8d6485f
8376Author: Damien Miller <djm@mindrot.org>
8377Date: Tue Apr 23 15:21:06 2013 +1000
8378
8379 - dtucker@cvs.openbsd.org 2013/04/07 02:10:33
8380 [log.c log.h ssh.1 ssh.c sshd.8 sshd.c]
8381 Add -E option to ssh and sshd to append debugging logs to a specified file
8382 instead of stderr or syslog. ok markus@, man page help jmc@
8383
8384commit 37f1c08473b1ef2a188ee178ce2e11e841f88563
8385Author: Damien Miller <djm@mindrot.org>
8386Date: Tue Apr 23 15:20:43 2013 +1000
8387
8388 - markus@cvs.openbsd.org 2013/04/06 16:07:00
8389 [channels.c sshd.c]
8390 handle ECONNABORTED for accept(); ok deraadt some time ago...
8391
8392commit 172859cff7df9fd8a29a1f0a4de568f644bbda50
8393Author: Damien Miller <djm@mindrot.org>
8394Date: Tue Apr 23 15:19:27 2013 +1000
8395
8396 - djm@cvs.openbsd.org 2013/04/05 00:58:51
8397 [mux.c]
8398 cleanup mux-created channels that are in SSH_CHANNEL_OPENING state too
8399 (in addition to ones already in OPEN); bz#2079, ok dtucker@
8400
8401commit 9f12b5dcd5f7772e633fb2786c63bfcbea1f1aea
8402Author: Damien Miller <djm@mindrot.org>
8403Date: Tue Apr 23 15:19:11 2013 +1000
8404
8405 - djm@cvs.openbsd.org 2013/04/05 00:31:49
8406 [pathnames.h]
8407 use the existing _PATH_SSH_USER_RC define to construct the other
8408 pathnames; bz#2077, ok dtucker@ (no binary change)
8409
8410commit d677ad14ff7efedf21745ee1694058350e758e18
8411Author: Damien Miller <djm@mindrot.org>
8412Date: Tue Apr 23 15:18:51 2013 +1000
8413
8414 - djm@cvs.openbsd.org 2013/04/05 00:14:00
8415 [auth2-gss.c krl.c sshconnect2.c]
8416 hush some {unused, printf type} warnings
8417
8418commit 508b6c3d3b95c8ec078fd4801368597ab29b2db9
8419Author: Damien Miller <djm@mindrot.org>
8420Date: Tue Apr 23 15:18:28 2013 +1000
8421
8422 - djm@cvs.openbsd.org 2013/03/08 06:32:58
8423 [ssh.c]
8424 allow "ssh -f none ..." ok markus@
8425
8426commit 91a55f28f35431f9000b95815c343b5a18fda712
8427Author: Damien Miller <djm@mindrot.org>
8428Date: Tue Apr 23 15:18:10 2013 +1000
8429
8430 - markus@cvs.openbsd.org 2013/03/07 19:27:25
8431 [auth.h auth2-chall.c auth2.c monitor.c sshd_config.5]
8432 add submethod support to AuthenticationMethods; ok and freedback djm@
8433
8434commit 4ce189d9108c62090a0dd5dea973d175328440db
8435Author: Damien Miller <djm@mindrot.org>
8436Date: Tue Apr 23 15:17:52 2013 +1000
8437
8438 - djm@cvs.openbsd.org 2013/03/07 00:19:59
8439 [auth2-pubkey.c monitor.c]
8440 reconstruct the original username that was sent by the client, which may
8441 have included a style (e.g. "root:skey") when checking public key
8442 signatures. Fixes public key and hostbased auth when the client specified
8443 a style; ok markus@
8444
8445commit 5cbec4c25954b184e43bf3d3ac09e65eb474f5f9
8446Author: Damien Miller <djm@mindrot.org>
8447Date: Tue Apr 23 15:17:12 2013 +1000
8448
8449 - djm@cvs.openbsd.org 2013/03/06 23:36:53
8450 [readconf.c]
8451 g/c unused variable (-Wunused)
8452
8453commit 998cc56b65682d490c9bbf5977dceb1aa84a0233
8454Author: Damien Miller <djm@mindrot.org>
8455Date: Tue Apr 23 15:16:43 2013 +1000
8456
8457 - djm@cvs.openbsd.org 2013/03/06 23:35:23
8458 [session.c]
8459 fatal() when ChrootDirectory specified by running without root privileges;
8460 ok markus@
8461
8462commit 62e9c4f9b6027620f9091a2f43328e057bdb33f1
8463Author: Damien Miller <djm@mindrot.org>
8464Date: Tue Apr 23 15:15:49 2013 +1000
8465
8466 - (djm) OpenBSD CVS Sync
8467 - markus@cvs.openbsd.org 2013/03/05 20:16:09
8468 [sshconnect2.c]
8469 reset pubkey order on partial success; ok djm@
8470
8471commit 6332da2ae88db623d7da8070dd807efa26d9dfe8
8472Author: Damien Miller <djm@mindrot.org>
8473Date: Tue Apr 23 14:25:52 2013 +1000
8474
8475 - (djm) [auth.c configure.ac misc.c monitor.c monitor_wrap.c] Support
8476 platforms, such as Android, that lack struct passwd.pw_gecos. Report
8477 and initial patch from Nathan Osman bz#2086; feedback tim@ ok dtucker@
8478
8479commit ce1c9574fcfaf753a062276867335c1e237f725c
8480Author: Darren Tucker <dtucker@zip.com.au>
8481Date: Thu Apr 18 21:36:19 2013 +1000
8482
8483 - (dtucker) [configure.ac] Use -Qunused-arguments to suppress warnings from
8484 unused argument warnings (in particular, -fno-builtin-memset) from clang.
8485
8486commit bc68f2451b836e6a3fa65df8774a8b1f10049ded
8487Author: Damien Miller <djm@mindrot.org>
8488Date: Thu Apr 18 11:26:25 2013 +1000
8489
8490 - (djm) [config.guess config.sub] Update to last versions before they switch
8491 to GPL3. ok dtucker@
8492
8493commit 15fd19c4c9943cf02bc6f462d52c86ee6a8f422e
8494Author: Darren Tucker <dtucker@zip.com.au>
8495Date: Fri Apr 5 11:22:26 2013 +1100
8496
8497 - djm@cvs.openbsd.org 2013/02/22 22:09:01
8498 [ssh.c]
8499 Allow IdenityFile=none; ok markus deraadt (and dtucker for an earlier
8500 version)
8501
8502commit 5d1d9541a7c83963cd887b6b36e25b46463a05d4
8503Author: Darren Tucker <dtucker@zip.com.au>
8504Date: Fri Apr 5 11:20:00 2013 +1100
8505
8506 - markus@cvs.openbsd.org 2013/02/22 19:13:56
8507 [sshconnect.c]
8508 support ProxyCommand=- (stdin/out already point to the proxy); ok djm@
8509
8510commit aefa3682431f59cf1ad9a0f624114b135135aa44
8511Author: Darren Tucker <dtucker@zip.com.au>
8512Date: Fri Apr 5 11:18:35 2013 +1100
8513
8514 - dtucker@cvs.openbsd.org 2013/02/22 04:45:09
8515 [ssh.c readconf.c readconf.h]
8516 Don't complain if IdentityFiles specified in system-wide configs are
8517 missing. ok djm, deraadt
8518
8519commit f3c38142435622d056582e851579d8647a233c7f
8520Author: Darren Tucker <dtucker@zip.com.au>
8521Date: Fri Apr 5 11:16:52 2013 +1100
8522
8523 - dtucker@cvs.openbsd.org 2013/02/19 02:12:47
8524 [krl.c]
8525 Remove bogus include. ok djm
8526 (id sync only)
8527
8528commit 1910478c2d2c3d0e1edacaeff21ed388d70759e9
8529Author: Darren Tucker <dtucker@zip.com.au>
8530Date: Fri Apr 5 11:13:08 2013 +1100
8531
8532 - dtucker@cvs.openbsd.org 2013/02/17 23:16:57
8533 [readconf.c ssh.c readconf.h sshconnect2.c]
8534 Keep track of which IndentityFile options were manually supplied and which
8535 were default options, and don't warn if the latter are missing.
8536 ok markus@
8537
8538commit c9627cdbc65b25da943f24e6a953da899f08eefc
8539Author: Darren Tucker <dtucker@zip.com.au>
8540Date: Mon Apr 1 12:40:48 2013 +1100
8541
8542 - (dtucker) [openbsd-compat/bsd-cygwin_util.{c,h}] Don't include windows.h
8543 to avoid conflicting definitions of __int64, adding the required bits.
8544 Patch from Corinna Vinschen.
8545
8546commit 75db01d2ce29a85f8e5a2aff2011446896cf3f8a
8547Author: Tim Rice <tim@multitalents.net>
8548Date: Fri Mar 22 10:14:32 2013 -0700
8549
8550 - (tim) [Makefile.in] remove some duplication introduced in 20130220 commit.
8551
8552commit 221b4b2436ac78a65c3b775c25ccd396a1fed208
8553Author: Darren Tucker <dtucker@zip.com.au>
8554Date: Fri Mar 22 12:51:09 2013 +1100
8555
8556 - (dtucker) [includes.h] Check if _GNU_SOURCE is already defined before
8557 defining it again. Prevents warnings if someone, eg, sets it in CFLAGS.
8558
8559commit c8a0f27c6d761d1335d13ed84d773e9ddf1d95c8
8560Author: Darren Tucker <dtucker@zip.com.au>
8561Date: Fri Mar 22 12:49:14 2013 +1100
8562
8563 - (dtucker) [configure.ac] Add stdlib.h to zlib check for exit() prototype.
8564
8565commit eed8dc261018aea4d6b8606ca3addc9f8cf9ed1e
8566Author: Damien Miller <djm@mindrot.org>
8567Date: Fri Mar 22 10:25:22 2013 +1100
8568
8569 - (djm) Release 6.2p1
8570
8571commit 83efe7c86168cc07b8e6cc6df6b54f7ace3b64a3
8572Author: Damien Miller <djm@mindrot.org>
8573Date: Fri Mar 22 10:17:36 2013 +1100
8574
8575 - (djm) [contrib/ssh-copy-id contrib/ssh-copy-id.1] Updated to Phil
8576 Hands' greatly revised version.
8577
8578commit 63b4bcd04e1c57b77eabb4e4d359508a4b2af685
8579Author: Damien Miller <djm@mindrot.org>
8580Date: Wed Mar 20 12:55:14 2013 +1100
8581
8582 - (djm) [configure.ac log.c scp.c sshconnect2.c openbsd-compat/vis.c]
8583 [openbsd-compat/vis.h] FreeBSD's strnvis isn't compatible with OpenBSD's
8584 so mark it as broken. Patch from des AT des.no
diff --git a/PROTOCOL b/PROTOCOL
index 91bfe270d..85641e650 100644
--- a/PROTOCOL
+++ b/PROTOCOL
@@ -175,7 +175,7 @@ whitelisted to receive this message upon request.
175 175
176OpenSSH supports layer 2 and layer 3 tunnelling via the "tun@openssh.com" 176OpenSSH supports layer 2 and layer 3 tunnelling via the "tun@openssh.com"
177channel type. This channel type supports forwarding of network packets 177channel type. This channel type supports forwarding of network packets
178with datagram boundaries intact between endpoints equipped with 178with datagram boundaries intact between endpoints equipped with
179interfaces like the BSD tun(4) device. Tunnel forwarding channels are 179interfaces like the BSD tun(4) device. Tunnel forwarding channels are
180requested by the client with the following packet: 180requested by the client with the following packet:
181 181
@@ -453,4 +453,4 @@ respond with a SSH_FXP_STATUS message.
453This extension is advertised in the SSH_FXP_VERSION hello with version 453This extension is advertised in the SSH_FXP_VERSION hello with version
454"1". 454"1".
455 455
456$OpenBSD: PROTOCOL,v 1.27 2015/02/20 22:17:21 djm Exp $ 456$OpenBSD: PROTOCOL,v 1.28 2015/05/08 03:56:51 djm Exp $
diff --git a/PROTOCOL.agent b/PROTOCOL.agent
index 3fcaa14d4..27ec0c1de 100644
--- a/PROTOCOL.agent
+++ b/PROTOCOL.agent
@@ -413,7 +413,7 @@ It may be requested using this message:
413 413
414"rsa_e" and "rsa_n" are used to identify which private key to use. 414"rsa_e" and "rsa_n" are used to identify which private key to use.
415"encrypted_challenge" is a challenge blob that has (presumably) 415"encrypted_challenge" is a challenge blob that has (presumably)
416been encrypted with the public key and must be in the range 416been encrypted with the public key and must be in the range
4171 <= encrypted_challenge < 2^256. "session_id" is the SSH protocol 1 4171 <= encrypted_challenge < 2^256. "session_id" is the SSH protocol 1
418session ID (computed from the server host key, the server semi-ephemeral 418session ID (computed from the server host key, the server semi-ephemeral
419key and the session cookie). 419key and the session cookie).
@@ -557,4 +557,4 @@ Locking and unlocking affects both protocol 1 and protocol 2 keys.
557 SSH_AGENT_CONSTRAIN_LIFETIME 1 557 SSH_AGENT_CONSTRAIN_LIFETIME 1
558 SSH_AGENT_CONSTRAIN_CONFIRM 2 558 SSH_AGENT_CONSTRAIN_CONFIRM 2
559 559
560$OpenBSD: PROTOCOL.agent,v 1.7 2013/01/02 00:33:49 djm Exp $ 560$OpenBSD: PROTOCOL.agent,v 1.8 2015/05/08 03:56:51 djm Exp $
diff --git a/README b/README
index f1f7e7fc0..0401d85ac 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
1See http://www.openssh.com/txt/release-6.8 for the release notes. 1See http://www.openssh.com/txt/release-6.9 for the release notes.
2 2
3- A Japanese translation of this document and of the OpenSSH FAQ is 3- A Japanese translation of this document and of the OpenSSH FAQ is
4- available at http://www.unixuser.org/~haruyama/security/openssh/index.html 4- available at http://www.unixuser.org/~haruyama/security/openssh/index.html
diff --git a/auth-chall.c b/auth-chall.c
index 5c26a403d..60c9f14ca 100644
--- a/auth-chall.c
+++ b/auth-chall.c
@@ -30,8 +30,6 @@
30#include <stdlib.h> 30#include <stdlib.h>
31#include <stdio.h> 31#include <stdio.h>
32 32
33#include <stdarg.h>
34
35#include "xmalloc.h" 33#include "xmalloc.h"
36#include "key.h" 34#include "key.h"
37#include "hostfile.h" 35#include "hostfile.h"
diff --git a/auth-options.c b/auth-options.c
index 3fa236eb8..9ab1880d9 100644
--- a/auth-options.c
+++ b/auth-options.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth-options.c,v 1.65 2015/01/14 10:30:34 markus Exp $ */ 1/* $OpenBSD: auth-options.c,v 1.67 2015/05/01 03:20:54 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -220,8 +220,7 @@ auth_parse_options(struct passwd *pw, char *opts, char *file, u_long linenum)
220 goto next_option; 220 goto next_option;
221 } 221 }
222 cp = "environment=\""; 222 cp = "environment=\"";
223 if (options.permit_user_env && 223 if (strncasecmp(opts, cp, strlen(cp)) == 0) {
224 strncasecmp(opts, cp, strlen(cp)) == 0) {
225 char *s; 224 char *s;
226 struct envstring *new_envstring; 225 struct envstring *new_envstring;
227 226
@@ -247,13 +246,19 @@ auth_parse_options(struct passwd *pw, char *opts, char *file, u_long linenum)
247 goto bad_option; 246 goto bad_option;
248 } 247 }
249 s[i] = '\0'; 248 s[i] = '\0';
250 auth_debug_add("Adding to environment: %.900s", s);
251 debug("Adding to environment: %.900s", s);
252 opts++; 249 opts++;
253 new_envstring = xcalloc(1, sizeof(struct envstring)); 250 if (options.permit_user_env) {
254 new_envstring->s = s; 251 auth_debug_add("Adding to environment: "
255 new_envstring->next = custom_environment; 252 "%.900s", s);
256 custom_environment = new_envstring; 253 debug("Adding to environment: %.900s", s);
254 new_envstring = xcalloc(1,
255 sizeof(*new_envstring));
256 new_envstring->s = s;
257 new_envstring->next = custom_environment;
258 custom_environment = new_envstring;
259 s = NULL;
260 }
261 free(s);
257 goto next_option; 262 goto next_option;
258 } 263 }
259 cp = "from=\""; 264 cp = "from=\"";
@@ -620,7 +625,7 @@ auth_cert_options(struct sshkey *k, struct passwd *pw)
620 &cert_source_address_done) == -1) 625 &cert_source_address_done) == -1)
621 return -1; 626 return -1;
622 if (parse_option_list(k->cert->extensions, pw, 627 if (parse_option_list(k->cert->extensions, pw,
623 OPTIONS_EXTENSIONS, 1, 628 OPTIONS_EXTENSIONS, 0,
624 &cert_no_port_forwarding_flag, 629 &cert_no_port_forwarding_flag,
625 &cert_no_agent_forwarding_flag, 630 &cert_no_agent_forwarding_flag,
626 &cert_no_x11_forwarding_flag, 631 &cert_no_x11_forwarding_flag,
diff --git a/auth-pam.c b/auth-pam.c
index d789bad7b..d94c8285b 100644
--- a/auth-pam.c
+++ b/auth-pam.c
@@ -738,7 +738,7 @@ sshpam_query(void *ctx, char **name, char **info,
738 case PAM_PROMPT_ECHO_OFF: 738 case PAM_PROMPT_ECHO_OFF:
739 *num = 1; 739 *num = 1;
740 len = plen + mlen + 1; 740 len = plen + mlen + 1;
741 **prompts = xrealloc(**prompts, 1, len); 741 **prompts = xreallocarray(**prompts, 1, len);
742 strlcpy(**prompts + plen, msg, len - plen); 742 strlcpy(**prompts + plen, msg, len - plen);
743 plen += mlen; 743 plen += mlen;
744 **echo_on = (type == PAM_PROMPT_ECHO_ON); 744 **echo_on = (type == PAM_PROMPT_ECHO_ON);
@@ -748,7 +748,7 @@ sshpam_query(void *ctx, char **name, char **info,
748 case PAM_TEXT_INFO: 748 case PAM_TEXT_INFO:
749 /* accumulate messages */ 749 /* accumulate messages */
750 len = plen + mlen + 2; 750 len = plen + mlen + 2;
751 **prompts = xrealloc(**prompts, 1, len); 751 **prompts = xreallocarray(**prompts, 1, len);
752 strlcpy(**prompts + plen, msg, len - plen); 752 strlcpy(**prompts + plen, msg, len - plen);
753 plen += mlen; 753 plen += mlen;
754 strlcat(**prompts + plen, "\n", len - plen); 754 strlcat(**prompts + plen, "\n", len - plen);
diff --git a/auth.c b/auth.c
index 41e387614..a99c4759b 100644
--- a/auth.c
+++ b/auth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.c,v 1.110 2015/02/25 17:29:38 djm Exp $ */ 1/* $OpenBSD: auth.c,v 1.111 2015/05/01 04:17:51 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -400,8 +400,7 @@ expand_authorized_keys(const char *filename, struct passwd *pw)
400char * 400char *
401authorized_principals_file(struct passwd *pw) 401authorized_principals_file(struct passwd *pw)
402{ 402{
403 if (options.authorized_principals_file == NULL || 403 if (options.authorized_principals_file == NULL)
404 strcasecmp(options.authorized_principals_file, "none") == 0)
405 return NULL; 404 return NULL;
406 return expand_authorized_keys(options.authorized_principals_file, pw); 405 return expand_authorized_keys(options.authorized_principals_file, pw);
407} 406}
diff --git a/auth.h b/auth.h
index 4985cd86c..3c2222f79 100644
--- a/auth.h
+++ b/auth.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth.h,v 1.82 2015/02/16 22:13:32 djm Exp $ */ 1/* $OpenBSD: auth.h,v 1.84 2015/05/08 06:41:56 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -56,7 +56,7 @@ struct Authctxt {
56 int valid; /* user exists and is allowed to login */ 56 int valid; /* user exists and is allowed to login */
57 int attempt; 57 int attempt;
58 int failures; 58 int failures;
59 int server_caused_failure; 59 int server_caused_failure;
60 int force_pwchange; 60 int force_pwchange;
61 char *user; /* username sent by the client */ 61 char *user; /* username sent by the client */
62 char *service; 62 char *service;
@@ -127,7 +127,7 @@ int auth_rsa_key_allowed(struct passwd *, BIGNUM *, Key **);
127 127
128int auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *); 128int auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *);
129int hostbased_key_allowed(struct passwd *, const char *, char *, Key *); 129int hostbased_key_allowed(struct passwd *, const char *, char *, Key *);
130int user_key_allowed(struct passwd *, Key *); 130int user_key_allowed(struct passwd *, Key *, int);
131void pubkey_auth_info(Authctxt *, const Key *, const char *, ...) 131void pubkey_auth_info(Authctxt *, const Key *, const char *, ...)
132 __attribute__((__format__ (printf, 3, 4))); 132 __attribute__((__format__ (printf, 3, 4)));
133void auth2_record_userkey(Authctxt *, struct sshkey *); 133void auth2_record_userkey(Authctxt *, struct sshkey *);
diff --git a/auth2-hostbased.c b/auth2-hostbased.c
index eebfe8fc3..e2327cf77 100644
--- a/auth2-hostbased.c
+++ b/auth2-hostbased.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-hostbased.c,v 1.24 2015/01/28 22:36:00 djm Exp $ */ 1/* $OpenBSD: auth2-hostbased.c,v 1.25 2015/05/04 06:10:48 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -109,8 +109,7 @@ userauth_hostbased(Authctxt *authctxt)
109 goto done; 109 goto done;
110 } 110 }
111 if (match_pattern_list(sshkey_ssh_name(key), 111 if (match_pattern_list(sshkey_ssh_name(key),
112 options.hostbased_key_types, 112 options.hostbased_key_types, 0) != 1) {
113 strlen(options.hostbased_key_types), 0) != 1) {
114 logit("%s: key type %s not in HostbasedAcceptedKeyTypes", 113 logit("%s: key type %s not in HostbasedAcceptedKeyTypes",
115 __func__, sshkey_type(key)); 114 __func__, sshkey_type(key));
116 goto done; 115 goto done;
diff --git a/auth2-pubkey.c b/auth2-pubkey.c
index 0bda5c9dd..1eee16168 100644
--- a/auth2-pubkey.c
+++ b/auth2-pubkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-pubkey.c,v 1.47 2015/02/17 00:14:05 djm Exp $ */ 1/* $OpenBSD: auth2-pubkey.c,v 1.53 2015/06/15 18:44:22 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -65,6 +65,9 @@
65#include "monitor_wrap.h" 65#include "monitor_wrap.h"
66#include "authfile.h" 66#include "authfile.h"
67#include "match.h" 67#include "match.h"
68#include "ssherr.h"
69#include "channels.h" /* XXX for session.h */
70#include "session.h" /* XXX for child_set_env(); refactor? */
68 71
69/* import */ 72/* import */
70extern ServerOptions options; 73extern ServerOptions options;
@@ -127,8 +130,8 @@ userauth_pubkey(Authctxt *authctxt)
127 logit("refusing previously-used %s key", key_type(key)); 130 logit("refusing previously-used %s key", key_type(key));
128 goto done; 131 goto done;
129 } 132 }
130 if (match_pattern_list(sshkey_ssh_name(key), options.pubkey_key_types, 133 if (match_pattern_list(sshkey_ssh_name(key),
131 strlen(options.pubkey_key_types), 0) != 1) { 134 options.pubkey_key_types, 0) != 1) {
132 logit("%s: key type %s not in PubkeyAcceptedKeyTypes", 135 logit("%s: key type %s not in PubkeyAcceptedKeyTypes",
133 __func__, sshkey_ssh_name(key)); 136 __func__, sshkey_ssh_name(key));
134 goto done; 137 goto done;
@@ -169,7 +172,7 @@ userauth_pubkey(Authctxt *authctxt)
169 172
170 /* test for correct signature */ 173 /* test for correct signature */
171 authenticated = 0; 174 authenticated = 0;
172 if (PRIVSEP(user_key_allowed(authctxt->pw, key)) && 175 if (PRIVSEP(user_key_allowed(authctxt->pw, key, 1)) &&
173 PRIVSEP(key_verify(key, sig, slen, buffer_ptr(&b), 176 PRIVSEP(key_verify(key, sig, slen, buffer_ptr(&b),
174 buffer_len(&b))) == 1) { 177 buffer_len(&b))) == 1) {
175 authenticated = 1; 178 authenticated = 1;
@@ -191,7 +194,7 @@ userauth_pubkey(Authctxt *authctxt)
191 * if a user is not allowed to login. is this an 194 * if a user is not allowed to login. is this an
192 * issue? -markus 195 * issue? -markus
193 */ 196 */
194 if (PRIVSEP(user_key_allowed(authctxt->pw, key))) { 197 if (PRIVSEP(user_key_allowed(authctxt->pw, key, 0))) {
195 packet_start(SSH2_MSG_USERAUTH_PK_OK); 198 packet_start(SSH2_MSG_USERAUTH_PK_OK);
196 packet_put_string(pkalg, alen); 199 packet_put_string(pkalg, alen);
197 packet_put_string(pkblob, blen); 200 packet_put_string(pkblob, blen);
@@ -248,6 +251,288 @@ pubkey_auth_info(Authctxt *authctxt, const Key *key, const char *fmt, ...)
248 free(extra); 251 free(extra);
249} 252}
250 253
254/*
255 * Splits 's' into an argument vector. Handles quoted string and basic
256 * escape characters (\\, \", \'). Caller must free the argument vector
257 * and its members.
258 */
259static int
260split_argv(const char *s, int *argcp, char ***argvp)
261{
262 int r = SSH_ERR_INTERNAL_ERROR;
263 int argc = 0, quote, i, j;
264 char *arg, **argv = xcalloc(1, sizeof(*argv));
265
266 *argvp = NULL;
267 *argcp = 0;
268
269 for (i = 0; s[i] != '\0'; i++) {
270 /* Skip leading whitespace */
271 if (s[i] == ' ' || s[i] == '\t')
272 continue;
273
274 /* Start of a token */
275 quote = 0;
276 if (s[i] == '\\' &&
277 (s[i + 1] == '\'' || s[i + 1] == '\"' || s[i + 1] == '\\'))
278 i++;
279 else if (s[i] == '\'' || s[i] == '"')
280 quote = s[i++];
281
282 argv = xreallocarray(argv, (argc + 2), sizeof(*argv));
283 arg = argv[argc++] = xcalloc(1, strlen(s + i) + 1);
284 argv[argc] = NULL;
285
286 /* Copy the token in, removing escapes */
287 for (j = 0; s[i] != '\0'; i++) {
288 if (s[i] == '\\') {
289 if (s[i + 1] == '\'' ||
290 s[i + 1] == '\"' ||
291 s[i + 1] == '\\') {
292 i++; /* Skip '\' */
293 arg[j++] = s[i];
294 } else {
295 /* Unrecognised escape */
296 arg[j++] = s[i];
297 }
298 } else if (quote == 0 && (s[i] == ' ' || s[i] == '\t'))
299 break; /* done */
300 else if (quote != 0 && s[i] == quote)
301 break; /* done */
302 else
303 arg[j++] = s[i];
304 }
305 if (s[i] == '\0') {
306 if (quote != 0) {
307 /* Ran out of string looking for close quote */
308 r = SSH_ERR_INVALID_FORMAT;
309 goto out;
310 }
311 break;
312 }
313 }
314 /* Success */
315 *argcp = argc;
316 *argvp = argv;
317 argc = 0;
318 argv = NULL;
319 r = 0;
320 out:
321 if (argc != 0 && argv != NULL) {
322 for (i = 0; i < argc; i++)
323 free(argv[i]);
324 free(argv);
325 }
326 return r;
327}
328
329/*
330 * Reassemble an argument vector into a string, quoting and escaping as
331 * necessary. Caller must free returned string.
332 */
333static char *
334assemble_argv(int argc, char **argv)
335{
336 int i, j, ws, r;
337 char c, *ret;
338 struct sshbuf *buf, *arg;
339
340 if ((buf = sshbuf_new()) == NULL || (arg = sshbuf_new()) == NULL)
341 fatal("%s: sshbuf_new failed", __func__);
342
343 for (i = 0; i < argc; i++) {
344 ws = 0;
345 sshbuf_reset(arg);
346 for (j = 0; argv[i][j] != '\0'; j++) {
347 r = 0;
348 c = argv[i][j];
349 switch (c) {
350 case ' ':
351 case '\t':
352 ws = 1;
353 r = sshbuf_put_u8(arg, c);
354 break;
355 case '\\':
356 case '\'':
357 case '"':
358 if ((r = sshbuf_put_u8(arg, '\\')) != 0)
359 break;
360 /* FALLTHROUGH */
361 default:
362 r = sshbuf_put_u8(arg, c);
363 break;
364 }
365 if (r != 0)
366 fatal("%s: sshbuf_put_u8: %s",
367 __func__, ssh_err(r));
368 }
369 if ((i != 0 && (r = sshbuf_put_u8(buf, ' ')) != 0) ||
370 (ws != 0 && (r = sshbuf_put_u8(buf, '"')) != 0) ||
371 (r = sshbuf_putb(buf, arg)) != 0 ||
372 (ws != 0 && (r = sshbuf_put_u8(buf, '"')) != 0))
373 fatal("%s: buffer error: %s", __func__, ssh_err(r));
374 }
375 if ((ret = malloc(sshbuf_len(buf) + 1)) == NULL)
376 fatal("%s: malloc failed", __func__);
377 memcpy(ret, sshbuf_ptr(buf), sshbuf_len(buf));
378 ret[sshbuf_len(buf)] = '\0';
379 sshbuf_free(buf);
380 sshbuf_free(arg);
381 return ret;
382}
383
384/*
385 * Runs command in a subprocess. Returns pid on success and a FILE* to the
386 * subprocess' stdout or 0 on failure.
387 * NB. "command" is only used for logging.
388 */
389static pid_t
390subprocess(const char *tag, struct passwd *pw, const char *command,
391 int ac, char **av, FILE **child)
392{
393 FILE *f;
394 struct stat st;
395 int devnull, p[2], i;
396 pid_t pid;
397 char *cp, errmsg[512];
398 u_int envsize;
399 char **child_env;
400
401 *child = NULL;
402
403 debug3("%s: %s command \"%s\" running as %s", __func__,
404 tag, command, pw->pw_name);
405
406 /* Verify the path exists and is safe-ish to execute */
407 if (*av[0] != '/') {
408 error("%s path is not absolute", tag);
409 return 0;
410 }
411 temporarily_use_uid(pw);
412 if (stat(av[0], &st) < 0) {
413 error("Could not stat %s \"%s\": %s", tag,
414 av[0], strerror(errno));
415 restore_uid();
416 return 0;
417 }
418 if (auth_secure_path(av[0], &st, NULL, 0,
419 errmsg, sizeof(errmsg)) != 0) {
420 error("Unsafe %s \"%s\": %s", tag, av[0], errmsg);
421 restore_uid();
422 return 0;
423 }
424
425 /*
426 * Run the command; stderr is left in place, stdout is the
427 * authorized_keys output.
428 */
429 if (pipe(p) != 0) {
430 error("%s: pipe: %s", tag, strerror(errno));
431 restore_uid();
432 return 0;
433 }
434
435 /*
436 * Don't want to call this in the child, where it can fatal() and
437 * run cleanup_exit() code.
438 */
439 restore_uid();
440
441 switch ((pid = fork())) {
442 case -1: /* error */
443 error("%s: fork: %s", tag, strerror(errno));
444 close(p[0]);
445 close(p[1]);
446 return 0;
447 case 0: /* child */
448 /* Prepare a minimal environment for the child. */
449 envsize = 5;
450 child_env = xcalloc(sizeof(*child_env), envsize);
451 child_set_env(&child_env, &envsize, "PATH", _PATH_STDPATH);
452 child_set_env(&child_env, &envsize, "USER", pw->pw_name);
453 child_set_env(&child_env, &envsize, "LOGNAME", pw->pw_name);
454 child_set_env(&child_env, &envsize, "HOME", pw->pw_dir);
455 if ((cp = getenv("LANG")) != NULL)
456 child_set_env(&child_env, &envsize, "LANG", cp);
457
458 for (i = 0; i < NSIG; i++)
459 signal(i, SIG_DFL);
460
461 if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) {
462 error("%s: open %s: %s", tag, _PATH_DEVNULL,
463 strerror(errno));
464 _exit(1);
465 }
466 /* Keep stderr around a while longer to catch errors */
467 if (dup2(devnull, STDIN_FILENO) == -1 ||
468 dup2(p[1], STDOUT_FILENO) == -1) {
469 error("%s: dup2: %s", tag, strerror(errno));
470 _exit(1);
471 }
472 closefrom(STDERR_FILENO + 1);
473
474 /* Don't use permanently_set_uid() here to avoid fatal() */
475 if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0) {
476 error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid,
477 strerror(errno));
478 _exit(1);
479 }
480 if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0) {
481 error("%s: setresuid %u: %s", tag, (u_int)pw->pw_uid,
482 strerror(errno));
483 _exit(1);
484 }
485 /* stdin is pointed to /dev/null at this point */
486 if (dup2(STDIN_FILENO, STDERR_FILENO) == -1) {
487 error("%s: dup2: %s", tag, strerror(errno));
488 _exit(1);
489 }
490
491 execve(av[0], av, child_env);
492 error("%s exec \"%s\": %s", tag, command, strerror(errno));
493 _exit(127);
494 default: /* parent */
495 break;
496 }
497
498 close(p[1]);
499 if ((f = fdopen(p[0], "r")) == NULL) {
500 error("%s: fdopen: %s", tag, strerror(errno));
501 close(p[0]);
502 /* Don't leave zombie child */
503 kill(pid, SIGTERM);
504 while (waitpid(pid, NULL, 0) == -1 && errno == EINTR)
505 ;
506 return 0;
507 }
508 /* Success */
509 debug3("%s: %s pid %ld", __func__, tag, (long)pid);
510 *child = f;
511 return pid;
512}
513
514/* Returns 0 if pid exited cleanly, non-zero otherwise */
515static int
516exited_cleanly(pid_t pid, const char *tag, const char *cmd)
517{
518 int status;
519
520 while (waitpid(pid, &status, 0) == -1) {
521 if (errno != EINTR) {
522 error("%s: waitpid: %s", tag, strerror(errno));
523 return -1;
524 }
525 }
526 if (WIFSIGNALED(status)) {
527 error("%s %s exited on signal %d", tag, cmd, WTERMSIG(status));
528 return -1;
529 } else if (WEXITSTATUS(status) != 0) {
530 error("%s %s failed, status %d", tag, cmd, WEXITSTATUS(status));
531 return -1;
532 }
533 return 0;
534}
535
251static int 536static int
252match_principals_option(const char *principal_list, struct sshkey_cert *cert) 537match_principals_option(const char *principal_list, struct sshkey_cert *cert)
253{ 538{
@@ -269,19 +554,13 @@ match_principals_option(const char *principal_list, struct sshkey_cert *cert)
269} 554}
270 555
271static int 556static int
272match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert) 557process_principals(FILE *f, char *file, struct passwd *pw,
558 struct sshkey_cert *cert)
273{ 559{
274 FILE *f;
275 char line[SSH_MAX_PUBKEY_BYTES], *cp, *ep, *line_opts; 560 char line[SSH_MAX_PUBKEY_BYTES], *cp, *ep, *line_opts;
276 u_long linenum = 0; 561 u_long linenum = 0;
277 u_int i; 562 u_int i;
278 563
279 temporarily_use_uid(pw);
280 debug("trying authorized principals file %s", file);
281 if ((f = auth_openprincipals(file, pw, options.strict_modes)) == NULL) {
282 restore_uid();
283 return 0;
284 }
285 auth_start_parse_options(); 564 auth_start_parse_options();
286 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 565 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
287 /* Skip leading whitespace. */ 566 /* Skip leading whitespace. */
@@ -310,24 +589,128 @@ match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert)
310 } 589 }
311 for (i = 0; i < cert->nprincipals; i++) { 590 for (i = 0; i < cert->nprincipals; i++) {
312 if (strcmp(cp, cert->principals[i]) == 0) { 591 if (strcmp(cp, cert->principals[i]) == 0) {
313 debug3("matched principal \"%.100s\" " 592 debug3("%s:%lu: matched principal \"%.100s\"",
314 "from file \"%s\" on line %lu", 593 file == NULL ? "(command)" : file,
315 cert->principals[i], file, linenum); 594 linenum, cert->principals[i]);
316 if (auth_parse_options(pw, line_opts, 595 if (auth_parse_options(pw, line_opts,
317 file, linenum) != 1) 596 file, linenum) != 1)
318 continue; 597 continue;
319 fclose(f);
320 restore_uid();
321 return 1; 598 return 1;
322 } 599 }
323 } 600 }
324 } 601 }
602 return 0;
603}
604
605static int
606match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert)
607{
608 FILE *f;
609 int success;
610
611 temporarily_use_uid(pw);
612 debug("trying authorized principals file %s", file);
613 if ((f = auth_openprincipals(file, pw, options.strict_modes)) == NULL) {
614 restore_uid();
615 return 0;
616 }
617 success = process_principals(f, file, pw, cert);
325 fclose(f); 618 fclose(f);
326 restore_uid(); 619 restore_uid();
327 return 0; 620 return success;
328} 621}
329 622
330/* 623/*
624 * Checks whether principal is allowed in output of command.
625 * returns 1 if the principal is allowed or 0 otherwise.
626 */
627static int
628match_principals_command(struct passwd *user_pw, struct sshkey_cert *cert)
629{
630 FILE *f = NULL;
631 int ok, found_principal = 0;
632 struct passwd *pw;
633 int i, ac = 0, uid_swapped = 0;
634 pid_t pid;
635 char *tmp, *username = NULL, *command = NULL, **av = NULL;
636 void (*osigchld)(int);
637
638 if (options.authorized_principals_command == NULL)
639 return 0;
640 if (options.authorized_principals_command_user == NULL) {
641 error("No user for AuthorizedPrincipalsCommand specified, "
642 "skipping");
643 return 0;
644 }
645
646 /*
647 * NB. all returns later this function should go via "out" to
648 * ensure the original SIGCHLD handler is restored properly.
649 */
650 osigchld = signal(SIGCHLD, SIG_DFL);
651
652 /* Prepare and verify the user for the command */
653 username = percent_expand(options.authorized_principals_command_user,
654 "u", user_pw->pw_name, (char *)NULL);
655 pw = getpwnam(username);
656 if (pw == NULL) {
657 error("AuthorizedPrincipalsCommandUser \"%s\" not found: %s",
658 username, strerror(errno));
659 goto out;
660 }
661
662 /* Turn the command into an argument vector */
663 if (split_argv(options.authorized_principals_command, &ac, &av) != 0) {
664 error("AuthorizedPrincipalsCommand \"%s\" contains "
665 "invalid quotes", command);
666 goto out;
667 }
668 if (ac == 0) {
669 error("AuthorizedPrincipalsCommand \"%s\" yielded no arguments",
670 command);
671 goto out;
672 }
673 for (i = 1; i < ac; i++) {
674 tmp = percent_expand(av[i],
675 "u", user_pw->pw_name,
676 "h", user_pw->pw_dir,
677 (char *)NULL);
678 if (tmp == NULL)
679 fatal("%s: percent_expand failed", __func__);
680 free(av[i]);
681 av[i] = tmp;
682 }
683 /* Prepare a printable command for logs, etc. */
684 command = assemble_argv(ac, av);
685
686 if ((pid = subprocess("AuthorizedPrincipalsCommand", pw, command,
687 ac, av, &f)) == 0)
688 goto out;
689
690 uid_swapped = 1;
691 temporarily_use_uid(pw);
692
693 ok = process_principals(f, NULL, pw, cert);
694
695 if (exited_cleanly(pid, "AuthorizedPrincipalsCommand", command) != 0)
696 goto out;
697
698 /* Read completed successfully */
699 found_principal = ok;
700 out:
701 if (f != NULL)
702 fclose(f);
703 signal(SIGCHLD, osigchld);
704 for (i = 0; i < ac; i++)
705 free(av[i]);
706 free(av);
707 if (uid_swapped)
708 restore_uid();
709 free(command);
710 free(username);
711 return found_principal;
712}
713/*
331 * Checks whether key is allowed in authorized_keys-format file, 714 * Checks whether key is allowed in authorized_keys-format file,
332 * returns 1 if the key is allowed or 0 otherwise. 715 * returns 1 if the key is allowed or 0 otherwise.
333 */ 716 */
@@ -450,7 +833,7 @@ user_cert_trusted_ca(struct passwd *pw, Key *key)
450{ 833{
451 char *ca_fp, *principals_file = NULL; 834 char *ca_fp, *principals_file = NULL;
452 const char *reason; 835 const char *reason;
453 int ret = 0; 836 int ret = 0, found_principal = 0, use_authorized_principals;
454 837
455 if (!key_is_cert(key) || options.trusted_user_ca_keys == NULL) 838 if (!key_is_cert(key) || options.trusted_user_ca_keys == NULL)
456 return 0; 839 return 0;
@@ -472,17 +855,24 @@ user_cert_trusted_ca(struct passwd *pw, Key *key)
472 * against the username. 855 * against the username.
473 */ 856 */
474 if ((principals_file = authorized_principals_file(pw)) != NULL) { 857 if ((principals_file = authorized_principals_file(pw)) != NULL) {
475 if (!match_principals_file(principals_file, pw, key->cert)) { 858 if (match_principals_file(principals_file, pw, key->cert))
476 reason = "Certificate does not contain an " 859 found_principal = 1;
477 "authorized principal"; 860 }
861 /* Try querying command if specified */
862 if (!found_principal && match_principals_command(pw, key->cert))
863 found_principal = 1;
864 /* If principals file or command is specified, then require a match */
865 use_authorized_principals = principals_file != NULL ||
866 options.authorized_principals_command != NULL;
867 if (!found_principal && use_authorized_principals) {
868 reason = "Certificate does not contain an authorized principal";
478 fail_reason: 869 fail_reason:
479 error("%s", reason); 870 error("%s", reason);
480 auth_debug_add("%s", reason); 871 auth_debug_add("%s", reason);
481 goto out; 872 goto out;
482 }
483 } 873 }
484 if (key_cert_check_authority(key, 0, 1, 874 if (key_cert_check_authority(key, 0, 1,
485 principals_file == NULL ? pw->pw_name : NULL, &reason) != 0) 875 use_authorized_principals ? NULL : pw->pw_name, &reason) != 0)
486 goto fail_reason; 876 goto fail_reason;
487 auth_start_parse_options(); 877 auth_start_parse_options();
488 if (auth_cert_options(key, pw) != 0) 878 if (auth_cert_options(key, pw) != 0)
@@ -529,144 +919,117 @@ user_key_allowed2(struct passwd *pw, Key *key, char *file)
529static int 919static int
530user_key_command_allowed2(struct passwd *user_pw, Key *key) 920user_key_command_allowed2(struct passwd *user_pw, Key *key)
531{ 921{
532 FILE *f; 922 FILE *f = NULL;
533 int ok, found_key = 0; 923 int r, ok, found_key = 0;
534 struct passwd *pw; 924 struct passwd *pw;
535 struct stat st; 925 int i, uid_swapped = 0, ac = 0;
536 int status, devnull, p[2], i;
537 pid_t pid; 926 pid_t pid;
538 char *username, errmsg[512]; 927 char *username = NULL, *key_fp = NULL, *keytext = NULL;
928 char *tmp, *command = NULL, **av = NULL;
929 void (*osigchld)(int);
539 930
540 if (options.authorized_keys_command == NULL || 931 if (options.authorized_keys_command == NULL)
541 options.authorized_keys_command[0] != '/')
542 return 0; 932 return 0;
543
544 if (options.authorized_keys_command_user == NULL) { 933 if (options.authorized_keys_command_user == NULL) {
545 error("No user for AuthorizedKeysCommand specified, skipping"); 934 error("No user for AuthorizedKeysCommand specified, skipping");
546 return 0; 935 return 0;
547 } 936 }
548 937
938 /*
939 * NB. all returns later this function should go via "out" to
940 * ensure the original SIGCHLD handler is restored properly.
941 */
942 osigchld = signal(SIGCHLD, SIG_DFL);
943
944 /* Prepare and verify the user for the command */
549 username = percent_expand(options.authorized_keys_command_user, 945 username = percent_expand(options.authorized_keys_command_user,
550 "u", user_pw->pw_name, (char *)NULL); 946 "u", user_pw->pw_name, (char *)NULL);
551 pw = getpwnam(username); 947 pw = getpwnam(username);
552 if (pw == NULL) { 948 if (pw == NULL) {
553 error("AuthorizedKeysCommandUser \"%s\" not found: %s", 949 error("AuthorizedKeysCommandUser \"%s\" not found: %s",
554 username, strerror(errno)); 950 username, strerror(errno));
555 free(username); 951 goto out;
556 return 0;
557 } 952 }
558 free(username);
559
560 temporarily_use_uid(pw);
561 953
562 if (stat(options.authorized_keys_command, &st) < 0) { 954 /* Prepare AuthorizedKeysCommand */
563 error("Could not stat AuthorizedKeysCommand \"%s\": %s", 955 if ((key_fp = sshkey_fingerprint(key, options.fingerprint_hash,
564 options.authorized_keys_command, strerror(errno)); 956 SSH_FP_DEFAULT)) == NULL) {
957 error("%s: sshkey_fingerprint failed", __func__);
565 goto out; 958 goto out;
566 } 959 }
567 if (auth_secure_path(options.authorized_keys_command, &st, NULL, 0, 960 if ((r = sshkey_to_base64(key, &keytext)) != 0) {
568 errmsg, sizeof(errmsg)) != 0) { 961 error("%s: sshkey_to_base64 failed: %s", __func__, ssh_err(r));
569 error("Unsafe AuthorizedKeysCommand: %s", errmsg);
570 goto out; 962 goto out;
571 } 963 }
572 964
573 if (pipe(p) != 0) { 965 /* Turn the command into an argument vector */
574 error("%s: pipe: %s", __func__, strerror(errno)); 966 if (split_argv(options.authorized_keys_command, &ac, &av) != 0) {
967 error("AuthorizedKeysCommand \"%s\" contains invalid quotes",
968 command);
575 goto out; 969 goto out;
576 } 970 }
577 971 if (ac == 0) {
578 debug3("Running AuthorizedKeysCommand: \"%s %s\" as \"%s\"", 972 error("AuthorizedKeysCommand \"%s\" yielded no arguments",
579 options.authorized_keys_command, user_pw->pw_name, pw->pw_name); 973 command);
974 goto out;
975 }
976 for (i = 1; i < ac; i++) {
977 tmp = percent_expand(av[i],
978 "u", user_pw->pw_name,
979 "h", user_pw->pw_dir,
980 "t", sshkey_ssh_name(key),
981 "f", key_fp,
982 "k", keytext,
983 (char *)NULL);
984 if (tmp == NULL)
985 fatal("%s: percent_expand failed", __func__);
986 free(av[i]);
987 av[i] = tmp;
988 }
989 /* Prepare a printable command for logs, etc. */
990 command = assemble_argv(ac, av);
580 991
581 /* 992 /*
582 * Don't want to call this in the child, where it can fatal() and 993 * If AuthorizedKeysCommand was run without arguments
583 * run cleanup_exit() code. 994 * then fall back to the old behaviour of passing the
995 * target username as a single argument.
584 */ 996 */
585 restore_uid(); 997 if (ac == 1) {
586 998 av = xreallocarray(av, ac + 2, sizeof(*av));
587 switch ((pid = fork())) { 999 av[1] = xstrdup(user_pw->pw_name);
588 case -1: /* error */ 1000 av[2] = NULL;
589 error("%s: fork: %s", __func__, strerror(errno)); 1001 /* Fix up command too, since it is used in log messages */
590 close(p[0]); 1002 free(command);
591 close(p[1]); 1003 xasprintf(&command, "%s %s", av[0], av[1]);
592 return 0;
593 case 0: /* child */
594 for (i = 0; i < NSIG; i++)
595 signal(i, SIG_DFL);
596
597 if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) {
598 error("%s: open %s: %s", __func__, _PATH_DEVNULL,
599 strerror(errno));
600 _exit(1);
601 }
602 /* Keep stderr around a while longer to catch errors */
603 if (dup2(devnull, STDIN_FILENO) == -1 ||
604 dup2(p[1], STDOUT_FILENO) == -1) {
605 error("%s: dup2: %s", __func__, strerror(errno));
606 _exit(1);
607 }
608 closefrom(STDERR_FILENO + 1);
609
610 /* Don't use permanently_set_uid() here to avoid fatal() */
611 if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0) {
612 error("setresgid %u: %s", (u_int)pw->pw_gid,
613 strerror(errno));
614 _exit(1);
615 }
616 if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0) {
617 error("setresuid %u: %s", (u_int)pw->pw_uid,
618 strerror(errno));
619 _exit(1);
620 }
621 /* stdin is pointed to /dev/null at this point */
622 if (dup2(STDIN_FILENO, STDERR_FILENO) == -1) {
623 error("%s: dup2: %s", __func__, strerror(errno));
624 _exit(1);
625 }
626
627 execl(options.authorized_keys_command,
628 options.authorized_keys_command, user_pw->pw_name, NULL);
629
630 error("AuthorizedKeysCommand %s exec failed: %s",
631 options.authorized_keys_command, strerror(errno));
632 _exit(127);
633 default: /* parent */
634 break;
635 } 1004 }
636 1005
1006 if ((pid = subprocess("AuthorizedKeysCommand", pw, command,
1007 ac, av, &f)) == 0)
1008 goto out;
1009
1010 uid_swapped = 1;
637 temporarily_use_uid(pw); 1011 temporarily_use_uid(pw);
638 1012
639 close(p[1]);
640 if ((f = fdopen(p[0], "r")) == NULL) {
641 error("%s: fdopen: %s", __func__, strerror(errno));
642 close(p[0]);
643 /* Don't leave zombie child */
644 kill(pid, SIGTERM);
645 while (waitpid(pid, NULL, 0) == -1 && errno == EINTR)
646 ;
647 goto out;
648 }
649 ok = check_authkeys_file(f, options.authorized_keys_command, key, pw); 1013 ok = check_authkeys_file(f, options.authorized_keys_command, key, pw);
650 fclose(f);
651 1014
652 while (waitpid(pid, &status, 0) == -1) { 1015 if (exited_cleanly(pid, "AuthorizedKeysCommand", command) != 0)
653 if (errno != EINTR) {
654 error("%s: waitpid: %s", __func__, strerror(errno));
655 goto out;
656 }
657 }
658 if (WIFSIGNALED(status)) {
659 error("AuthorizedKeysCommand %s exited on signal %d",
660 options.authorized_keys_command, WTERMSIG(status));
661 goto out; 1016 goto out;
662 } else if (WEXITSTATUS(status) != 0) { 1017
663 error("AuthorizedKeysCommand %s returned status %d", 1018 /* Read completed successfully */
664 options.authorized_keys_command, WEXITSTATUS(status));
665 goto out;
666 }
667 found_key = ok; 1019 found_key = ok;
668 out: 1020 out:
669 restore_uid(); 1021 if (f != NULL)
1022 fclose(f);
1023 signal(SIGCHLD, osigchld);
1024 for (i = 0; i < ac; i++)
1025 free(av[i]);
1026 free(av);
1027 if (uid_swapped)
1028 restore_uid();
1029 free(command);
1030 free(username);
1031 free(key_fp);
1032 free(keytext);
670 return found_key; 1033 return found_key;
671} 1034}
672 1035
@@ -674,7 +1037,7 @@ user_key_command_allowed2(struct passwd *user_pw, Key *key)
674 * Check whether key authenticates and authorises the user. 1037 * Check whether key authenticates and authorises the user.
675 */ 1038 */
676int 1039int
677user_key_allowed(struct passwd *pw, Key *key) 1040user_key_allowed(struct passwd *pw, Key *key, int auth_attempt)
678{ 1041{
679 u_int success, i; 1042 u_int success, i;
680 char *file; 1043 char *file;
diff --git a/authfd.c b/authfd.c
index 5d9414faf..82915a43d 100644
--- a/authfd.c
+++ b/authfd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfd.c,v 1.94 2015/01/14 20:05:27 djm Exp $ */ 1/* $OpenBSD: authfd.c,v 1.97 2015/03/26 19:32:19 markus Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -438,10 +438,8 @@ ssh_agent_sign(int sock, struct sshkey *key,
438 u_int flags = 0; 438 u_int flags = 0;
439 int r = SSH_ERR_INTERNAL_ERROR; 439 int r = SSH_ERR_INTERNAL_ERROR;
440 440
441 if (sigp != NULL) 441 *sigp = NULL;
442 *sigp = NULL; 442 *lenp = 0;
443 if (lenp != NULL)
444 *lenp = 0;
445 443
446 if (datalen > SSH_KEY_MAX_SIGN_DATA_SIZE) 444 if (datalen > SSH_KEY_MAX_SIGN_DATA_SIZE)
447 return SSH_ERR_INVALID_ARGUMENT; 445 return SSH_ERR_INVALID_ARGUMENT;
diff --git a/authfile.c b/authfile.c
index 3a81786c7..728b136a7 100644
--- a/authfile.c
+++ b/authfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: authfile.c,v 1.111 2015/02/23 16:55:51 djm Exp $ */ 1/* $OpenBSD: authfile.c,v 1.114 2015/04/17 13:32:09 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved.
4 * 4 *
@@ -186,7 +186,7 @@ sshkey_perm_ok(int fd, const char *filename)
186 error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"); 186 error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
187 error("Permissions 0%3.3o for '%s' are too open.", 187 error("Permissions 0%3.3o for '%s' are too open.",
188 (u_int)st.st_mode & 0777, filename); 188 (u_int)st.st_mode & 0777, filename);
189 error("It is recommended that your private key files are NOT accessible by others."); 189 error("It is required that your private key files are NOT accessible by others.");
190 error("This private key will be ignored."); 190 error("This private key will be ignored.");
191 return SSH_ERR_KEY_BAD_PERMISSIONS; 191 return SSH_ERR_KEY_BAD_PERMISSIONS;
192 } 192 }
@@ -359,6 +359,8 @@ sshkey_load_public(const char *filename, struct sshkey **keyp, char **commentp)
359 case 0: 359 case 0:
360 return r; 360 return r;
361 } 361 }
362#else /* WITH_SSH1 */
363 close(fd);
362#endif /* WITH_SSH1 */ 364#endif /* WITH_SSH1 */
363 365
364 /* try ssh2 public key */ 366 /* try ssh2 public key */
diff --git a/channels.c b/channels.c
index 9486c1cff..a84b487e5 100644
--- a/channels.c
+++ b/channels.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.c,v 1.341 2015/02/06 23:21:59 millert Exp $ */ 1/* $OpenBSD: channels.c,v 1.347 2015/07/01 02:26:31 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -161,6 +161,9 @@ static char *x11_saved_proto = NULL;
161static char *x11_saved_data = NULL; 161static char *x11_saved_data = NULL;
162static u_int x11_saved_data_len = 0; 162static u_int x11_saved_data_len = 0;
163 163
164/* Deadline after which all X11 connections are refused */
165static u_int x11_refuse_time;
166
164/* 167/*
165 * Fake X11 authentication data. This is what the server will be sending us; 168 * Fake X11 authentication data. This is what the server will be sending us;
166 * we should replace any occurrences of this by the real data. 169 * we should replace any occurrences of this by the real data.
@@ -306,7 +309,7 @@ channel_new(char *ctype, int type, int rfd, int wfd, int efd,
306 if (channels_alloc > 10000) 309 if (channels_alloc > 10000)
307 fatal("channel_new: internal error: channels_alloc %d " 310 fatal("channel_new: internal error: channels_alloc %d "
308 "too big.", channels_alloc); 311 "too big.", channels_alloc);
309 channels = xrealloc(channels, channels_alloc + 10, 312 channels = xreallocarray(channels, channels_alloc + 10,
310 sizeof(Channel *)); 313 sizeof(Channel *));
311 channels_alloc += 10; 314 channels_alloc += 10;
312 debug2("channel: expanding %d", channels_alloc); 315 debug2("channel: expanding %d", channels_alloc);
@@ -912,6 +915,13 @@ x11_open_helper(Buffer *b)
912 u_char *ucp; 915 u_char *ucp;
913 u_int proto_len, data_len; 916 u_int proto_len, data_len;
914 917
918 /* Is this being called after the refusal deadline? */
919 if (x11_refuse_time != 0 && (u_int)monotime() >= x11_refuse_time) {
920 verbose("Rejected X11 connection after ForwardX11Timeout "
921 "expired");
922 return -1;
923 }
924
915 /* Check if the fixed size part of the packet is in buffer. */ 925 /* Check if the fixed size part of the packet is in buffer. */
916 if (buffer_len(b) < 12) 926 if (buffer_len(b) < 12)
917 return 0; 927 return 0;
@@ -1483,6 +1493,12 @@ channel_set_reuseaddr(int fd)
1483 error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); 1493 error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno));
1484} 1494}
1485 1495
1496void
1497channel_set_x11_refuse_time(u_int refuse_time)
1498{
1499 x11_refuse_time = refuse_time;
1500}
1501
1486/* 1502/*
1487 * This socket is listening for connections to a forwarded TCP/IP port. 1503 * This socket is listening for connections to a forwarded TCP/IP port.
1488 */ 1504 */
@@ -2192,8 +2208,8 @@ channel_prepare_select(fd_set **readsetp, fd_set **writesetp, int *maxfdp,
2192 2208
2193 /* perhaps check sz < nalloc/2 and shrink? */ 2209 /* perhaps check sz < nalloc/2 and shrink? */
2194 if (*readsetp == NULL || sz > *nallocp) { 2210 if (*readsetp == NULL || sz > *nallocp) {
2195 *readsetp = xrealloc(*readsetp, nfdset, sizeof(fd_mask)); 2211 *readsetp = xreallocarray(*readsetp, nfdset, sizeof(fd_mask));
2196 *writesetp = xrealloc(*writesetp, nfdset, sizeof(fd_mask)); 2212 *writesetp = xreallocarray(*writesetp, nfdset, sizeof(fd_mask));
2197 *nallocp = sz; 2213 *nallocp = sz;
2198 } 2214 }
2199 *maxfdp = n; 2215 *maxfdp = n;
@@ -2270,7 +2286,7 @@ channel_output_poll(void)
2270 packet_put_int(c->remote_id); 2286 packet_put_int(c->remote_id);
2271 packet_put_string(data, dlen); 2287 packet_put_string(data, dlen);
2272 packet_send(); 2288 packet_send();
2273 c->remote_window -= dlen + 4; 2289 c->remote_window -= dlen;
2274 free(data); 2290 free(data);
2275 } 2291 }
2276 continue; 2292 continue;
@@ -2641,7 +2657,7 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
2641{ 2657{
2642 Channel *c; 2658 Channel *c;
2643 int id; 2659 int id;
2644 u_int adjust; 2660 u_int adjust, tmp;
2645 2661
2646 if (!compat20) 2662 if (!compat20)
2647 return 0; 2663 return 0;
@@ -2657,7 +2673,10 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
2657 adjust = packet_get_int(); 2673 adjust = packet_get_int();
2658 packet_check_eom(); 2674 packet_check_eom();
2659 debug2("channel %d: rcvd adjust %u", id, adjust); 2675 debug2("channel %d: rcvd adjust %u", id, adjust);
2660 c->remote_window += adjust; 2676 if ((tmp = c->remote_window + adjust) < c->remote_window)
2677 fatal("channel %d: adjust %u overflows remote window %u",
2678 id, adjust, c->remote_window);
2679 c->remote_window = tmp;
2661 return 0; 2680 return 0;
2662} 2681}
2663 2682
@@ -2805,17 +2824,21 @@ channel_setup_fwd_listener_tcpip(int type, struct Forward *fwd,
2805 char ntop[NI_MAXHOST], strport[NI_MAXSERV]; 2824 char ntop[NI_MAXHOST], strport[NI_MAXSERV];
2806 in_port_t *lport_p; 2825 in_port_t *lport_p;
2807 2826
2808 host = (type == SSH_CHANNEL_RPORT_LISTENER) ?
2809 fwd->listen_host : fwd->connect_host;
2810 is_client = (type == SSH_CHANNEL_PORT_LISTENER); 2827 is_client = (type == SSH_CHANNEL_PORT_LISTENER);
2811 2828
2812 if (host == NULL) { 2829 if (is_client && fwd->connect_path != NULL) {
2813 error("No forward host name."); 2830 host = fwd->connect_path;
2814 return 0; 2831 } else {
2815 } 2832 host = (type == SSH_CHANNEL_RPORT_LISTENER) ?
2816 if (strlen(host) >= NI_MAXHOST) { 2833 fwd->listen_host : fwd->connect_host;
2817 error("Forward host name too long."); 2834 if (host == NULL) {
2818 return 0; 2835 error("No forward host name.");
2836 return 0;
2837 }
2838 if (strlen(host) >= NI_MAXHOST) {
2839 error("Forward host name too long.");
2840 return 0;
2841 }
2819 } 2842 }
2820 2843
2821 /* Determine the bind address, cf. channel_fwd_bind_addr() comment */ 2844 /* Determine the bind address, cf. channel_fwd_bind_addr() comment */
@@ -3237,7 +3260,7 @@ channel_request_remote_forwarding(struct Forward *fwd)
3237 } 3260 }
3238 if (success) { 3261 if (success) {
3239 /* Record that connection to this host/port is permitted. */ 3262 /* Record that connection to this host/port is permitted. */
3240 permitted_opens = xrealloc(permitted_opens, 3263 permitted_opens = xreallocarray(permitted_opens,
3241 num_permitted_opens + 1, sizeof(*permitted_opens)); 3264 num_permitted_opens + 1, sizeof(*permitted_opens));
3242 idx = num_permitted_opens++; 3265 idx = num_permitted_opens++;
3243 if (fwd->connect_path != NULL) { 3266 if (fwd->connect_path != NULL) {
@@ -3468,7 +3491,7 @@ channel_add_permitted_opens(char *host, int port)
3468{ 3491{
3469 debug("allow port forwarding to host %s port %d", host, port); 3492 debug("allow port forwarding to host %s port %d", host, port);
3470 3493
3471 permitted_opens = xrealloc(permitted_opens, 3494 permitted_opens = xreallocarray(permitted_opens,
3472 num_permitted_opens + 1, sizeof(*permitted_opens)); 3495 num_permitted_opens + 1, sizeof(*permitted_opens));
3473 permitted_opens[num_permitted_opens].host_to_connect = xstrdup(host); 3496 permitted_opens[num_permitted_opens].host_to_connect = xstrdup(host);
3474 permitted_opens[num_permitted_opens].port_to_connect = port; 3497 permitted_opens[num_permitted_opens].port_to_connect = port;
@@ -3518,7 +3541,7 @@ channel_add_adm_permitted_opens(char *host, int port)
3518{ 3541{
3519 debug("config allows port forwarding to host %s port %d", host, port); 3542 debug("config allows port forwarding to host %s port %d", host, port);
3520 3543
3521 permitted_adm_opens = xrealloc(permitted_adm_opens, 3544 permitted_adm_opens = xreallocarray(permitted_adm_opens,
3522 num_adm_permitted_opens + 1, sizeof(*permitted_adm_opens)); 3545 num_adm_permitted_opens + 1, sizeof(*permitted_adm_opens));
3523 permitted_adm_opens[num_adm_permitted_opens].host_to_connect 3546 permitted_adm_opens[num_adm_permitted_opens].host_to_connect
3524 = xstrdup(host); 3547 = xstrdup(host);
@@ -3533,7 +3556,7 @@ void
3533channel_disable_adm_local_opens(void) 3556channel_disable_adm_local_opens(void)
3534{ 3557{
3535 channel_clear_adm_permitted_opens(); 3558 channel_clear_adm_permitted_opens();
3536 permitted_adm_opens = xmalloc(sizeof(*permitted_adm_opens)); 3559 permitted_adm_opens = xcalloc(sizeof(*permitted_adm_opens), 1);
3537 permitted_adm_opens[num_adm_permitted_opens].host_to_connect = NULL; 3560 permitted_adm_opens[num_adm_permitted_opens].host_to_connect = NULL;
3538 num_adm_permitted_opens = 1; 3561 num_adm_permitted_opens = 1;
3539} 3562}
diff --git a/channels.h b/channels.h
index 5a672f22e..9d76c9d2a 100644
--- a/channels.h
+++ b/channels.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: channels.h,v 1.116 2015/01/19 20:07:45 markus Exp $ */ 1/* $OpenBSD: channels.h,v 1.118 2015/07/01 02:26:31 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -113,7 +113,7 @@ struct Channel {
113 time_t notbefore; /* Pause IO until deadline (time_t) */ 113 time_t notbefore; /* Pause IO until deadline (time_t) */
114 int delayed; /* post-select handlers for newly created 114 int delayed; /* post-select handlers for newly created
115 * channels are delayed until the first call 115 * channels are delayed until the first call
116 * to a matching pre-select handler. 116 * to a matching pre-select handler.
117 * this way post-select handlers are not 117 * this way post-select handlers are not
118 * accidentally called if a FD gets reused */ 118 * accidentally called if a FD gets reused */
119 Buffer input; /* data read from socket, to be sent over 119 Buffer input; /* data read from socket, to be sent over
@@ -284,6 +284,7 @@ int permitopen_port(const char *);
284 284
285/* x11 forwarding */ 285/* x11 forwarding */
286 286
287void channel_set_x11_refuse_time(u_int);
287int x11_connect_display(void); 288int x11_connect_display(void);
288int x11_create_display_inet(int, int, int, u_int *, int **); 289int x11_create_display_inet(int, int, int, u_int *, int **);
289int x11_input_open(int, u_int32_t, void *); 290int x11_input_open(int, u_int32_t, void *);
diff --git a/clientloop.c b/clientloop.c
index 45cef8829..65f90b8b4 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: clientloop.c,v 1.272 2015/02/25 19:54:02 djm Exp $ */ 1/* $OpenBSD: clientloop.c,v 1.274 2015/07/01 02:26:31 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -167,7 +167,7 @@ static int connection_in; /* Connection to server (input). */
167static int connection_out; /* Connection to server (output). */ 167static int connection_out; /* Connection to server (output). */
168static int need_rekeying; /* Set to non-zero if rekeying is requested. */ 168static int need_rekeying; /* Set to non-zero if rekeying is requested. */
169static int session_closed; /* In SSH2: login session closed. */ 169static int session_closed; /* In SSH2: login session closed. */
170static int x11_refuse_time; /* If >0, refuse x11 opens after this time. */ 170static u_int x11_refuse_time; /* If >0, refuse x11 opens after this time. */
171 171
172static void client_init_dispatch(void); 172static void client_init_dispatch(void);
173int session_ident = -1; 173int session_ident = -1;
@@ -302,7 +302,8 @@ client_x11_display_valid(const char *display)
302 return 1; 302 return 1;
303} 303}
304 304
305#define SSH_X11_PROTO "MIT-MAGIC-COOKIE-1" 305#define SSH_X11_PROTO "MIT-MAGIC-COOKIE-1"
306#define X11_TIMEOUT_SLACK 60
306void 307void
307client_x11_get_proto(const char *display, const char *xauth_path, 308client_x11_get_proto(const char *display, const char *xauth_path,
308 u_int trusted, u_int timeout, char **_proto, char **_data) 309 u_int trusted, u_int timeout, char **_proto, char **_data)
@@ -315,7 +316,7 @@ client_x11_get_proto(const char *display, const char *xauth_path,
315 int got_data = 0, generated = 0, do_unlink = 0, i; 316 int got_data = 0, generated = 0, do_unlink = 0, i;
316 char *xauthdir, *xauthfile; 317 char *xauthdir, *xauthfile;
317 struct stat st; 318 struct stat st;
318 u_int now; 319 u_int now, x11_timeout_real;
319 320
320 xauthdir = xauthfile = NULL; 321 xauthdir = xauthfile = NULL;
321 *_proto = proto; 322 *_proto = proto;
@@ -348,6 +349,15 @@ client_x11_get_proto(const char *display, const char *xauth_path,
348 xauthdir = xmalloc(PATH_MAX); 349 xauthdir = xmalloc(PATH_MAX);
349 xauthfile = xmalloc(PATH_MAX); 350 xauthfile = xmalloc(PATH_MAX);
350 mktemp_proto(xauthdir, PATH_MAX); 351 mktemp_proto(xauthdir, PATH_MAX);
352 /*
353 * The authentication cookie should briefly outlive
354 * ssh's willingness to forward X11 connections to
355 * avoid nasty fail-open behaviour in the X server.
356 */
357 if (timeout >= UINT_MAX - X11_TIMEOUT_SLACK)
358 x11_timeout_real = UINT_MAX;
359 else
360 x11_timeout_real = timeout + X11_TIMEOUT_SLACK;
351 if (mkdtemp(xauthdir) != NULL) { 361 if (mkdtemp(xauthdir) != NULL) {
352 do_unlink = 1; 362 do_unlink = 1;
353 snprintf(xauthfile, PATH_MAX, "%s/xauthfile", 363 snprintf(xauthfile, PATH_MAX, "%s/xauthfile",
@@ -355,17 +365,20 @@ client_x11_get_proto(const char *display, const char *xauth_path,
355 snprintf(cmd, sizeof(cmd), 365 snprintf(cmd, sizeof(cmd),
356 "%s -f %s generate %s " SSH_X11_PROTO 366 "%s -f %s generate %s " SSH_X11_PROTO
357 " untrusted timeout %u 2>" _PATH_DEVNULL, 367 " untrusted timeout %u 2>" _PATH_DEVNULL,
358 xauth_path, xauthfile, display, timeout); 368 xauth_path, xauthfile, display,
369 x11_timeout_real);
359 debug2("x11_get_proto: %s", cmd); 370 debug2("x11_get_proto: %s", cmd);
360 if (system(cmd) == 0)
361 generated = 1;
362 if (x11_refuse_time == 0) { 371 if (x11_refuse_time == 0) {
363 now = monotime() + 1; 372 now = monotime() + 1;
364 if (UINT_MAX - timeout < now) 373 if (UINT_MAX - timeout < now)
365 x11_refuse_time = UINT_MAX; 374 x11_refuse_time = UINT_MAX;
366 else 375 else
367 x11_refuse_time = now + timeout; 376 x11_refuse_time = now + timeout;
377 channel_set_x11_refuse_time(
378 x11_refuse_time);
368 } 379 }
380 if (system(cmd) == 0)
381 generated = 1;
369 } 382 }
370 } 383 }
371 384
@@ -1909,7 +1922,7 @@ client_request_x11(const char *request_type, int rchan)
1909 "malicious server."); 1922 "malicious server.");
1910 return NULL; 1923 return NULL;
1911 } 1924 }
1912 if (x11_refuse_time != 0 && monotime() >= x11_refuse_time) { 1925 if (x11_refuse_time != 0 && (u_int)monotime() >= x11_refuse_time) {
1913 verbose("Rejected X11 connection after ForwardX11Timeout " 1926 verbose("Rejected X11 connection after ForwardX11Timeout "
1914 "expired"); 1927 "expired");
1915 return NULL; 1928 return NULL;
@@ -2372,8 +2385,7 @@ client_input_hostkeys(void)
2372 /* Check that the key is accepted in HostkeyAlgorithms */ 2385 /* Check that the key is accepted in HostkeyAlgorithms */
2373 if (options.hostkeyalgorithms != NULL && 2386 if (options.hostkeyalgorithms != NULL &&
2374 match_pattern_list(sshkey_ssh_name(key), 2387 match_pattern_list(sshkey_ssh_name(key),
2375 options.hostkeyalgorithms, 2388 options.hostkeyalgorithms, 0) != 1) {
2376 strlen(options.hostkeyalgorithms), 0) != 1) {
2377 debug3("%s: %s key not permitted by HostkeyAlgorithms", 2389 debug3("%s: %s key not permitted by HostkeyAlgorithms",
2378 __func__, sshkey_ssh_name(key)); 2390 __func__, sshkey_ssh_name(key));
2379 continue; 2391 continue;
diff --git a/compat.c b/compat.c
index 4852fb709..0631024f0 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.c,v 1.87 2015/01/19 20:20:20 markus Exp $ */ 1/* $OpenBSD: compat.c,v 1.94 2015/05/26 23:23:40 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -152,6 +152,7 @@ compat_datafellows(const char *version)
152 "1.2.22*", SSH_BUG_IGNOREMSG }, 152 "1.2.22*", SSH_BUG_IGNOREMSG },
153 { "1.3.2*", /* F-Secure */ 153 { "1.3.2*", /* F-Secure */
154 SSH_BUG_IGNOREMSG }, 154 SSH_BUG_IGNOREMSG },
155 { "Cisco-1.*", SSH_BUG_DHGEX_LARGE },
155 { "*SSH Compatible Server*", /* Netscreen */ 156 { "*SSH Compatible Server*", /* Netscreen */
156 SSH_BUG_PASSWORDPAD }, 157 SSH_BUG_PASSWORDPAD },
157 { "*OSU_0*," 158 { "*OSU_0*,"
@@ -165,15 +166,34 @@ compat_datafellows(const char *version)
165 "OSU_1.5alpha3*", SSH_BUG_PASSWORDPAD }, 166 "OSU_1.5alpha3*", SSH_BUG_PASSWORDPAD },
166 { "*SSH_Version_Mapper*", 167 { "*SSH_Version_Mapper*",
167 SSH_BUG_SCANNER }, 168 SSH_BUG_SCANNER },
169 { "PuTTY-Release-0.5*," /* 0.50-0.57, DH-GEX in >=0.52 */
170 "PuTTY_Release_0.5*," /* 0.58-0.59 */
171 "PuTTY_Release_0.60*,"
172 "PuTTY_Release_0.61*,"
173 "PuTTY_Release_0.62*,"
174 "PuTTY_Release_0.63*,"
175 "PuTTY_Release_0.64*",
176 SSH_OLD_DHGEX },
168 { "Probe-*", 177 { "Probe-*",
169 SSH_BUG_PROBE }, 178 SSH_BUG_PROBE },
179 { "TeraTerm SSH*,"
180 "TTSSH/1.5.*,"
181 "TTSSH/2.1*,"
182 "TTSSH/2.2*,"
183 "TTSSH/2.3*,"
184 "TTSSH/2.4*,"
185 "TTSSH/2.5*,"
186 "TTSSH/2.6*,"
187 "TTSSH/2.70*,"
188 "TTSSH/2.71*,"
189 "TTSSH/2.72*", SSH_BUG_HOSTKEYS },
190 { "WinSCP*", SSH_OLD_DHGEX },
170 { NULL, 0 } 191 { NULL, 0 }
171 }; 192 };
172 193
173 /* process table, return first match */ 194 /* process table, return first match */
174 for (i = 0; check[i].pat; i++) { 195 for (i = 0; check[i].pat; i++) {
175 if (match_pattern_list(version, check[i].pat, 196 if (match_pattern_list(version, check[i].pat, 0) == 1) {
176 strlen(check[i].pat), 0) == 1) {
177 debug("match: %s pat %s compat 0x%08x", 197 debug("match: %s pat %s compat 0x%08x",
178 version, check[i].pat, check[i].bugs); 198 version, check[i].pat, check[i].bugs);
179 datafellows = check[i].bugs; /* XXX for now */ 199 datafellows = check[i].bugs; /* XXX for now */
@@ -199,9 +219,11 @@ proto_spec(const char *spec)
199 for ((p = strsep(&q, SEP)); p && *p != '\0'; (p = strsep(&q, SEP))) { 219 for ((p = strsep(&q, SEP)); p && *p != '\0'; (p = strsep(&q, SEP))) {
200 switch (atoi(p)) { 220 switch (atoi(p)) {
201 case 1: 221 case 1:
222#ifdef WITH_SSH1
202 if (ret == SSH_PROTO_UNKNOWN) 223 if (ret == SSH_PROTO_UNKNOWN)
203 ret |= SSH_PROTO_1_PREFERRED; 224 ret |= SSH_PROTO_1_PREFERRED;
204 ret |= SSH_PROTO_1; 225 ret |= SSH_PROTO_1;
226#endif
205 break; 227 break;
206 case 2: 228 case 2:
207 ret |= SSH_PROTO_2; 229 ret |= SSH_PROTO_2;
@@ -229,7 +251,7 @@ filter_proposal(char *proposal, const char *filter)
229 buffer_init(&b); 251 buffer_init(&b);
230 tmp = orig_prop = xstrdup(proposal); 252 tmp = orig_prop = xstrdup(proposal);
231 while ((cp = strsep(&tmp, ",")) != NULL) { 253 while ((cp = strsep(&tmp, ",")) != NULL) {
232 if (match_pattern_list(cp, filter, strlen(cp), 0) != 1) { 254 if (match_pattern_list(cp, filter, 0) != 1) {
233 if (buffer_len(&b) > 0) 255 if (buffer_len(&b) > 0)
234 buffer_append(&b, ",", 1); 256 buffer_append(&b, ",", 1);
235 buffer_append(&b, cp, strlen(cp)); 257 buffer_append(&b, cp, strlen(cp));
@@ -271,15 +293,20 @@ compat_pkalg_proposal(char *pkalg_prop)
271} 293}
272 294
273char * 295char *
274compat_kex_proposal(char *kex_prop) 296compat_kex_proposal(char *p)
275{ 297{
276 if (!(datafellows & SSH_BUG_CURVE25519PAD)) 298 if ((datafellows & (SSH_BUG_CURVE25519PAD|SSH_OLD_DHGEX)) == 0)
277 return kex_prop; 299 return p;
278 debug2("%s: original KEX proposal: %s", __func__, kex_prop); 300 debug2("%s: original KEX proposal: %s", __func__, p);
279 kex_prop = filter_proposal(kex_prop, "curve25519-sha256@libssh.org"); 301 if ((datafellows & SSH_BUG_CURVE25519PAD) != 0)
280 debug2("%s: compat KEX proposal: %s", __func__, kex_prop); 302 p = filter_proposal(p, "curve25519-sha256@libssh.org");
281 if (*kex_prop == '\0') 303 if ((datafellows & SSH_OLD_DHGEX) != 0) {
304 p = filter_proposal(p, "diffie-hellman-group-exchange-sha256");
305 p = filter_proposal(p, "diffie-hellman-group-exchange-sha1");
306 }
307 debug2("%s: compat KEX proposal: %s", __func__, p);
308 if (*p == '\0')
282 fatal("No supported key exchange algorithms found"); 309 fatal("No supported key exchange algorithms found");
283 return kex_prop; 310 return p;
284} 311}
285 312
diff --git a/compat.h b/compat.h
index af2f0073f..2be290a8a 100644
--- a/compat.h
+++ b/compat.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.h,v 1.46 2015/01/19 20:20:20 markus Exp $ */ 1/* $OpenBSD: compat.h,v 1.48 2015/05/26 23:23:40 dtucker Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved.
@@ -60,6 +60,8 @@
60#define SSH_NEW_OPENSSH 0x04000000 60#define SSH_NEW_OPENSSH 0x04000000
61#define SSH_BUG_DYNAMIC_RPORT 0x08000000 61#define SSH_BUG_DYNAMIC_RPORT 0x08000000
62#define SSH_BUG_CURVE25519PAD 0x10000000 62#define SSH_BUG_CURVE25519PAD 0x10000000
63#define SSH_BUG_HOSTKEYS 0x20000000
64#define SSH_BUG_DHGEX_LARGE 0x40000000
63 65
64void enable_compat13(void); 66void enable_compat13(void);
65void enable_compat20(void); 67void enable_compat20(void);
diff --git a/config.guess b/config.guess
index b94cde8ef..c5636280d 100755
--- a/config.guess
+++ b/config.guess
@@ -982,6 +982,12 @@ EOF
982 ppc:Linux:*:*) 982 ppc:Linux:*:*)
983 echo powerpc-unknown-linux-gnu 983 echo powerpc-unknown-linux-gnu
984 exit ;; 984 exit ;;
985 ppc64le:Linux:*:*)
986 echo powerpc64le-unknown-linux-gnu
987 exit ;;
988 ppcle:Linux:*:*)
989 echo powerpcle-unknown-linux-gnu
990 exit ;;
985 s390:Linux:*:* | s390x:Linux:*:*) 991 s390:Linux:*:* | s390x:Linux:*:*)
986 echo ${UNAME_MACHINE}-ibm-linux 992 echo ${UNAME_MACHINE}-ibm-linux
987 exit ;; 993 exit ;;
diff --git a/configure b/configure
index 10267f663..803c5bcde 100755
--- a/configure
+++ b/configure
@@ -677,6 +677,7 @@ INSTALL_PROGRAM
677INSTALL_SCRIPT 677INSTALL_SCRIPT
678INSTALL_DATA 678INSTALL_DATA
679AR 679AR
680ac_ct_AR
680CAT 681CAT
681KILL 682KILL
682PERL 683PERL
@@ -1319,7 +1320,7 @@ Optional Packages:
1319 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] 1320 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
1320 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) 1321 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
1321 --without-openssl Disable use of OpenSSL; use only limited internal crypto **EXPERIMENTAL** 1322 --without-openssl Disable use of OpenSSL; use only limited internal crypto **EXPERIMENTAL**
1322 --without-ssh1 Disable support for SSH protocol 1 1323 --without-ssh1 Enable support for SSH protocol 1
1323 --without-stackprotect Don't use compiler's stack protection 1324 --without-stackprotect Don't use compiler's stack protection
1324 --without-hardening Don't use toolchain hardening flags 1325 --without-hardening Don't use toolchain hardening flags
1325 --without-rpath Disable auto-added -R linker paths 1326 --without-rpath Disable auto-added -R linker paths
@@ -1354,8 +1355,8 @@ Optional Packages:
1354 --with-mantype=man|cat|doc Set man page type 1355 --with-mantype=man|cat|doc Set man page type
1355 --with-md5-passwords Enable use of MD5 passwords 1356 --with-md5-passwords Enable use of MD5 passwords
1356 --without-shadow Disable shadow password support 1357 --without-shadow Disable shadow password support
1357 --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY 1358 --with-ipaddr-display Use ip address instead of hostname in $DISPLAY
1358 --with-default-path= Specify default \$PATH environment for server 1359 --with-default-path= Specify default $PATH environment for server
1359 --with-superuser-path= Specify different path for super-user 1360 --with-superuser-path= Specify different path for super-user
1360 --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses 1361 --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses
1361 --with-bsd-auth Enable BSD auth support 1362 --with-bsd-auth Enable BSD auth support
@@ -4253,26 +4254,27 @@ echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
4253 EGREP="$ac_cv_path_EGREP" 4254 EGREP="$ac_cv_path_EGREP"
4254 4255
4255 4256
4256# Extract the first word of "ar", so it can be a program name with args. 4257if test -n "$ac_tool_prefix"; then
4257set dummy ar; ac_word=$2 4258 for ac_prog in ar
4259 do
4260 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
4261set dummy $ac_tool_prefix$ac_prog; ac_word=$2
4258{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4262{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4259echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } 4263echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4260if test "${ac_cv_path_AR+set}" = set; then 4264if test "${ac_cv_prog_AR+set}" = set; then
4261 echo $ECHO_N "(cached) $ECHO_C" >&6 4265 echo $ECHO_N "(cached) $ECHO_C" >&6
4262else 4266else
4263 case $AR in 4267 if test -n "$AR"; then
4264 [\\/]* | ?:[\\/]*) 4268 ac_cv_prog_AR="$AR" # Let the user override the test.
4265 ac_cv_path_AR="$AR" # Let the user override the test with a path. 4269else
4266 ;; 4270as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4267 *)
4268 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4269for as_dir in $PATH 4271for as_dir in $PATH
4270do 4272do
4271 IFS=$as_save_IFS 4273 IFS=$as_save_IFS
4272 test -z "$as_dir" && as_dir=. 4274 test -z "$as_dir" && as_dir=.
4273 for ac_exec_ext in '' $ac_executable_extensions; do 4275 for ac_exec_ext in '' $ac_executable_extensions; do
4274 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then 4276 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4275 ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" 4277 ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
4276 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 4278 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4277 break 2 4279 break 2
4278 fi 4280 fi
@@ -4280,10 +4282,9 @@ done
4280done 4282done
4281IFS=$as_save_IFS 4283IFS=$as_save_IFS
4282 4284
4283 ;;
4284esac
4285fi 4285fi
4286AR=$ac_cv_path_AR 4286fi
4287AR=$ac_cv_prog_AR
4287if test -n "$AR"; then 4288if test -n "$AR"; then
4288 { echo "$as_me:$LINENO: result: $AR" >&5 4289 { echo "$as_me:$LINENO: result: $AR" >&5
4289echo "${ECHO_T}$AR" >&6; } 4290echo "${ECHO_T}$AR" >&6; }
@@ -4293,6 +4294,70 @@ echo "${ECHO_T}no" >&6; }
4293fi 4294fi
4294 4295
4295 4296
4297 test -n "$AR" && break
4298 done
4299fi
4300if test -z "$AR"; then
4301 ac_ct_AR=$AR
4302 for ac_prog in ar
4303do
4304 # Extract the first word of "$ac_prog", so it can be a program name with args.
4305set dummy $ac_prog; ac_word=$2
4306{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4307echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4308if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
4309 echo $ECHO_N "(cached) $ECHO_C" >&6
4310else
4311 if test -n "$ac_ct_AR"; then
4312 ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
4313else
4314as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4315for as_dir in $PATH
4316do
4317 IFS=$as_save_IFS
4318 test -z "$as_dir" && as_dir=.
4319 for ac_exec_ext in '' $ac_executable_extensions; do
4320 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4321 ac_cv_prog_ac_ct_AR="$ac_prog"
4322 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4323 break 2
4324 fi
4325done
4326done
4327IFS=$as_save_IFS
4328
4329fi
4330fi
4331ac_ct_AR=$ac_cv_prog_ac_ct_AR
4332if test -n "$ac_ct_AR"; then
4333 { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
4334echo "${ECHO_T}$ac_ct_AR" >&6; }
4335else
4336 { echo "$as_me:$LINENO: result: no" >&5
4337echo "${ECHO_T}no" >&6; }
4338fi
4339
4340
4341 test -n "$ac_ct_AR" && break
4342done
4343
4344 if test "x$ac_ct_AR" = x; then
4345 AR=""
4346 else
4347 case $cross_compiling:$ac_tool_warned in
4348yes:)
4349{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
4350whose name does not start with the host triplet. If you think this
4351configuration is useful to you, please write to autoconf@gnu.org." >&5
4352echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4353whose name does not start with the host triplet. If you think this
4354configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4355ac_tool_warned=yes ;;
4356esac
4357 AR=$ac_ct_AR
4358 fi
4359fi
4360
4296# Extract the first word of "cat", so it can be a program name with args. 4361# Extract the first word of "cat", so it can be a program name with args.
4297set dummy cat; ac_word=$2 4362set dummy cat; ac_word=$2
4298{ echo "$as_me:$LINENO: checking for $ac_word" >&5 4363{ echo "$as_me:$LINENO: checking for $ac_word" >&5
@@ -5737,12 +5802,19 @@ fi
5737# Check whether --with-ssh1 was given. 5802# Check whether --with-ssh1 was given.
5738if test "${with_ssh1+set}" = set; then 5803if test "${with_ssh1+set}" = set; then
5739 withval=$with_ssh1; 5804 withval=$with_ssh1;
5740 if test "x$withval" = "xno" ; then 5805 if test "x$withval" = "xyes" ; then
5741 ssh1=no 5806 if test "x$openssl" = "xno" ; then
5742 elif test "x$openssl" = "xno" ; then 5807 { { echo "$as_me:$LINENO: error: Cannot enable SSH protocol 1 with OpenSSL disabled" >&5
5743 { { echo "$as_me:$LINENO: error: Cannot enable SSH protocol 1 with OpenSSL disabled" >&5
5744echo "$as_me: error: Cannot enable SSH protocol 1 with OpenSSL disabled" >&2;} 5808echo "$as_me: error: Cannot enable SSH protocol 1 with OpenSSL disabled" >&2;}
5745 { (exit 1); exit 1; }; } 5809 { (exit 1); exit 1; }; }
5810 fi
5811 ssh1=yes
5812 elif test "x$withval" = "xno" ; then
5813 ssh1=no
5814 else
5815 { { echo "$as_me:$LINENO: error: unknown --with-ssh1 argument" >&5
5816echo "$as_me: error: unknown --with-ssh1 argument" >&2;}
5817 { (exit 1); exit 1; }; }
5746 fi 5818 fi
5747 5819
5748 5820
@@ -10218,9 +10290,12 @@ echo $ECHO_N "checking for seccomp architecture... $ECHO_C" >&6; }
10218 i*86-*) 10290 i*86-*)
10219 seccomp_audit_arch=AUDIT_ARCH_I386 10291 seccomp_audit_arch=AUDIT_ARCH_I386
10220 ;; 10292 ;;
10221 arm*-*) 10293 arm*-*)
10222 seccomp_audit_arch=AUDIT_ARCH_ARM 10294 seccomp_audit_arch=AUDIT_ARCH_ARM
10223 ;; 10295 ;;
10296 aarch64*-*)
10297 seccomp_audit_arch=AUDIT_ARCH_AARCH64
10298 ;;
10224 esac 10299 esac
10225 if test "x$seccomp_audit_arch" != "x" ; then 10300 if test "x$seccomp_audit_arch" != "x" ; then
10226 { echo "$as_me:$LINENO: result: \"$seccomp_audit_arch\"" >&5 10301 { echo "$as_me:$LINENO: result: \"$seccomp_audit_arch\"" >&5
@@ -36007,6 +36082,7 @@ INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
36007INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim 36082INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
36008INSTALL_DATA!$INSTALL_DATA$ac_delim 36083INSTALL_DATA!$INSTALL_DATA$ac_delim
36009AR!$AR$ac_delim 36084AR!$AR$ac_delim
36085ac_ct_AR!$ac_ct_AR$ac_delim
36010CAT!$CAT$ac_delim 36086CAT!$CAT$ac_delim
36011KILL!$KILL$ac_delim 36087KILL!$KILL$ac_delim
36012PERL!$PERL$ac_delim 36088PERL!$PERL$ac_delim
@@ -36042,7 +36118,6 @@ STRIP_OPT!$STRIP_OPT$ac_delim
36042XAUTH_PATH!$XAUTH_PATH$ac_delim 36118XAUTH_PATH!$XAUTH_PATH$ac_delim
36043MANTYPE!$MANTYPE$ac_delim 36119MANTYPE!$MANTYPE$ac_delim
36044mansubdir!$mansubdir$ac_delim 36120mansubdir!$mansubdir$ac_delim
36045user_path!$user_path$ac_delim
36046_ACEOF 36121_ACEOF
36047 36122
36048 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then 36123 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -36084,6 +36159,7 @@ _ACEOF
36084ac_delim='%!_!# ' 36159ac_delim='%!_!# '
36085for ac_last_try in false false false false false :; do 36160for ac_last_try in false false false false false :; do
36086 cat >conf$$subs.sed <<_ACEOF 36161 cat >conf$$subs.sed <<_ACEOF
36162user_path!$user_path$ac_delim
36087piddir!$piddir$ac_delim 36163piddir!$piddir$ac_delim
36088TEST_SSH_IPV6!$TEST_SSH_IPV6$ac_delim 36164TEST_SSH_IPV6!$TEST_SSH_IPV6$ac_delim
36089TEST_MALLOC_OPTIONS!$TEST_MALLOC_OPTIONS$ac_delim 36165TEST_MALLOC_OPTIONS!$TEST_MALLOC_OPTIONS$ac_delim
@@ -36092,7 +36168,7 @@ LIBOBJS!$LIBOBJS$ac_delim
36092LTLIBOBJS!$LTLIBOBJS$ac_delim 36168LTLIBOBJS!$LTLIBOBJS$ac_delim
36093_ACEOF 36169_ACEOF
36094 36170
36095 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 6; then 36171 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then
36096 break 36172 break
36097 elif $ac_last_try; then 36173 elif $ac_last_try; then
36098 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 36174 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index f7ce777a5..cd6acaf9f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -30,7 +30,7 @@ AC_PROG_CPP
30AC_PROG_RANLIB 30AC_PROG_RANLIB
31AC_PROG_INSTALL 31AC_PROG_INSTALL
32AC_PROG_EGREP 32AC_PROG_EGREP
33AC_PATH_PROG([AR], [ar]) 33AC_CHECK_TOOLS([AR], [ar])
34AC_PATH_PROG([CAT], [cat]) 34AC_PATH_PROG([CAT], [cat])
35AC_PATH_PROG([KILL], [kill]) 35AC_PATH_PROG([KILL], [kill])
36AC_PATH_PROGS([PERL], [perl5 perl]) 36AC_PATH_PROGS([PERL], [perl5 perl])
@@ -140,12 +140,17 @@ else
140fi 140fi
141 141
142AC_ARG_WITH([ssh1], 142AC_ARG_WITH([ssh1],
143 [ --without-ssh1 Disable support for SSH protocol 1], 143 [ --without-ssh1 Enable support for SSH protocol 1],
144 [ 144 [
145 if test "x$withval" = "xno" ; then 145 if test "x$withval" = "xyes" ; then
146 if test "x$openssl" = "xno" ; then
147 AC_MSG_ERROR([Cannot enable SSH protocol 1 with OpenSSL disabled])
148 fi
149 ssh1=yes
150 elif test "x$withval" = "xno" ; then
146 ssh1=no 151 ssh1=no
147 elif test "x$openssl" = "xno" ; then 152 else
148 AC_MSG_ERROR([Cannot enable SSH protocol 1 with OpenSSL disabled]) 153 AC_MSG_ERROR([unknown --with-ssh1 argument])
149 fi 154 fi
150 ] 155 ]
151) 156)
@@ -800,14 +805,17 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
800 i*86-*) 805 i*86-*)
801 seccomp_audit_arch=AUDIT_ARCH_I386 806 seccomp_audit_arch=AUDIT_ARCH_I386
802 ;; 807 ;;
803 arm*-*) 808 arm*-*)
804 seccomp_audit_arch=AUDIT_ARCH_ARM 809 seccomp_audit_arch=AUDIT_ARCH_ARM
805 ;; 810 ;;
811 aarch64*-*)
812 seccomp_audit_arch=AUDIT_ARCH_AARCH64
813 ;;
806 esac 814 esac
807 if test "x$seccomp_audit_arch" != "x" ; then 815 if test "x$seccomp_audit_arch" != "x" ; then
808 AC_MSG_RESULT(["$seccomp_audit_arch"]) 816 AC_MSG_RESULT(["$seccomp_audit_arch"])
809 AC_DEFINE_UNQUOTED([SECCOMP_AUDIT_ARCH], [$seccomp_audit_arch], 817 AC_DEFINE_UNQUOTED([SECCOMP_AUDIT_ARCH], [$seccomp_audit_arch],
810 [Specify the system call convention in use]) 818 [Specify the system call convention in use])
811 else 819 else
812 AC_MSG_RESULT([architecture not supported]) 820 AC_MSG_RESULT([architecture not supported])
813 fi 821 fi
@@ -4455,7 +4463,7 @@ if test ! -z "$IPADDR_IN_DISPLAY" ; then
4455else 4463else
4456 DISPLAY_HACK_MSG="no" 4464 DISPLAY_HACK_MSG="no"
4457 AC_ARG_WITH([ipaddr-display], 4465 AC_ARG_WITH([ipaddr-display],
4458 [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY], 4466 [ --with-ipaddr-display Use ip address instead of hostname in $DISPLAY],
4459 [ 4467 [
4460 if test "x$withval" != "xno" ; then 4468 if test "x$withval" != "xno" ; then
4461 AC_DEFINE([IPADDR_IN_DISPLAY]) 4469 AC_DEFINE([IPADDR_IN_DISPLAY])
@@ -4501,7 +4509,7 @@ fi
4501# Whether to mess with the default path 4509# Whether to mess with the default path
4502SERVER_PATH_MSG="(default)" 4510SERVER_PATH_MSG="(default)"
4503AC_ARG_WITH([default-path], 4511AC_ARG_WITH([default-path],
4504 [ --with-default-path= Specify default \$PATH environment for server], 4512 [ --with-default-path= Specify default $PATH environment for server],
4505 [ 4513 [
4506 if test "x$external_path_file" = "x/etc/login.conf" ; then 4514 if test "x$external_path_file" = "x/etc/login.conf" ; then
4507 AC_MSG_WARN([ 4515 AC_MSG_WARN([
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec
index 7ac4ed0a5..b9aaca5b6 100644
--- a/contrib/redhat/openssh.spec
+++ b/contrib/redhat/openssh.spec
@@ -1,4 +1,4 @@
1%define ver 6.8p1 1%define ver 6.9p1
2%define rel 1 2%define rel 1
3 3
4# OpenSSH privilege separation requires a user & group ID 4# OpenSSH privilege separation requires a user & group ID
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec
index 0eb779c9b..c29c3f71b 100644
--- a/contrib/suse/openssh.spec
+++ b/contrib/suse/openssh.spec
@@ -13,7 +13,7 @@
13 13
14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation 14Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
15Name: openssh 15Name: openssh
16Version: 6.8p1 16Version: 6.9p1
17URL: http://www.openssh.com/ 17URL: http://www.openssh.com/
18Release: 1 18Release: 1
19Source0: openssh-%{version}.tar.gz 19Source0: openssh-%{version}.tar.gz
diff --git a/debian/.git-dpm b/debian/.git-dpm
index c476ca7ec..cc2aee698 100644
--- a/debian/.git-dpm
+++ b/debian/.git-dpm
@@ -1,8 +1,8 @@
1# see git-dpm(1) from git-dpm package 1# see git-dpm(1) from git-dpm package
28698446b972003b63dfe5dcbdb86acfe986afb85 2810eecd6b2e03770f21e46b5cb8ce8c7fcd46da8
38698446b972003b63dfe5dcbdb86acfe986afb85 3810eecd6b2e03770f21e46b5cb8ce8c7fcd46da8
4baccdb349b31c47cd76fb63211f754ed33a9707e 4544df7a04ae5b5c1fc30be7c445ad685d7a02dc9
5baccdb349b31c47cd76fb63211f754ed33a9707e 5544df7a04ae5b5c1fc30be7c445ad685d7a02dc9
6openssh_6.8p1.orig.tar.gz 6openssh_6.9p1.orig.tar.gz
7cdbc51e46a902b30d263b05fdc71340920e91c92 786ab57f00d0fd9bf302760f2f6deac1b6e9df265
81475953 81487617
diff --git a/debian/changelog b/debian/changelog
index 60049cd71..06ec4ab09 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
1openssh (1:6.8p1-1) UNRELEASED; urgency=medium 1openssh (1:6.9p1-1) UNRELEASED; urgency=medium
2 2
3 * New upstream release (http://www.openssh.com/txt/release-6.8): 3 * New upstream release (http://www.openssh.com/txt/release-6.8):
4 - sshd(8): UseDNS now defaults to 'no'. Configurations that match 4 - sshd(8): UseDNS now defaults to 'no'. Configurations that match
@@ -63,6 +63,72 @@ openssh (1:6.8p1-1) UNRELEASED; urgency=medium
63 - ssh-keygen(1): Fix broken private key conversion from non-OpenSSH 63 - ssh-keygen(1): Fix broken private key conversion from non-OpenSSH
64 formats. 64 formats.
65 - ssh-keygen(1): Fix KRL generation bug when multiple CAs are in use. 65 - ssh-keygen(1): Fix KRL generation bug when multiple CAs are in use.
66 * New upstream release (http://www.openssh.com/txt/release-6.9):
67 - SECURITY: ssh(1): When forwarding X11 connections with
68 ForwardX11Trusted=no, connections made after ForwardX11Timeout expired
69 could be permitted and no longer subject to XSECURITY restrictions
70 because of an ineffective timeout check in ssh(1) coupled with "fail
71 open" behaviour in the X11 server when clients attempted connections
72 with expired credentials. This problem was reported by Jann Horn.
73 - SECURITY: ssh-agent(1): Fix weakness of agent locking (ssh-add -x) to
74 password guessing by implementing an increasing failure delay, storing
75 a salted hash of the password rather than the password itself and
76 using a timing-safe comparison function for verifying unlock attempts.
77 This problem was reported by Ryan Castellucci.
78 - sshd(8): Support admin-specified arguments to AuthorizedKeysCommand
79 (closes: #740494).
80 - sshd(8): Add AuthorizedPrincipalsCommand that allows retrieving
81 authorized principals information from a subprocess rather than a
82 file.
83 - ssh(1), ssh-add(1): Support PKCS#11 devices with external PIN entry
84 devices.
85 - ssh-keygen(1): Support "ssh-keygen -lF hostname" to search known_hosts
86 and print key hashes rather than full keys.
87 - ssh-agent(1): Add -D flag to leave ssh-agent in foreground without
88 enabling debug mode.
89 - ssh(1), sshd(8): Deprecate legacy SSH2_MSG_KEX_DH_GEX_REQUEST_OLD
90 message and do not try to use it against some 3rd-party SSH
91 implementations that use it (older PuTTY, WinSCP).
92 - ssh(1), sshd(8): Cap DH-GEX group size at 4Kbits for Cisco
93 implementations as some would fail when attempting to use group sizes
94 >4K (closes: #740307, LP: #1287222).
95 - ssh(1): Fix out-of-bound read in EscapeChar configuration option
96 parsing.
97 - sshd(8): Fix application of PermitTunnel, LoginGraceTime,
98 AuthenticationMethods and StreamLocalBindMask options in Match blocks.
99 - ssh(1), sshd(8): Improve disconnection message on TCP reset.
100 - ssh(1): Remove failed remote forwards established by multiplexing from
101 the list of active forwards.
102 - sshd(8): Make parsing of authorized_keys "environment=" options
103 independent of PermitUserEnv being enabled.
104 - sshd(8): Fix post-auth crash with permitopen=none (closes: #778807).
105 - ssh(1), ssh-add(1), ssh-keygen(1): Allow new-format private keys to be
106 encrypted with AEAD ciphers.
107 - ssh(1): Allow ListenAddress, Port and AddressFamily configuration
108 options to appear in any order.
109 - sshd(8): Check for and reject missing arguments for VersionAddendum
110 and ForceCommand.
111 - ssh(1), sshd(8): Don't treat unknown certificate extensions as fatal.
112 - ssh-keygen(1): Make stdout and stderr output consistent.
113 - ssh(1): Mention missing DISPLAY environment in debug log when X11
114 forwarding requested.
115 - sshd(8): Correctly record login when UseLogin is set.
116 - sshd(8): Add some missing options to sshd -T output and fix output of
117 VersionAddendum and HostCertificate.
118 - Document and improve consistency of options that accept a "none"
119 argument: TrustedUserCAKeys, RevokedKeys, AuthorizedPrincipalsFile.
120 - ssh(1): Include remote username in debug output.
121 - sshd(8): Avoid compatibility problem with some versions of Tera Term,
122 which would crash when they received the hostkeys notification message
123 (hostkeys-00@openssh.com).
124 - sshd(8): Mention ssh-keygen -E as useful when comparing legacy MD5
125 host key fingerprints.
126 - ssh(1): Clarify pseudo-terminal request behaviour and make manual
127 language consistent.
128 - ssh(1): Document that the TERM environment variable is not subject to
129 SendEnv and AcceptEnv; bz#2386
130 - sshd(8): Format UsePAM setting when using sshd -T (closes: #767648).
131 - moduli(5): Update DH-GEX moduli (closes: #787037).
66 * Thanks to Jakub Jelen of Red Hat for Fedora's rebased version of the 132 * Thanks to Jakub Jelen of Red Hat for Fedora's rebased version of the
67 GSSAPI key exchange patch. 133 GSSAPI key exchange patch.
68 134
diff --git a/debian/patches/auth-log-verbosity.patch b/debian/patches/auth-log-verbosity.patch
index 491656be2..1b52fd4cc 100644
--- a/debian/patches/auth-log-verbosity.patch
+++ b/debian/patches/auth-log-verbosity.patch
@@ -1,4 +1,4 @@
1From c9c2ebb4680ea6872218b1e4519fe31a2043a27a Mon Sep 17 00:00:00 2001 1From ee78b163ac7fe57b819e8ddf84b32e67b6a950a3 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:02 +0000 3Date: Sun, 9 Feb 2014 16:10:02 +0000
4Subject: Quieten logs when multiple from= restrictions are used 4Subject: Quieten logs when multiple from= restrictions are used
@@ -16,7 +16,7 @@ Patch-Name: auth-log-verbosity.patch
16 4 files changed, 32 insertions(+), 9 deletions(-) 16 4 files changed, 32 insertions(+), 9 deletions(-)
17 17
18diff --git a/auth-options.c b/auth-options.c 18diff --git a/auth-options.c b/auth-options.c
19index 4f0da9c..3fa236e 100644 19index facfc02..9ab1880 100644
20--- a/auth-options.c 20--- a/auth-options.c
21+++ b/auth-options.c 21+++ b/auth-options.c
22@@ -58,9 +58,20 @@ int forced_tun_device = -1; 22@@ -58,9 +58,20 @@ int forced_tun_device = -1;
@@ -40,7 +40,7 @@ index 4f0da9c..3fa236e 100644
40 auth_clear_options(void) 40 auth_clear_options(void)
41 { 41 {
42 no_agent_forwarding_flag = 0; 42 no_agent_forwarding_flag = 0;
43@@ -288,10 +299,13 @@ auth_parse_options(struct passwd *pw, char *opts, char *file, u_long linenum) 43@@ -293,10 +304,13 @@ auth_parse_options(struct passwd *pw, char *opts, char *file, u_long linenum)
44 /* FALLTHROUGH */ 44 /* FALLTHROUGH */
45 case 0: 45 case 0:
46 free(patterns); 46 free(patterns);
@@ -58,7 +58,7 @@ index 4f0da9c..3fa236e 100644
58 auth_debug_add("Your host '%.200s' is not " 58 auth_debug_add("Your host '%.200s' is not "
59 "permitted to use this key for login.", 59 "permitted to use this key for login.",
60 remote_host); 60 remote_host);
61@@ -514,11 +528,14 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw, 61@@ -519,11 +533,14 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw,
62 break; 62 break;
63 case 0: 63 case 0:
64 /* no match */ 64 /* no match */
@@ -104,18 +104,18 @@ index cbd971b..4cf2163 100644
104 * Go though the accepted keys, looking for the current key. If 104 * Go though the accepted keys, looking for the current key. If
105 * found, perform a challenge-response dialog to verify that the 105 * found, perform a challenge-response dialog to verify that the
106diff --git a/auth2-pubkey.c b/auth2-pubkey.c 106diff --git a/auth2-pubkey.c b/auth2-pubkey.c
107index d943efa..0bda5c9 100644 107index 5aa319c..1eee161 100644
108--- a/auth2-pubkey.c 108--- a/auth2-pubkey.c
109+++ b/auth2-pubkey.c 109+++ b/auth2-pubkey.c
110@@ -282,6 +282,7 @@ match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert) 110@@ -561,6 +561,7 @@ process_principals(FILE *f, char *file, struct passwd *pw,
111 restore_uid(); 111 u_long linenum = 0;
112 return 0; 112 u_int i;
113 } 113
114+ auth_start_parse_options(); 114+ auth_start_parse_options();
115 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 115 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
116 /* Skip leading whitespace. */ 116 /* Skip leading whitespace. */
117 for (cp = line; *cp == ' ' || *cp == '\t'; cp++) 117 for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
118@@ -343,6 +344,7 @@ check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw) 118@@ -726,6 +727,7 @@ check_authkeys_file(FILE *f, char *file, Key* key, struct passwd *pw)
119 found_key = 0; 119 found_key = 0;
120 120
121 found = NULL; 121 found = NULL;
@@ -123,9 +123,9 @@ index d943efa..0bda5c9 100644
123 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { 123 while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) {
124 char *cp, *key_options = NULL; 124 char *cp, *key_options = NULL;
125 if (found != NULL) 125 if (found != NULL)
126@@ -482,6 +484,7 @@ user_cert_trusted_ca(struct passwd *pw, Key *key) 126@@ -872,6 +874,7 @@ user_cert_trusted_ca(struct passwd *pw, Key *key)
127 if (key_cert_check_authority(key, 0, 1, 127 if (key_cert_check_authority(key, 0, 1,
128 principals_file == NULL ? pw->pw_name : NULL, &reason) != 0) 128 use_authorized_principals ? NULL : pw->pw_name, &reason) != 0)
129 goto fail_reason; 129 goto fail_reason;
130+ auth_start_parse_options(); 130+ auth_start_parse_options();
131 if (auth_cert_options(key, pw) != 0) 131 if (auth_cert_options(key, pw) != 0)
diff --git a/debian/patches/authorized-keys-man-symlink.patch b/debian/patches/authorized-keys-man-symlink.patch
index eb398f6a4..e2f08085e 100644
--- a/debian/patches/authorized-keys-man-symlink.patch
+++ b/debian/patches/authorized-keys-man-symlink.patch
@@ -1,4 +1,4 @@
1From 8a1a563ee326222155c74454e11e6ed62297c403 Mon Sep 17 00:00:00 2001 1From 4a7ce48c3db45ebb9cb76fe21fc9e8811a43d840 Mon Sep 17 00:00:00 2001
2From: Tomas Pospisek <tpo_deb@sourcepole.ch> 2From: Tomas Pospisek <tpo_deb@sourcepole.ch>
3Date: Sun, 9 Feb 2014 16:10:07 +0000 3Date: Sun, 9 Feb 2014 16:10:07 +0000
4Subject: Install authorized_keys(5) as a symlink to sshd(8) 4Subject: Install authorized_keys(5) as a symlink to sshd(8)
diff --git a/debian/patches/consolekit.patch b/debian/patches/consolekit.patch
index 0438b8f74..5ab47c0ca 100644
--- a/debian/patches/consolekit.patch
+++ b/debian/patches/consolekit.patch
@@ -1,4 +1,4 @@
1From 8b3111d597316954caaf8ddf2e7746491976c248 Mon Sep 17 00:00:00 2001 1From 1197fd975ab8fd11b1ac83557ef750129b16c0d8 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@ubuntu.com> 2From: Colin Watson <cjwatson@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:57 +0000 3Date: Sun, 9 Feb 2014 16:09:57 +0000
4Subject: Add support for registering ConsoleKit sessions on login 4Subject: Add support for registering ConsoleKit sessions on login
@@ -37,10 +37,10 @@ index 3d2a328..c406aec 100644
37 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 sshd_config.5.out ssh_config.5.out 37 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 sshd_config.5.out ssh_config.5.out
38 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 sshd_config.5 ssh_config.5 38 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 sshd_config.5 ssh_config.5
39diff --git a/configure.ac b/configure.ac 39diff --git a/configure.ac b/configure.ac
40index 5f606ea..f7ce777 100644 40index 4d55c46..cd6acaf 100644
41--- a/configure.ac 41--- a/configure.ac
42+++ b/configure.ac 42+++ b/configure.ac
43@@ -4180,6 +4180,30 @@ AC_ARG_WITH([kerberos5], 43@@ -4188,6 +4188,30 @@ AC_ARG_WITH([kerberos5],
44 AC_SUBST([GSSLIBS]) 44 AC_SUBST([GSSLIBS])
45 AC_SUBST([K5LIBS]) 45 AC_SUBST([K5LIBS])
46 46
@@ -71,7 +71,7 @@ index 5f606ea..f7ce777 100644
71 # Looking for programs, paths and files 71 # Looking for programs, paths and files
72 72
73 PRIVSEP_PATH=/var/empty 73 PRIVSEP_PATH=/var/empty
74@@ -4981,6 +5005,7 @@ echo " MD5 password support: $MD5_MSG" 74@@ -4989,6 +5013,7 @@ echo " MD5 password support: $MD5_MSG"
75 echo " libedit support: $LIBEDIT_MSG" 75 echo " libedit support: $LIBEDIT_MSG"
76 echo " Solaris process contract support: $SPC_MSG" 76 echo " Solaris process contract support: $SPC_MSG"
77 echo " Solaris project support: $SP_MSG" 77 echo " Solaris project support: $SP_MSG"
@@ -357,7 +357,7 @@ index 0000000..8ce3716
357+ 357+
358+#endif /* USE_CONSOLEKIT */ 358+#endif /* USE_CONSOLEKIT */
359diff --git a/monitor.c b/monitor.c 359diff --git a/monitor.c b/monitor.c
360index 6ff05e4..ce7ba07 100644 360index 3a3d2f0..12ed6fd 100644
361--- a/monitor.c 361--- a/monitor.c
362+++ b/monitor.c 362+++ b/monitor.c
363@@ -104,6 +104,9 @@ 363@@ -104,6 +104,9 @@
@@ -411,7 +411,7 @@ index 6ff05e4..ce7ba07 100644
411 411
412 for (;;) 412 for (;;)
413 monitor_read(pmonitor, mon_dispatch, NULL); 413 monitor_read(pmonitor, mon_dispatch, NULL);
414@@ -2187,3 +2203,29 @@ mm_answer_gss_updatecreds(int socket, Buffer *m) { 414@@ -2191,3 +2207,29 @@ mm_answer_gss_updatecreds(int socket, Buffer *m) {
415 415
416 #endif /* GSSAPI */ 416 #endif /* GSSAPI */
417 417
@@ -455,10 +455,10 @@ index 2d82b8b..fd8d92c 100644
455 455
456 struct mm_master; 456 struct mm_master;
457diff --git a/monitor_wrap.c b/monitor_wrap.c 457diff --git a/monitor_wrap.c b/monitor_wrap.c
458index 5aa9c47..a5f4e9d 100644 458index 6ae72a0..2a0fe9b 100644
459--- a/monitor_wrap.c 459--- a/monitor_wrap.c
460+++ b/monitor_wrap.c 460+++ b/monitor_wrap.c
461@@ -1150,3 +1150,33 @@ mm_ssh_gssapi_update_creds(ssh_gssapi_ccache *store) 461@@ -1151,3 +1151,33 @@ mm_ssh_gssapi_update_creds(ssh_gssapi_ccache *store)
462 462
463 #endif /* GSSAPI */ 463 #endif /* GSSAPI */
464 464
@@ -493,7 +493,7 @@ index 5aa9c47..a5f4e9d 100644
493+} 493+}
494+#endif /* USE_CONSOLEKIT */ 494+#endif /* USE_CONSOLEKIT */
495diff --git a/monitor_wrap.h b/monitor_wrap.h 495diff --git a/monitor_wrap.h b/monitor_wrap.h
496index 4d1e899..f99c31c 100644 496index 57e740f..6829392 100644
497--- a/monitor_wrap.h 497--- a/monitor_wrap.h
498+++ b/monitor_wrap.h 498+++ b/monitor_wrap.h
499@@ -108,4 +108,8 @@ int mm_skey_respond(void *, u_int, char **); 499@@ -108,4 +108,8 @@ int mm_skey_respond(void *, u_int, char **);
@@ -506,7 +506,7 @@ index 4d1e899..f99c31c 100644
506+ 506+
507 #endif /* _MM_WRAP_H_ */ 507 #endif /* _MM_WRAP_H_ */
508diff --git a/session.c b/session.c 508diff --git a/session.c b/session.c
509index d4b7725..785833f 100644 509index afac4a5..c6bd728 100644
510--- a/session.c 510--- a/session.c
511+++ b/session.c 511+++ b/session.c
512@@ -94,6 +94,7 @@ 512@@ -94,6 +94,7 @@
diff --git a/debian/patches/debian-banner.patch b/debian/patches/debian-banner.patch
index 5bc70a566..42fc5be76 100644
--- a/debian/patches/debian-banner.patch
+++ b/debian/patches/debian-banner.patch
@@ -1,4 +1,4 @@
1From 2c31a85436f1eac46e185382c2aa15406ae6c0ac Mon Sep 17 00:00:00 2001 1From 91729e3501d53d11fcc7a364b36994305c495945 Mon Sep 17 00:00:00 2001
2From: Kees Cook <kees@debian.org> 2From: Kees Cook <kees@debian.org>
3Date: Sun, 9 Feb 2014 16:10:06 +0000 3Date: Sun, 9 Feb 2014 16:10:06 +0000
4Subject: Add DebianBanner server configuration option 4Subject: Add DebianBanner server configuration option
@@ -19,10 +19,10 @@ Patch-Name: debian-banner.patch
19 4 files changed, 18 insertions(+), 1 deletion(-) 19 4 files changed, 18 insertions(+), 1 deletion(-)
20 20
21diff --git a/servconf.c b/servconf.c 21diff --git a/servconf.c b/servconf.c
22index b3a2841..bec53e0 100644 22index 8a5bd7b..fe3e311 100644
23--- a/servconf.c 23--- a/servconf.c
24+++ b/servconf.c 24+++ b/servconf.c
25@@ -166,6 +166,7 @@ initialize_server_options(ServerOptions *options) 25@@ -169,6 +169,7 @@ initialize_server_options(ServerOptions *options)
26 options->ip_qos_bulk = -1; 26 options->ip_qos_bulk = -1;
27 options->version_addendum = NULL; 27 options->version_addendum = NULL;
28 options->fingerprint_hash = -1; 28 options->fingerprint_hash = -1;
@@ -30,7 +30,7 @@ index b3a2841..bec53e0 100644
30 } 30 }
31 31
32 /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */ 32 /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */
33@@ -342,6 +343,8 @@ fill_default_server_options(ServerOptions *options) 33@@ -347,6 +348,8 @@ fill_default_server_options(ServerOptions *options)
34 options->fwd_opts.streamlocal_bind_unlink = 0; 34 options->fwd_opts.streamlocal_bind_unlink = 0;
35 if (options->fingerprint_hash == -1) 35 if (options->fingerprint_hash == -1)
36 options->fingerprint_hash = SSH_FP_HASH_DEFAULT; 36 options->fingerprint_hash = SSH_FP_HASH_DEFAULT;
@@ -39,7 +39,7 @@ index b3a2841..bec53e0 100644
39 /* Turn privilege separation on by default */ 39 /* Turn privilege separation on by default */
40 if (use_privsep == -1) 40 if (use_privsep == -1)
41 use_privsep = PRIVSEP_NOSANDBOX; 41 use_privsep = PRIVSEP_NOSANDBOX;
42@@ -412,6 +415,7 @@ typedef enum { 42@@ -419,6 +422,7 @@ typedef enum {
43 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC, 43 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC,
44 sStreamLocalBindMask, sStreamLocalBindUnlink, 44 sStreamLocalBindMask, sStreamLocalBindUnlink,
45 sAllowStreamLocalForwarding, sFingerprintHash, 45 sAllowStreamLocalForwarding, sFingerprintHash,
@@ -47,7 +47,7 @@ index b3a2841..bec53e0 100644
47 sDeprecated, sUnsupported 47 sDeprecated, sUnsupported
48 } ServerOpCodes; 48 } ServerOpCodes;
49 49
50@@ -556,6 +560,7 @@ static struct { 50@@ -565,6 +569,7 @@ static struct {
51 { "streamlocalbindunlink", sStreamLocalBindUnlink, SSHCFG_ALL }, 51 { "streamlocalbindunlink", sStreamLocalBindUnlink, SSHCFG_ALL },
52 { "allowstreamlocalforwarding", sAllowStreamLocalForwarding, SSHCFG_ALL }, 52 { "allowstreamlocalforwarding", sAllowStreamLocalForwarding, SSHCFG_ALL },
53 { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL }, 53 { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL },
@@ -55,7 +55,7 @@ index b3a2841..bec53e0 100644
55 { NULL, sBadOption, 0 } 55 { NULL, sBadOption, 0 }
56 }; 56 };
57 57
58@@ -1777,6 +1782,10 @@ process_server_config_line(ServerOptions *options, char *line, 58@@ -1850,6 +1855,10 @@ process_server_config_line(ServerOptions *options, char *line,
59 options->fingerprint_hash = value; 59 options->fingerprint_hash = value;
60 break; 60 break;
61 61
@@ -67,10 +67,10 @@ index b3a2841..bec53e0 100644
67 logit("%s line %d: Deprecated option %s", 67 logit("%s line %d: Deprecated option %s",
68 filename, linenum, arg); 68 filename, linenum, arg);
69diff --git a/servconf.h b/servconf.h 69diff --git a/servconf.h b/servconf.h
70index d2ed4d7..ed0f171 100644 70index b99b270..ba7b739 100644
71--- a/servconf.h 71--- a/servconf.h
72+++ b/servconf.h 72+++ b/servconf.h
73@@ -192,6 +192,8 @@ typedef struct { 73@@ -196,6 +196,8 @@ typedef struct {
74 char *auth_methods[MAX_AUTH_METHODS]; 74 char *auth_methods[MAX_AUTH_METHODS];
75 75
76 int fingerprint_hash; 76 int fingerprint_hash;
@@ -80,7 +80,7 @@ index d2ed4d7..ed0f171 100644
80 80
81 /* Information about the incoming connection as used by Match */ 81 /* Information about the incoming connection as used by Match */
82diff --git a/sshd.c b/sshd.c 82diff --git a/sshd.c b/sshd.c
83index c362209..5435968 100644 83index 96e75c6..7886d0e 100644
84--- a/sshd.c 84--- a/sshd.c
85+++ b/sshd.c 85+++ b/sshd.c
86@@ -442,7 +442,8 @@ sshd_exchange_identification(int sock_in, int sock_out) 86@@ -442,7 +442,8 @@ sshd_exchange_identification(int sock_in, int sock_out)
@@ -94,10 +94,10 @@ index c362209..5435968 100644
94 options.version_addendum, newline); 94 options.version_addendum, newline);
95 95
96diff --git a/sshd_config.5 b/sshd_config.5 96diff --git a/sshd_config.5 b/sshd_config.5
97index d14576e..ec58635 100644 97index 1269bbd..a5afbc3 100644
98--- a/sshd_config.5 98--- a/sshd_config.5
99+++ b/sshd_config.5 99+++ b/sshd_config.5
100@@ -476,6 +476,11 @@ or 100@@ -528,6 +528,11 @@ or
101 .Dq no . 101 .Dq no .
102 The default is 102 The default is
103 .Dq delayed . 103 .Dq delayed .
diff --git a/debian/patches/debian-config.patch b/debian/patches/debian-config.patch
index a346ba678..4f5db8a91 100644
--- a/debian/patches/debian-config.patch
+++ b/debian/patches/debian-config.patch
@@ -1,4 +1,4 @@
1From 8698446b972003b63dfe5dcbdb86acfe986afb85 Mon Sep 17 00:00:00 2001 1From 810eecd6b2e03770f21e46b5cb8ce8c7fcd46da8 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:18 +0000 3Date: Sun, 9 Feb 2014 16:10:18 +0000
4Subject: Various Debian-specific configuration changes 4Subject: Various Debian-specific configuration changes
@@ -29,12 +29,12 @@ Patch-Name: debian-config.patch
29 readconf.c | 2 +- 29 readconf.c | 2 +-
30 ssh_config | 7 ++++++- 30 ssh_config | 7 ++++++-
31 ssh_config.5 | 19 ++++++++++++++++++- 31 ssh_config.5 | 19 ++++++++++++++++++-
32 sshd_config | 1 + 32 sshd_config | 3 ++-
33 sshd_config.5 | 25 +++++++++++++++++++++++++ 33 sshd_config.5 | 25 +++++++++++++++++++++++++
34 5 files changed, 51 insertions(+), 3 deletions(-) 34 5 files changed, 52 insertions(+), 4 deletions(-)
35 35
36diff --git a/readconf.c b/readconf.c 36diff --git a/readconf.c b/readconf.c
37index 2ef8d7b..66a62f2 100644 37index 5f6c37f..f0769b5 100644
38--- a/readconf.c 38--- a/readconf.c
39+++ b/readconf.c 39+++ b/readconf.c
40@@ -1748,7 +1748,7 @@ fill_default_options(Options * options) 40@@ -1748,7 +1748,7 @@ fill_default_options(Options * options)
@@ -71,7 +71,7 @@ index 228e5ab..c9386aa 100644
71+ GSSAPIAuthentication yes 71+ GSSAPIAuthentication yes
72+ GSSAPIDelegateCredentials no 72+ GSSAPIDelegateCredentials no
73diff --git a/ssh_config.5 b/ssh_config.5 73diff --git a/ssh_config.5 b/ssh_config.5
74index 3bd80fd..da8e544 100644 74index acd581b..844d1a0 100644
75--- a/ssh_config.5 75--- a/ssh_config.5
76+++ b/ssh_config.5 76+++ b/ssh_config.5
77@@ -74,6 +74,22 @@ Since the first obtained value for each parameter is used, more 77@@ -74,6 +74,22 @@ Since the first obtained value for each parameter is used, more
@@ -97,7 +97,7 @@ index 3bd80fd..da8e544 100644
97 The configuration file has the following format: 97 The configuration file has the following format:
98 .Pp 98 .Pp
99 Empty lines and lines starting with 99 Empty lines and lines starting with
100@@ -715,7 +731,8 @@ token used for the session will be set to expire after 20 minutes. 100@@ -716,7 +732,8 @@ token used for the session will be set to expire after 20 minutes.
101 Remote clients will be refused access after this time. 101 Remote clients will be refused access after this time.
102 .Pp 102 .Pp
103 The default is 103 The default is
@@ -108,19 +108,21 @@ index 3bd80fd..da8e544 100644
108 See the X11 SECURITY extension specification for full details on 108 See the X11 SECURITY extension specification for full details on
109 the restrictions imposed on untrusted clients. 109 the restrictions imposed on untrusted clients.
110diff --git a/sshd_config b/sshd_config 110diff --git a/sshd_config b/sshd_config
111index a71ad19..3391233 100644 111index 1dfd0f1..23a338f 100644
112--- a/sshd_config 112--- a/sshd_config
113+++ b/sshd_config 113+++ b/sshd_config
114@@ -41,6 +41,7 @@ 114@@ -41,7 +41,8 @@
115 # Authentication: 115 # Authentication:
116 116
117 #LoginGraceTime 2m 117 #LoginGraceTime 2m
118-#PermitRootLogin no
118+# See /usr/share/doc/openssh-server/README.Debian.gz. 119+# See /usr/share/doc/openssh-server/README.Debian.gz.
119 #PermitRootLogin yes 120+#PermitRootLogin without-password
120 #StrictModes yes 121 #StrictModes yes
121 #MaxAuthTries 6 122 #MaxAuthTries 6
123 #MaxSessions 10
122diff --git a/sshd_config.5 b/sshd_config.5 124diff --git a/sshd_config.5 b/sshd_config.5
123index 453d741..db1f2fd 100644 125index 355b445..eb6bff8 100644
124--- a/sshd_config.5 126--- a/sshd_config.5
125+++ b/sshd_config.5 127+++ b/sshd_config.5
126@@ -57,6 +57,31 @@ Arguments may optionally be enclosed in double quotes 128@@ -57,6 +57,31 @@ Arguments may optionally be enclosed in double quotes
diff --git a/debian/patches/dnssec-sshfp.patch b/debian/patches/dnssec-sshfp.patch
index 97fe79aef..57bd567e4 100644
--- a/debian/patches/dnssec-sshfp.patch
+++ b/debian/patches/dnssec-sshfp.patch
@@ -1,4 +1,4 @@
1From 5cbcc7353649b84b5a7528e583458ee9473fd527 Mon Sep 17 00:00:00 2001 1From dbde51cd7abb931b2d8635230bd77c9ec3b75074 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:01 +0000 3Date: Sun, 9 Feb 2014 16:10:01 +0000
4Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf 4Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf
diff --git a/debian/patches/doc-hash-tab-completion.patch b/debian/patches/doc-hash-tab-completion.patch
index 35d589353..b80cc4e25 100644
--- a/debian/patches/doc-hash-tab-completion.patch
+++ b/debian/patches/doc-hash-tab-completion.patch
@@ -1,4 +1,4 @@
1From b0146d5a8c1b9d87f4255cbee40b31c938fea2f8 Mon Sep 17 00:00:00 2001 1From 9e2f66b771364d835a5308218b777b08935596b8 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:11 +0000 3Date: Sun, 9 Feb 2014 16:10:11 +0000
4Subject: Document that HashKnownHosts may break tab-completion 4Subject: Document that HashKnownHosts may break tab-completion
@@ -13,10 +13,10 @@ Patch-Name: doc-hash-tab-completion.patch
13 1 file changed, 3 insertions(+) 13 1 file changed, 3 insertions(+)
14 14
15diff --git a/ssh_config.5 b/ssh_config.5 15diff --git a/ssh_config.5 b/ssh_config.5
16index 8abcf40..3bd80fd 100644 16index 1d0c52b..acd581b 100644
17--- a/ssh_config.5 17--- a/ssh_config.5
18+++ b/ssh_config.5 18+++ b/ssh_config.5
19@@ -801,6 +801,9 @@ Note that existing names and addresses in known hosts files 19@@ -802,6 +802,9 @@ Note that existing names and addresses in known hosts files
20 will not be converted automatically, 20 will not be converted automatically,
21 but may be manually hashed using 21 but may be manually hashed using
22 .Xr ssh-keygen 1 . 22 .Xr ssh-keygen 1 .
diff --git a/debian/patches/doc-upstart.patch b/debian/patches/doc-upstart.patch
index 8002929ab..151c57eb1 100644
--- a/debian/patches/doc-upstart.patch
+++ b/debian/patches/doc-upstart.patch
@@ -1,4 +1,4 @@
1From c679bacbff13edaa44255c4f4c32ef5bc0f4ccbc Mon Sep 17 00:00:00 2001 1From 64f36a889a1afd364636c1ded6b6a694675fca67 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@ubuntu.com> 2From: Colin Watson <cjwatson@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:12 +0000 3Date: Sun, 9 Feb 2014 16:10:12 +0000
4Subject: Refer to ssh's Upstart job as well as its init script 4Subject: Refer to ssh's Upstart job as well as its init script
@@ -12,7 +12,7 @@ Patch-Name: doc-upstart.patch
12 1 file changed, 4 insertions(+), 1 deletion(-) 12 1 file changed, 4 insertions(+), 1 deletion(-)
13 13
14diff --git a/sshd.8 b/sshd.8 14diff --git a/sshd.8 b/sshd.8
15index 8dba6cf..e198017 100644 15index 2f4d4f3..42f1520 100644
16--- a/sshd.8 16--- a/sshd.8
17+++ b/sshd.8 17+++ b/sshd.8
18@@ -67,7 +67,10 @@ over an insecure network. 18@@ -67,7 +67,10 @@ over an insecure network.
diff --git a/debian/patches/gnome-ssh-askpass2-icon.patch b/debian/patches/gnome-ssh-askpass2-icon.patch
index 79efb8971..cdb3fc7f0 100644
--- a/debian/patches/gnome-ssh-askpass2-icon.patch
+++ b/debian/patches/gnome-ssh-askpass2-icon.patch
@@ -1,4 +1,4 @@
1From 02662744e60e6bbe532ff22c7f563026a7424b6c Mon Sep 17 00:00:00 2001 1From f3e58419e41e29f5d03c2d91f4576febac922112 Mon Sep 17 00:00:00 2001
2From: Vincent Untz <vuntz@ubuntu.com> 2From: Vincent Untz <vuntz@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:16 +0000 3Date: Sun, 9 Feb 2014 16:10:16 +0000
4Subject: Give the ssh-askpass-gnome window a default icon 4Subject: Give the ssh-askpass-gnome window a default icon
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch
index b3c437194..3f616af7d 100644
--- a/debian/patches/gssapi.patch
+++ b/debian/patches/gssapi.patch
@@ -1,4 +1,4 @@
1From 06879e71614170580ffa7568ec5c009f60a9d084 Mon Sep 17 00:00:00 2001 1From 5d3dc7ea4c96cab9483d5389a3b04163771fdee2 Mon Sep 17 00:00:00 2001
2From: Simon Wilkinson <simon@sxw.org.uk> 2From: Simon Wilkinson <simon@sxw.org.uk>
3Date: Sun, 9 Feb 2014 16:09:48 +0000 3Date: Sun, 9 Feb 2014 16:09:48 +0000
4Subject: GSSAPI key exchange support 4Subject: GSSAPI key exchange support
@@ -31,7 +31,7 @@ Patch-Name: gssapi.patch
31 configure.ac | 24 ++++ 31 configure.ac | 24 ++++
32 gss-genr.c | 275 ++++++++++++++++++++++++++++++++++++++++++++- 32 gss-genr.c | 275 ++++++++++++++++++++++++++++++++++++++++++++-
33 gss-serv-krb5.c | 85 ++++++++++++-- 33 gss-serv-krb5.c | 85 ++++++++++++--
34 gss-serv.c | 221 +++++++++++++++++++++++++++++++----- 34 gss-serv.c | 185 +++++++++++++++++++++++++++---
35 kex.c | 16 +++ 35 kex.c | 16 +++
36 kex.h | 14 +++ 36 kex.h | 14 +++
37 kexgssc.c | 336 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 37 kexgssc.c | 336 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -42,18 +42,18 @@ Patch-Name: gssapi.patch
42 monitor_wrap.h | 4 +- 42 monitor_wrap.h | 4 +-
43 readconf.c | 42 +++++++ 43 readconf.c | 42 +++++++
44 readconf.h | 5 + 44 readconf.h | 5 +
45 servconf.c | 38 ++++++- 45 servconf.c | 28 ++++-
46 servconf.h | 3 + 46 servconf.h | 2 +
47 ssh-gss.h | 41 ++++++- 47 ssh-gss.h | 41 ++++++-
48 ssh_config | 2 + 48 ssh_config | 2 +
49 ssh_config.5 | 34 +++++- 49 ssh_config.5 | 34 +++++-
50 sshconnect2.c | 124 +++++++++++++++++++- 50 sshconnect2.c | 124 +++++++++++++++++++-
51 sshd.c | 110 ++++++++++++++++++ 51 sshd.c | 110 ++++++++++++++++++
52 sshd_config | 2 + 52 sshd_config | 2 +
53 sshd_config.5 | 28 +++++ 53 sshd_config.5 | 11 ++
54 sshkey.c | 3 +- 54 sshkey.c | 3 +-
55 sshkey.h | 1 + 55 sshkey.h | 1 +
56 32 files changed, 2005 insertions(+), 60 deletions(-) 56 32 files changed, 1955 insertions(+), 46 deletions(-)
57 create mode 100644 ChangeLog.gssapi 57 create mode 100644 ChangeLog.gssapi
58 create mode 100644 kexgssc.c 58 create mode 100644 kexgssc.c
59 create mode 100644 kexgsss.c 59 create mode 100644 kexgsss.c
@@ -359,7 +359,7 @@ index 7177962..3f49bdc 100644
359 #endif 359 #endif
360 &method_passwd, 360 &method_passwd,
361diff --git a/clientloop.c b/clientloop.c 361diff --git a/clientloop.c b/clientloop.c
362index a9c8a90..7df9413 100644 362index dc0e557..77d5498 100644
363--- a/clientloop.c 363--- a/clientloop.c
364+++ b/clientloop.c 364+++ b/clientloop.c
365@@ -114,6 +114,10 @@ 365@@ -114,6 +114,10 @@
@@ -373,7 +373,7 @@ index a9c8a90..7df9413 100644
373 /* import options */ 373 /* import options */
374 extern Options options; 374 extern Options options;
375 375
376@@ -1596,6 +1600,15 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) 376@@ -1609,6 +1613,15 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
377 /* Do channel operations unless rekeying in progress. */ 377 /* Do channel operations unless rekeying in progress. */
378 if (!rekeying) { 378 if (!rekeying) {
379 channel_after_select(readset, writeset); 379 channel_after_select(readset, writeset);
@@ -414,10 +414,10 @@ index 7e7e38e..6c7de98 100644
414 #undef USE_SOLARIS_PROCESS_CONTRACTS 414 #undef USE_SOLARIS_PROCESS_CONTRACTS
415 415
416diff --git a/configure.ac b/configure.ac 416diff --git a/configure.ac b/configure.ac
417index b4d6598..216a9fd 100644 417index bb0095f..df21693 100644
418--- a/configure.ac 418--- a/configure.ac
419+++ b/configure.ac 419+++ b/configure.ac
420@@ -620,6 +620,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) 420@@ -625,6 +625,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
421 [Use tunnel device compatibility to OpenBSD]) 421 [Use tunnel device compatibility to OpenBSD])
422 AC_DEFINE([SSH_TUN_PREPEND_AF], [1], 422 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
423 [Prepend the address family to IP tunnel traffic]) 423 [Prepend the address family to IP tunnel traffic])
@@ -449,7 +449,7 @@ index b4d6598..216a9fd 100644
449 AC_CHECK_DECL([AU_IPv4], [], 449 AC_CHECK_DECL([AU_IPv4], [],
450 AC_DEFINE([AU_IPv4], [0], [System only supports IPv4 audit records]) 450 AC_DEFINE([AU_IPv4], [0], [System only supports IPv4 audit records])
451diff --git a/gss-genr.c b/gss-genr.c 451diff --git a/gss-genr.c b/gss-genr.c
452index 60ac65f..5610f0b 100644 452index d617d60..b4eca3f 100644
453--- a/gss-genr.c 453--- a/gss-genr.c
454+++ b/gss-genr.c 454+++ b/gss-genr.c
455@@ -1,7 +1,7 @@ 455@@ -1,7 +1,7 @@
@@ -461,7 +461,7 @@ index 60ac65f..5610f0b 100644
461 * 461 *
462 * Redistribution and use in source and binary forms, with or without 462 * Redistribution and use in source and binary forms, with or without
463 * modification, are permitted provided that the following conditions 463 * modification, are permitted provided that the following conditions
464@@ -40,12 +40,167 @@ 464@@ -41,12 +41,167 @@
465 #include "buffer.h" 465 #include "buffer.h"
466 #include "log.h" 466 #include "log.h"
467 #include "ssh2.h" 467 #include "ssh2.h"
@@ -629,7 +629,7 @@ index 60ac65f..5610f0b 100644
629 /* Check that the OID in a data stream matches that in the context */ 629 /* Check that the OID in a data stream matches that in the context */
630 int 630 int
631 ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) 631 ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len)
632@@ -198,7 +353,7 @@ ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok, 632@@ -199,7 +354,7 @@ ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok,
633 } 633 }
634 634
635 ctx->major = gss_init_sec_context(&ctx->minor, 635 ctx->major = gss_init_sec_context(&ctx->minor,
@@ -638,7 +638,7 @@ index 60ac65f..5610f0b 100644
638 GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG | deleg_flag, 638 GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG | deleg_flag,
639 0, NULL, recv_tok, NULL, send_tok, flags, NULL); 639 0, NULL, recv_tok, NULL, send_tok, flags, NULL);
640 640
641@@ -228,8 +383,42 @@ ssh_gssapi_import_name(Gssctxt *ctx, const char *host) 641@@ -229,8 +384,42 @@ ssh_gssapi_import_name(Gssctxt *ctx, const char *host)
642 } 642 }
643 643
644 OM_uint32 644 OM_uint32
@@ -681,7 +681,7 @@ index 60ac65f..5610f0b 100644
681 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, 681 if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context,
682 GSS_C_QOP_DEFAULT, buffer, hash))) 682 GSS_C_QOP_DEFAULT, buffer, hash)))
683 ssh_gssapi_error(ctx); 683 ssh_gssapi_error(ctx);
684@@ -237,6 +426,19 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) 684@@ -238,6 +427,19 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash)
685 return (ctx->major); 685 return (ctx->major);
686 } 686 }
687 687
@@ -701,7 +701,7 @@ index 60ac65f..5610f0b 100644
701 void 701 void
702 ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, 702 ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service,
703 const char *context) 703 const char *context)
704@@ -250,11 +452,16 @@ ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service, 704@@ -251,11 +453,16 @@ ssh_gssapi_buildmic(Buffer *b, const char *user, const char *service,
705 } 705 }
706 706
707 int 707 int
@@ -719,7 +719,7 @@ index 60ac65f..5610f0b 100644
719 719
720 /* RFC 4462 says we MUST NOT do SPNEGO */ 720 /* RFC 4462 says we MUST NOT do SPNEGO */
721 if (oid->length == spnego_oid.length && 721 if (oid->length == spnego_oid.length &&
722@@ -264,6 +471,10 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) 722@@ -265,6 +472,10 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host)
723 ssh_gssapi_build_ctx(ctx); 723 ssh_gssapi_build_ctx(ctx);
724 ssh_gssapi_set_oid(*ctx, oid); 724 ssh_gssapi_set_oid(*ctx, oid);
725 major = ssh_gssapi_import_name(*ctx, host); 725 major = ssh_gssapi_import_name(*ctx, host);
@@ -730,7 +730,7 @@ index 60ac65f..5610f0b 100644
730 if (!GSS_ERROR(major)) { 730 if (!GSS_ERROR(major)) {
731 major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token, 731 major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token,
732 NULL); 732 NULL);
733@@ -273,10 +484,66 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) 733@@ -274,10 +485,66 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host)
734 GSS_C_NO_BUFFER); 734 GSS_C_NO_BUFFER);
735 } 735 }
736 736
@@ -925,11 +925,11 @@ index 795992d..fd8b371 100644
925 925
926 #endif /* KRB5 */ 926 #endif /* KRB5 */
927diff --git a/gss-serv.c b/gss-serv.c 927diff --git a/gss-serv.c b/gss-serv.c
928index e7b8c52..539862d 100644 928index 53993d6..2f6baf7 100644
929--- a/gss-serv.c 929--- a/gss-serv.c
930+++ b/gss-serv.c 930+++ b/gss-serv.c
931@@ -1,7 +1,7 @@ 931@@ -1,7 +1,7 @@
932 /* $OpenBSD: gss-serv.c,v 1.28 2015/01/20 23:14:00 deraadt Exp $ */ 932 /* $OpenBSD: gss-serv.c,v 1.29 2015/05/22 03:50:02 djm Exp $ */
933 933
934 /* 934 /*
935- * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. 935- * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -937,11 +937,10 @@ index e7b8c52..539862d 100644
937 * 937 *
938 * Redistribution and use in source and binary forms, with or without 938 * Redistribution and use in source and binary forms, with or without
939 * modification, are permitted provided that the following conditions 939 * modification, are permitted provided that the following conditions
940@@ -44,15 +44,21 @@ 940@@ -45,17 +45,22 @@
941 #include "channels.h"
942 #include "session.h" 941 #include "session.h"
943 #include "misc.h" 942 #include "misc.h"
944+#include "servconf.h" 943 #include "servconf.h"
945+#include "uidswap.h" 944+#include "uidswap.h"
946 945
947 #include "ssh-gss.h" 946 #include "ssh-gss.h"
@@ -949,6 +948,8 @@ index e7b8c52..539862d 100644
949+ 948+
950+extern ServerOptions options; 949+extern ServerOptions options;
951 950
951 extern ServerOptions options;
952
952 static ssh_gssapi_client gssapi_client = 953 static ssh_gssapi_client gssapi_client =
953 { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER, 954 { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER,
954- GSS_C_NO_CREDENTIAL, NULL, {NULL, NULL, NULL, NULL}}; 955- GSS_C_NO_CREDENTIAL, NULL, {NULL, NULL, NULL, NULL}};
@@ -961,54 +962,7 @@ index e7b8c52..539862d 100644
961 962
962 #ifdef KRB5 963 #ifdef KRB5
963 extern ssh_gssapi_mech gssapi_kerberos_mech; 964 extern ssh_gssapi_mech gssapi_kerberos_mech;
964@@ -99,25 +105,32 @@ ssh_gssapi_acquire_cred(Gssctxt *ctx) 965@@ -142,6 +147,29 @@ ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid)
965 char lname[NI_MAXHOST];
966 gss_OID_set oidset;
967
968- gss_create_empty_oid_set(&status, &oidset);
969- gss_add_oid_set_member(&status, ctx->oid, &oidset);
970+ if (options.gss_strict_acceptor) {
971+ gss_create_empty_oid_set(&status, &oidset);
972+ gss_add_oid_set_member(&status, ctx->oid, &oidset);
973
974- if (gethostname(lname, sizeof(lname))) {
975- gss_release_oid_set(&status, &oidset);
976- return (-1);
977- }
978+ if (gethostname(lname, sizeof(lname))) {
979+ gss_release_oid_set(&status, &oidset);
980+ return (-1);
981+ }
982+
983+ if (GSS_ERROR(ssh_gssapi_import_name(ctx, lname))) {
984+ gss_release_oid_set(&status, &oidset);
985+ return (ctx->major);
986+ }
987+
988+ if ((ctx->major = gss_acquire_cred(&ctx->minor,
989+ ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds,
990+ NULL, NULL)))
991+ ssh_gssapi_error(ctx);
992
993- if (GSS_ERROR(ssh_gssapi_import_name(ctx, lname))) {
994 gss_release_oid_set(&status, &oidset);
995 return (ctx->major);
996+ } else {
997+ ctx->name = GSS_C_NO_NAME;
998+ ctx->creds = GSS_C_NO_CREDENTIAL;
999 }
1000-
1001- if ((ctx->major = gss_acquire_cred(&ctx->minor,
1002- ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds, NULL, NULL)))
1003- ssh_gssapi_error(ctx);
1004-
1005- gss_release_oid_set(&status, &oidset);
1006- return (ctx->major);
1007+ return GSS_S_COMPLETE;
1008 }
1009
1010 /* Privileged */
1011@@ -132,6 +145,29 @@ ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid)
1012 } 966 }
1013 967
1014 /* Unprivileged */ 968 /* Unprivileged */
@@ -1038,7 +992,7 @@ index e7b8c52..539862d 100644
1038 void 992 void
1039 ssh_gssapi_supported_oids(gss_OID_set *oidset) 993 ssh_gssapi_supported_oids(gss_OID_set *oidset)
1040 { 994 {
1041@@ -141,7 +177,9 @@ ssh_gssapi_supported_oids(gss_OID_set *oidset) 995@@ -151,7 +179,9 @@ ssh_gssapi_supported_oids(gss_OID_set *oidset)
1042 gss_OID_set supported; 996 gss_OID_set supported;
1043 997
1044 gss_create_empty_oid_set(&min_status, oidset); 998 gss_create_empty_oid_set(&min_status, oidset);
@@ -1049,7 +1003,7 @@ index e7b8c52..539862d 100644
1049 1003
1050 while (supported_mechs[i]->name != NULL) { 1004 while (supported_mechs[i]->name != NULL) {
1051 if (GSS_ERROR(gss_test_oid_set_member(&min_status, 1005 if (GSS_ERROR(gss_test_oid_set_member(&min_status,
1052@@ -267,8 +305,48 @@ OM_uint32 1006@@ -277,8 +307,48 @@ OM_uint32
1053 ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) 1007 ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client)
1054 { 1008 {
1055 int i = 0; 1009 int i = 0;
@@ -1074,8 +1028,7 @@ index e7b8c52..539862d 100644
1074+ 1028+
1075+ ctx->major = gss_compare_name(&ctx->minor, client->name, 1029+ ctx->major = gss_compare_name(&ctx->minor, client->name,
1076+ new_name, &equal); 1030+ new_name, &equal);
1077 1031+
1078- gss_buffer_desc ename;
1079+ if (GSS_ERROR(ctx->major)) { 1032+ if (GSS_ERROR(ctx->major)) {
1080+ ssh_gssapi_error(ctx); 1033+ ssh_gssapi_error(ctx);
1081+ return (ctx->major); 1034+ return (ctx->major);
@@ -1085,7 +1038,8 @@ index e7b8c52..539862d 100644
1085+ debug("Rekeyed credentials have different name"); 1038+ debug("Rekeyed credentials have different name");
1086+ return GSS_S_COMPLETE; 1039+ return GSS_S_COMPLETE;
1087+ } 1040+ }
1088+ 1041
1042- gss_buffer_desc ename;
1089+ debug("Marking rekeyed credentials for export"); 1043+ debug("Marking rekeyed credentials for export");
1090+ 1044+
1091+ gss_release_name(&ctx->minor, &client->name); 1045+ gss_release_name(&ctx->minor, &client->name);
@@ -1099,7 +1053,7 @@ index e7b8c52..539862d 100644
1099 1053
1100 client->mech = NULL; 1054 client->mech = NULL;
1101 1055
1102@@ -283,6 +361,13 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) 1056@@ -293,6 +363,13 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client)
1103 if (client->mech == NULL) 1057 if (client->mech == NULL)
1104 return GSS_S_FAILURE; 1058 return GSS_S_FAILURE;
1105 1059
@@ -1113,7 +1067,7 @@ index e7b8c52..539862d 100644
1113 if ((ctx->major = gss_display_name(&ctx->minor, ctx->client, 1067 if ((ctx->major = gss_display_name(&ctx->minor, ctx->client,
1114 &client->displayname, NULL))) { 1068 &client->displayname, NULL))) {
1115 ssh_gssapi_error(ctx); 1069 ssh_gssapi_error(ctx);
1116@@ -300,6 +385,8 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) 1070@@ -310,6 +387,8 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client)
1117 return (ctx->major); 1071 return (ctx->major);
1118 } 1072 }
1119 1073
@@ -1122,7 +1076,7 @@ index e7b8c52..539862d 100644
1122 /* We can't copy this structure, so we just move the pointer to it */ 1076 /* We can't copy this structure, so we just move the pointer to it */
1123 client->creds = ctx->client_creds; 1077 client->creds = ctx->client_creds;
1124 ctx->client_creds = GSS_C_NO_CREDENTIAL; 1078 ctx->client_creds = GSS_C_NO_CREDENTIAL;
1125@@ -347,7 +434,7 @@ ssh_gssapi_do_child(char ***envp, u_int *envsizep) 1079@@ -357,7 +436,7 @@ ssh_gssapi_do_child(char ***envp, u_int *envsizep)
1126 1080
1127 /* Privileged */ 1081 /* Privileged */
1128 int 1082 int
@@ -1131,7 +1085,7 @@ index e7b8c52..539862d 100644
1131 { 1085 {
1132 OM_uint32 lmin; 1086 OM_uint32 lmin;
1133 1087
1134@@ -357,9 +444,11 @@ ssh_gssapi_userok(char *user) 1088@@ -367,9 +446,11 @@ ssh_gssapi_userok(char *user)
1135 return 0; 1089 return 0;
1136 } 1090 }
1137 if (gssapi_client.mech && gssapi_client.mech->userok) 1091 if (gssapi_client.mech && gssapi_client.mech->userok)
@@ -1145,7 +1099,7 @@ index e7b8c52..539862d 100644
1145 /* Destroy delegated credentials if userok fails */ 1099 /* Destroy delegated credentials if userok fails */
1146 gss_release_buffer(&lmin, &gssapi_client.displayname); 1100 gss_release_buffer(&lmin, &gssapi_client.displayname);
1147 gss_release_buffer(&lmin, &gssapi_client.exportedname); 1101 gss_release_buffer(&lmin, &gssapi_client.exportedname);
1148@@ -373,14 +462,90 @@ ssh_gssapi_userok(char *user) 1102@@ -383,14 +464,90 @@ ssh_gssapi_userok(char *user)
1149 return (0); 1103 return (0);
1150 } 1104 }
1151 1105
@@ -1243,7 +1197,7 @@ index e7b8c52..539862d 100644
1243 1197
1244 #endif 1198 #endif
1245diff --git a/kex.c b/kex.c 1199diff --git a/kex.c b/kex.c
1246index 8c2b001..be938ad 100644 1200index dbc55ef..4d8e6f5 100644
1247--- a/kex.c 1201--- a/kex.c
1248+++ b/kex.c 1202+++ b/kex.c
1249@@ -55,6 +55,10 @@ 1203@@ -55,6 +55,10 @@
@@ -1966,7 +1920,7 @@ index 0000000..0847469
1966+} 1920+}
1967+#endif /* GSSAPI */ 1921+#endif /* GSSAPI */
1968diff --git a/monitor.c b/monitor.c 1922diff --git a/monitor.c b/monitor.c
1969index bab6ce8..a2027e5 100644 1923index b410965..bdc2972 100644
1970--- a/monitor.c 1924--- a/monitor.c
1971+++ b/monitor.c 1925+++ b/monitor.c
1972@@ -157,6 +157,8 @@ int mm_answer_gss_setup_ctx(int, Buffer *); 1926@@ -157,6 +157,8 @@ int mm_answer_gss_setup_ctx(int, Buffer *);
@@ -2019,7 +1973,7 @@ index bab6ce8..a2027e5 100644
2019 } else { 1973 } else {
2020 mon_dispatch = mon_dispatch_postauth15; 1974 mon_dispatch = mon_dispatch_postauth15;
2021 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); 1975 monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1);
2022@@ -1860,6 +1877,13 @@ monitor_apply_keystate(struct monitor *pmonitor) 1976@@ -1864,6 +1881,13 @@ monitor_apply_keystate(struct monitor *pmonitor)
2023 # endif 1977 # endif
2024 #endif /* WITH_OPENSSL */ 1978 #endif /* WITH_OPENSSL */
2025 kex->kex[KEX_C25519_SHA256] = kexc25519_server; 1979 kex->kex[KEX_C25519_SHA256] = kexc25519_server;
@@ -2033,7 +1987,7 @@ index bab6ce8..a2027e5 100644
2033 kex->load_host_public_key=&get_hostkey_public_by_type; 1987 kex->load_host_public_key=&get_hostkey_public_by_type;
2034 kex->load_host_private_key=&get_hostkey_private_by_type; 1988 kex->load_host_private_key=&get_hostkey_private_by_type;
2035 kex->host_key_index=&get_hostkey_index; 1989 kex->host_key_index=&get_hostkey_index;
2036@@ -1959,6 +1983,9 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m) 1990@@ -1963,6 +1987,9 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m)
2037 OM_uint32 major; 1991 OM_uint32 major;
2038 u_int len; 1992 u_int len;
2039 1993
@@ -2043,7 +1997,7 @@ index bab6ce8..a2027e5 100644
2043 goid.elements = buffer_get_string(m, &len); 1997 goid.elements = buffer_get_string(m, &len);
2044 goid.length = len; 1998 goid.length = len;
2045 1999
2046@@ -1986,6 +2013,9 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) 2000@@ -1990,6 +2017,9 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2047 OM_uint32 flags = 0; /* GSI needs this */ 2001 OM_uint32 flags = 0; /* GSI needs this */
2048 u_int len; 2002 u_int len;
2049 2003
@@ -2053,7 +2007,7 @@ index bab6ce8..a2027e5 100644
2053 in.value = buffer_get_string(m, &len); 2007 in.value = buffer_get_string(m, &len);
2054 in.length = len; 2008 in.length = len;
2055 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags); 2009 major = ssh_gssapi_accept_ctx(gsscontext, &in, &out, &flags);
2056@@ -2003,6 +2033,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) 2010@@ -2007,6 +2037,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m)
2057 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); 2011 monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0);
2058 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); 2012 monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1);
2059 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); 2013 monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1);
@@ -2061,7 +2015,7 @@ index bab6ce8..a2027e5 100644
2061 } 2015 }
2062 return (0); 2016 return (0);
2063 } 2017 }
2064@@ -2014,6 +2045,9 @@ mm_answer_gss_checkmic(int sock, Buffer *m) 2018@@ -2018,6 +2049,9 @@ mm_answer_gss_checkmic(int sock, Buffer *m)
2065 OM_uint32 ret; 2019 OM_uint32 ret;
2066 u_int len; 2020 u_int len;
2067 2021
@@ -2071,7 +2025,7 @@ index bab6ce8..a2027e5 100644
2071 gssbuf.value = buffer_get_string(m, &len); 2025 gssbuf.value = buffer_get_string(m, &len);
2072 gssbuf.length = len; 2026 gssbuf.length = len;
2073 mic.value = buffer_get_string(m, &len); 2027 mic.value = buffer_get_string(m, &len);
2074@@ -2040,7 +2074,11 @@ mm_answer_gss_userok(int sock, Buffer *m) 2028@@ -2044,7 +2078,11 @@ mm_answer_gss_userok(int sock, Buffer *m)
2075 { 2029 {
2076 int authenticated; 2030 int authenticated;
2077 2031
@@ -2084,7 +2038,7 @@ index bab6ce8..a2027e5 100644
2084 2038
2085 buffer_clear(m); 2039 buffer_clear(m);
2086 buffer_put_int(m, authenticated); 2040 buffer_put_int(m, authenticated);
2087@@ -2053,5 +2091,73 @@ mm_answer_gss_userok(int sock, Buffer *m) 2041@@ -2057,5 +2095,73 @@ mm_answer_gss_userok(int sock, Buffer *m)
2088 /* Monitor loop will terminate if authenticated */ 2042 /* Monitor loop will terminate if authenticated */
2089 return (authenticated); 2043 return (authenticated);
2090 } 2044 }
@@ -2173,10 +2127,10 @@ index 93b8b66..bc50ade 100644
2173 2127
2174 struct mm_master; 2128 struct mm_master;
2175diff --git a/monitor_wrap.c b/monitor_wrap.c 2129diff --git a/monitor_wrap.c b/monitor_wrap.c
2176index b379f05..b667218 100644 2130index e6217b3..71e7c08 100644
2177--- a/monitor_wrap.c 2131--- a/monitor_wrap.c
2178+++ b/monitor_wrap.c 2132+++ b/monitor_wrap.c
2179@@ -1068,7 +1068,7 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) 2133@@ -1069,7 +1069,7 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic)
2180 } 2134 }
2181 2135
2182 int 2136 int
@@ -2185,7 +2139,7 @@ index b379f05..b667218 100644
2185 { 2139 {
2186 Buffer m; 2140 Buffer m;
2187 int authenticated = 0; 2141 int authenticated = 0;
2188@@ -1085,5 +1085,50 @@ mm_ssh_gssapi_userok(char *user) 2142@@ -1086,5 +1086,50 @@ mm_ssh_gssapi_userok(char *user)
2189 debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); 2143 debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not ");
2190 return (authenticated); 2144 return (authenticated);
2191 } 2145 }
@@ -2237,7 +2191,7 @@ index b379f05..b667218 100644
2237 #endif /* GSSAPI */ 2191 #endif /* GSSAPI */
2238 2192
2239diff --git a/monitor_wrap.h b/monitor_wrap.h 2193diff --git a/monitor_wrap.h b/monitor_wrap.h
2240index e18784a..0c770e8 100644 2194index de4a08f..9758290 100644
2241--- a/monitor_wrap.h 2195--- a/monitor_wrap.h
2242+++ b/monitor_wrap.h 2196+++ b/monitor_wrap.h
2243@@ -58,8 +58,10 @@ BIGNUM *mm_auth_rsa_generate_challenge(Key *); 2197@@ -58,8 +58,10 @@ BIGNUM *mm_auth_rsa_generate_challenge(Key *);
@@ -2253,7 +2207,7 @@ index e18784a..0c770e8 100644
2253 2207
2254 #ifdef USE_PAM 2208 #ifdef USE_PAM
2255diff --git a/readconf.c b/readconf.c 2209diff --git a/readconf.c b/readconf.c
2256index 42a2961..254dbce 100644 2210index db7d0bb..68dac76 100644
2257--- a/readconf.c 2211--- a/readconf.c
2258+++ b/readconf.c 2212+++ b/readconf.c
2259@@ -147,6 +147,8 @@ typedef enum { 2213@@ -147,6 +147,8 @@ typedef enum {
@@ -2362,21 +2316,21 @@ index 576b9e3..ef39c4c 100644
2362 * authentication. */ 2316 * authentication. */
2363 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ 2317 int kbd_interactive_authentication; /* Try keyboard-interactive auth. */
2364diff --git a/servconf.c b/servconf.c 2318diff --git a/servconf.c b/servconf.c
2365index 3185462..f68c0d0 100644 2319index df93fc4..2f7f41e 100644
2366--- a/servconf.c 2320--- a/servconf.c
2367+++ b/servconf.c 2321+++ b/servconf.c
2368@@ -114,7 +114,10 @@ initialize_server_options(ServerOptions *options) 2322@@ -115,8 +115,10 @@ initialize_server_options(ServerOptions *options)
2369 options->kerberos_ticket_cleanup = -1; 2323 options->kerberos_ticket_cleanup = -1;
2370 options->kerberos_get_afs_token = -1; 2324 options->kerberos_get_afs_token = -1;
2371 options->gss_authentication=-1; 2325 options->gss_authentication=-1;
2372+ options->gss_keyex = -1; 2326+ options->gss_keyex = -1;
2373 options->gss_cleanup_creds = -1; 2327 options->gss_cleanup_creds = -1;
2374+ options->gss_strict_acceptor = -1; 2328 options->gss_strict_acceptor = -1;
2375+ options->gss_store_rekey = -1; 2329+ options->gss_store_rekey = -1;
2376 options->password_authentication = -1; 2330 options->password_authentication = -1;
2377 options->kbd_interactive_authentication = -1; 2331 options->kbd_interactive_authentication = -1;
2378 options->challenge_response_authentication = -1; 2332 options->challenge_response_authentication = -1;
2379@@ -269,8 +272,14 @@ fill_default_server_options(ServerOptions *options) 2333@@ -275,10 +277,14 @@ fill_default_server_options(ServerOptions *options)
2380 options->kerberos_get_afs_token = 0; 2334 options->kerberos_get_afs_token = 0;
2381 if (options->gss_authentication == -1) 2335 if (options->gss_authentication == -1)
2382 options->gss_authentication = 0; 2336 options->gss_authentication = 0;
@@ -2384,37 +2338,35 @@ index 3185462..f68c0d0 100644
2384+ options->gss_keyex = 0; 2338+ options->gss_keyex = 0;
2385 if (options->gss_cleanup_creds == -1) 2339 if (options->gss_cleanup_creds == -1)
2386 options->gss_cleanup_creds = 1; 2340 options->gss_cleanup_creds = 1;
2387+ if (options->gss_strict_acceptor == -1) 2341 if (options->gss_strict_acceptor == -1)
2342- options->gss_strict_acceptor = 0;
2388+ options->gss_strict_acceptor = 1; 2343+ options->gss_strict_acceptor = 1;
2389+ if (options->gss_store_rekey == -1) 2344+ if (options->gss_store_rekey == -1)
2390+ options->gss_store_rekey = 0; 2345+ options->gss_store_rekey = 0;
2391 if (options->password_authentication == -1) 2346 if (options->password_authentication == -1)
2392 options->password_authentication = 1; 2347 options->password_authentication = 1;
2393 if (options->kbd_interactive_authentication == -1) 2348 if (options->kbd_interactive_authentication == -1)
2394@@ -391,7 +400,9 @@ typedef enum { 2349@@ -401,6 +407,7 @@ typedef enum {
2395 sBanner, sUseDNS, sHostbasedAuthentication,
2396 sHostbasedUsesNameFromPacketOnly, sHostbasedAcceptedKeyTypes, 2350 sHostbasedUsesNameFromPacketOnly, sHostbasedAcceptedKeyTypes,
2397 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, 2351 sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile,
2398- sGssAuthentication, sGssCleanupCreds, sAcceptEnv, sPermitTunnel, 2352 sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor,
2399+ sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor,
2400+ sGssKeyEx, sGssStoreRekey, 2353+ sGssKeyEx, sGssStoreRekey,
2401+ sAcceptEnv, sPermitTunnel, 2354 sAcceptEnv, sPermitTunnel,
2402 sMatch, sPermitOpen, sForceCommand, sChrootDirectory, 2355 sMatch, sPermitOpen, sForceCommand, sChrootDirectory,
2403 sUsePrivilegeSeparation, sAllowAgentForwarding, 2356 sUsePrivilegeSeparation, sAllowAgentForwarding,
2404 sHostCertificate, 2357@@ -473,12 +480,20 @@ static struct {
2405@@ -462,10 +473,20 @@ static struct {
2406 #ifdef GSSAPI 2358 #ifdef GSSAPI
2407 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, 2359 { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL },
2408 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, 2360 { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL },
2409+ { "gssapicleanupcreds", sGssCleanupCreds, SSHCFG_GLOBAL }, 2361+ { "gssapicleanupcreds", sGssCleanupCreds, SSHCFG_GLOBAL },
2410+ { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL }, 2362 { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL },
2411+ { "gssapikeyexchange", sGssKeyEx, SSHCFG_GLOBAL }, 2363+ { "gssapikeyexchange", sGssKeyEx, SSHCFG_GLOBAL },
2412+ { "gssapistorecredentialsonrekey", sGssStoreRekey, SSHCFG_GLOBAL }, 2364+ { "gssapistorecredentialsonrekey", sGssStoreRekey, SSHCFG_GLOBAL },
2413 #else 2365 #else
2414 { "gssapiauthentication", sUnsupported, SSHCFG_ALL }, 2366 { "gssapiauthentication", sUnsupported, SSHCFG_ALL },
2415 { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL }, 2367 { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL },
2416+ { "gssapicleanupcreds", sUnsupported, SSHCFG_GLOBAL }, 2368+ { "gssapicleanupcreds", sUnsupported, SSHCFG_GLOBAL },
2417+ { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL }, 2369 { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL },
2418+ { "gssapikeyexchange", sUnsupported, SSHCFG_GLOBAL }, 2370+ { "gssapikeyexchange", sUnsupported, SSHCFG_GLOBAL },
2419+ { "gssapistorecredentialsonrekey", sUnsupported, SSHCFG_GLOBAL }, 2371+ { "gssapistorecredentialsonrekey", sUnsupported, SSHCFG_GLOBAL },
2420 #endif 2372 #endif
@@ -2423,7 +2375,7 @@ index 3185462..f68c0d0 100644
2423 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, 2375 { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL },
2424 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, 2376 { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL },
2425 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, 2377 { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL },
2426@@ -1166,10 +1187,22 @@ process_server_config_line(ServerOptions *options, char *line, 2378@@ -1214,6 +1229,10 @@ process_server_config_line(ServerOptions *options, char *line,
2427 intptr = &options->gss_authentication; 2379 intptr = &options->gss_authentication;
2428 goto parse_flag; 2380 goto parse_flag;
2429 2381
@@ -2434,11 +2386,10 @@ index 3185462..f68c0d0 100644
2434 case sGssCleanupCreds: 2386 case sGssCleanupCreds:
2435 intptr = &options->gss_cleanup_creds; 2387 intptr = &options->gss_cleanup_creds;
2436 goto parse_flag; 2388 goto parse_flag;
2389@@ -1222,6 +1241,10 @@ process_server_config_line(ServerOptions *options, char *line,
2390 intptr = &options->gss_strict_acceptor;
2391 goto parse_flag;
2437 2392
2438+ case sGssStrictAcceptor:
2439+ intptr = &options->gss_strict_acceptor;
2440+ goto parse_flag;
2441+
2442+ case sGssStoreRekey: 2393+ case sGssStoreRekey:
2443+ intptr = &options->gss_store_rekey; 2394+ intptr = &options->gss_store_rekey;
2444+ goto parse_flag; 2395+ goto parse_flag;
@@ -2446,7 +2397,7 @@ index 3185462..f68c0d0 100644
2446 case sPasswordAuthentication: 2397 case sPasswordAuthentication:
2447 intptr = &options->password_authentication; 2398 intptr = &options->password_authentication;
2448 goto parse_flag; 2399 goto parse_flag;
2449@@ -2125,7 +2158,10 @@ dump_config(ServerOptions *o) 2400@@ -2229,7 +2252,10 @@ dump_config(ServerOptions *o)
2450 #endif 2401 #endif
2451 #ifdef GSSAPI 2402 #ifdef GSSAPI
2452 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); 2403 dump_cfg_fmtint(sGssAuthentication, o->gss_authentication);
@@ -2458,16 +2409,16 @@ index 3185462..f68c0d0 100644
2458 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); 2409 dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication);
2459 dump_cfg_fmtint(sKbdInteractiveAuthentication, 2410 dump_cfg_fmtint(sKbdInteractiveAuthentication,
2460diff --git a/servconf.h b/servconf.h 2411diff --git a/servconf.h b/servconf.h
2461index 9922f0c..d2ed4d7 100644 2412index 606d80c..b99b270 100644
2462--- a/servconf.h 2413--- a/servconf.h
2463+++ b/servconf.h 2414+++ b/servconf.h
2464@@ -115,7 +115,10 @@ typedef struct { 2415@@ -117,8 +117,10 @@ typedef struct {
2465 int kerberos_get_afs_token; /* If true, try to get AFS token if 2416 int kerberos_get_afs_token; /* If true, try to get AFS token if
2466 * authenticated with Kerberos. */ 2417 * authenticated with Kerberos. */
2467 int gss_authentication; /* If true, permit GSSAPI authentication */ 2418 int gss_authentication; /* If true, permit GSSAPI authentication */
2468+ int gss_keyex; /* If true, permit GSSAPI key exchange */ 2419+ int gss_keyex; /* If true, permit GSSAPI key exchange */
2469 int gss_cleanup_creds; /* If true, destroy cred cache on logout */ 2420 int gss_cleanup_creds; /* If true, destroy cred cache on logout */
2470+ int gss_strict_acceptor; /* If true, restrict the GSSAPI acceptor name */ 2421 int gss_strict_acceptor; /* If true, restrict the GSSAPI acceptor name */
2471+ int gss_store_rekey; 2422+ int gss_store_rekey;
2472 int password_authentication; /* If true, permit password 2423 int password_authentication; /* If true, permit password
2473 * authentication. */ 2424 * authentication. */
@@ -2589,10 +2540,10 @@ index 03a228f..228e5ab 100644
2589 # CheckHostIP yes 2540 # CheckHostIP yes
2590 # AddressFamily any 2541 # AddressFamily any
2591diff --git a/ssh_config.5 b/ssh_config.5 2542diff --git a/ssh_config.5 b/ssh_config.5
2592index 140d0ba..4476171 100644 2543index 268a627..b840261 100644
2593--- a/ssh_config.5 2544--- a/ssh_config.5
2594+++ b/ssh_config.5 2545+++ b/ssh_config.5
2595@@ -743,11 +743,43 @@ Specifies whether user authentication based on GSSAPI is allowed. 2546@@ -744,11 +744,43 @@ Specifies whether user authentication based on GSSAPI is allowed.
2596 The default is 2547 The default is
2597 .Dq no . 2548 .Dq no .
2598 Note that this option applies to protocol version 2 only. 2549 Note that this option applies to protocol version 2 only.
@@ -2638,7 +2589,7 @@ index 140d0ba..4476171 100644
2638 Indicates that 2589 Indicates that
2639 .Xr ssh 1 2590 .Xr ssh 1
2640diff --git a/sshconnect2.c b/sshconnect2.c 2591diff --git a/sshconnect2.c b/sshconnect2.c
2641index ba56f64..faa8ec5 100644 2592index fcaed6b..44c89e6 100644
2642--- a/sshconnect2.c 2593--- a/sshconnect2.c
2643+++ b/sshconnect2.c 2594+++ b/sshconnect2.c
2644@@ -160,9 +160,34 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) 2595@@ -160,9 +160,34 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
@@ -2840,7 +2791,7 @@ index ba56f64..faa8ec5 100644
2840 2791
2841 int 2792 int
2842diff --git a/sshd.c b/sshd.c 2793diff --git a/sshd.c b/sshd.c
2843index e1c767c..cf38bae 100644 2794index 6f8c6f2..6b85e6c 100644
2844--- a/sshd.c 2795--- a/sshd.c
2845+++ b/sshd.c 2796+++ b/sshd.c
2846@@ -125,6 +125,10 @@ 2797@@ -125,6 +125,10 @@
@@ -2854,7 +2805,7 @@ index e1c767c..cf38bae 100644
2854 #ifndef O_NOCTTY 2805 #ifndef O_NOCTTY
2855 #define O_NOCTTY 0 2806 #define O_NOCTTY 0
2856 #endif 2807 #endif
2857@@ -1815,10 +1819,13 @@ main(int ac, char **av) 2808@@ -1823,10 +1827,13 @@ main(int ac, char **av)
2858 logit("Disabling protocol version 1. Could not load host key"); 2809 logit("Disabling protocol version 1. Could not load host key");
2859 options.protocol &= ~SSH_PROTO_1; 2810 options.protocol &= ~SSH_PROTO_1;
2860 } 2811 }
@@ -2868,9 +2819,9 @@ index e1c767c..cf38bae 100644
2868 if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) { 2819 if (!(options.protocol & (SSH_PROTO_1|SSH_PROTO_2))) {
2869 logit("sshd: no hostkeys available -- exiting."); 2820 logit("sshd: no hostkeys available -- exiting.");
2870 exit(1); 2821 exit(1);
2871@@ -2132,6 +2139,60 @@ main(int ac, char **av) 2822@@ -2141,6 +2148,60 @@ main(int ac, char **av)
2872 remote_ip, remote_port, 2823 remote_ip, remote_port, laddr, get_local_port());
2873 get_local_ipaddr(sock_in), get_local_port()); 2824 free(laddr);
2874 2825
2875+#ifdef USE_SECURITY_SESSION_API 2826+#ifdef USE_SECURITY_SESSION_API
2876+ /* 2827+ /*
@@ -2929,7 +2880,7 @@ index e1c767c..cf38bae 100644
2929 /* 2880 /*
2930 * We don't want to listen forever unless the other side 2881 * We don't want to listen forever unless the other side
2931 * successfully authenticates itself. So we set up an alarm which is 2882 * successfully authenticates itself. So we set up an alarm which is
2932@@ -2561,6 +2622,48 @@ do_ssh2_kex(void) 2883@@ -2570,6 +2631,48 @@ do_ssh2_kex(void)
2933 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( 2884 myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal(
2934 list_hostkey_types()); 2885 list_hostkey_types());
2935 2886
@@ -2978,7 +2929,7 @@ index e1c767c..cf38bae 100644
2978 /* start key exchange */ 2929 /* start key exchange */
2979 if ((r = kex_setup(active_state, myproposal)) != 0) 2930 if ((r = kex_setup(active_state, myproposal)) != 0)
2980 fatal("kex_setup: %s", ssh_err(r)); 2931 fatal("kex_setup: %s", ssh_err(r));
2981@@ -2575,6 +2678,13 @@ do_ssh2_kex(void) 2932@@ -2584,6 +2687,13 @@ do_ssh2_kex(void)
2982 # endif 2933 # endif
2983 #endif 2934 #endif
2984 kex->kex[KEX_C25519_SHA256] = kexc25519_server; 2935 kex->kex[KEX_C25519_SHA256] = kexc25519_server;
@@ -2993,7 +2944,7 @@ index e1c767c..cf38bae 100644
2993 kex->client_version_string=client_version_string; 2944 kex->client_version_string=client_version_string;
2994 kex->server_version_string=server_version_string; 2945 kex->server_version_string=server_version_string;
2995diff --git a/sshd_config b/sshd_config 2946diff --git a/sshd_config b/sshd_config
2996index c9042ac..a71ad19 100644 2947index cf7d8e1..1dfd0f1 100644
2997--- a/sshd_config 2948--- a/sshd_config
2998+++ b/sshd_config 2949+++ b/sshd_config
2999@@ -84,6 +84,8 @@ AuthorizedKeysFile .ssh/authorized_keys 2950@@ -84,6 +84,8 @@ AuthorizedKeysFile .ssh/authorized_keys
@@ -3006,10 +2957,10 @@ index c9042ac..a71ad19 100644
3006 # Set this to 'yes' to enable PAM authentication, account processing, 2957 # Set this to 'yes' to enable PAM authentication, account processing,
3007 # and session processing. If this is enabled, PAM authentication will 2958 # and session processing. If this is enabled, PAM authentication will
3008diff --git a/sshd_config.5 b/sshd_config.5 2959diff --git a/sshd_config.5 b/sshd_config.5
3009index 6dce0c7..0331496 100644 2960index 5ab4318..68424f1 100644
3010--- a/sshd_config.5 2961--- a/sshd_config.5
3011+++ b/sshd_config.5 2962+++ b/sshd_config.5
3012@@ -564,12 +564,40 @@ Specifies whether user authentication based on GSSAPI is allowed. 2963@@ -616,6 +616,12 @@ Specifies whether user authentication based on GSSAPI is allowed.
3013 The default is 2964 The default is
3014 .Dq no . 2965 .Dq no .
3015 Note that this option applies to protocol version 2 only. 2966 Note that this option applies to protocol version 2 only.
@@ -3022,26 +2973,10 @@ index 6dce0c7..0331496 100644
3022 .It Cm GSSAPICleanupCredentials 2973 .It Cm GSSAPICleanupCredentials
3023 Specifies whether to automatically destroy the user's credentials cache 2974 Specifies whether to automatically destroy the user's credentials cache
3024 on logout. 2975 on logout.
2976@@ -637,6 +643,11 @@ machine's default store.
2977 This facility is provided to assist with operation on multi homed machines.
3025 The default is 2978 The default is
3026 .Dq yes . 2979 .Dq yes .
3027 Note that this option applies to protocol version 2 only.
3028+.It Cm GSSAPIStrictAcceptorCheck
3029+Determines whether to be strict about the identity of the GSSAPI acceptor
3030+a client authenticates against. If
3031+.Dq yes
3032+then the client must authenticate against the
3033+.Pa host
3034+service on the current hostname. If
3035+.Dq no
3036+then the client may authenticate against any service key stored in the
3037+machine's default store. This facility is provided to assist with operation
3038+on multi homed machines.
3039+The default is
3040+.Dq yes .
3041+Note that this option applies only to protocol version 2 GSSAPI connections,
3042+and setting it to
3043+.Dq no
3044+may only work with recent Kerberos GSSAPI libraries.
3045+.It Cm GSSAPIStoreCredentialsOnRekey 2980+.It Cm GSSAPIStoreCredentialsOnRekey
3046+Controls whether the user's GSSAPI credentials should be updated following a 2981+Controls whether the user's GSSAPI credentials should be updated following a
3047+successful connection rekeying. This option can be used to accepted renewed 2982+successful connection rekeying. This option can be used to accepted renewed
@@ -3051,7 +2986,7 @@ index 6dce0c7..0331496 100644
3051 Specifies the key types that will be accepted for hostbased authentication 2986 Specifies the key types that will be accepted for hostbased authentication
3052 as a comma-separated pattern list. 2987 as a comma-separated pattern list.
3053diff --git a/sshkey.c b/sshkey.c 2988diff --git a/sshkey.c b/sshkey.c
3054index 4768790..cd5992e 100644 2989index cfe5980..2c87d80 100644
3055--- a/sshkey.c 2990--- a/sshkey.c
3056+++ b/sshkey.c 2991+++ b/sshkey.c
3057@@ -116,6 +116,7 @@ static const struct keytype keytypes[] = { 2992@@ -116,6 +116,7 @@ static const struct keytype keytypes[] = {
@@ -3072,7 +3007,7 @@ index 4768790..cd5992e 100644
3072 if ((certs_only && !kt->cert) || (plain_only && kt->cert)) 3007 if ((certs_only && !kt->cert) || (plain_only && kt->cert))
3073 continue; 3008 continue;
3074diff --git a/sshkey.h b/sshkey.h 3009diff --git a/sshkey.h b/sshkey.h
3075index 62c1c3e..9314e85 100644 3010index cdac0e2..b010b8e 100644
3076--- a/sshkey.h 3011--- a/sshkey.h
3077+++ b/sshkey.h 3012+++ b/sshkey.h
3078@@ -64,6 +64,7 @@ enum sshkey_types { 3013@@ -64,6 +64,7 @@ enum sshkey_types {
diff --git a/debian/patches/helpful-wait-terminate.patch b/debian/patches/helpful-wait-terminate.patch
index 6ea643210..ac8630b4c 100644
--- a/debian/patches/helpful-wait-terminate.patch
+++ b/debian/patches/helpful-wait-terminate.patch
@@ -1,4 +1,4 @@
1From 9a440da8025dbc120803ee09c2a7ac8c638d31c2 Mon Sep 17 00:00:00 2001 1From 5496170cd67abb653e385277bd83b69f1b10905d Mon Sep 17 00:00:00 2001
2From: Matthew Vernon <matthew@debian.org> 2From: Matthew Vernon <matthew@debian.org>
3Date: Sun, 9 Feb 2014 16:09:56 +0000 3Date: Sun, 9 Feb 2014 16:09:56 +0000
4Subject: Mention ~& when waiting for forwarded connections to terminate 4Subject: Mention ~& when waiting for forwarded connections to terminate
diff --git a/debian/patches/keepalive-extensions.patch b/debian/patches/keepalive-extensions.patch
index 0adfbd2b5..09c178db4 100644
--- a/debian/patches/keepalive-extensions.patch
+++ b/debian/patches/keepalive-extensions.patch
@@ -1,4 +1,4 @@
1From 7efad61f1e562f504a5ff3fb0ae90ac05a208e66 Mon Sep 17 00:00:00 2001 1From 02a61bcb045503a5f3f7e274ac1f4524e30f87c8 Mon Sep 17 00:00:00 2001
2From: Richard Kettlewell <rjk@greenend.org.uk> 2From: Richard Kettlewell <rjk@greenend.org.uk>
3Date: Sun, 9 Feb 2014 16:09:52 +0000 3Date: Sun, 9 Feb 2014 16:09:52 +0000
4Subject: Various keepalive extensions 4Subject: Various keepalive extensions
@@ -26,7 +26,7 @@ Patch-Name: keepalive-extensions.patch
26 3 files changed, 34 insertions(+), 4 deletions(-) 26 3 files changed, 34 insertions(+), 4 deletions(-)
27 27
28diff --git a/readconf.c b/readconf.c 28diff --git a/readconf.c b/readconf.c
29index 278fe15..1d2d596 100644 29index 85eea48..5c5890c 100644
30--- a/readconf.c 30--- a/readconf.c
31+++ b/readconf.c 31+++ b/readconf.c
32@@ -159,6 +159,7 @@ typedef enum { 32@@ -159,6 +159,7 @@ typedef enum {
@@ -72,7 +72,7 @@ index 278fe15..1d2d596 100644
72 options->server_alive_count_max = 3; 72 options->server_alive_count_max = 3;
73 if (options->control_master == -1) 73 if (options->control_master == -1)
74diff --git a/ssh_config.5 b/ssh_config.5 74diff --git a/ssh_config.5 b/ssh_config.5
75index dd35dd8..250c0d1 100644 75index f7510b6..21d3e94 100644
76--- a/ssh_config.5 76--- a/ssh_config.5
77+++ b/ssh_config.5 77+++ b/ssh_config.5
78@@ -233,8 +233,12 @@ Valid arguments are 78@@ -233,8 +233,12 @@ Valid arguments are
@@ -89,7 +89,7 @@ index dd35dd8..250c0d1 100644
89 The argument must be 89 The argument must be
90 .Dq yes 90 .Dq yes
91 or 91 or
92@@ -1420,8 +1424,15 @@ from the server, 92@@ -1425,8 +1429,15 @@ from the server,
93 will send a message through the encrypted 93 will send a message through the encrypted
94 channel to request a response from the server. 94 channel to request a response from the server.
95 The default 95 The default
@@ -106,7 +106,7 @@ index dd35dd8..250c0d1 100644
106 .It Cm StreamLocalBindMask 106 .It Cm StreamLocalBindMask
107 Sets the octal file creation mode mask 107 Sets the octal file creation mode mask
108 .Pq umask 108 .Pq umask
109@@ -1487,6 +1498,12 @@ Specifies whether the system should send TCP keepalive messages to the 109@@ -1492,6 +1503,12 @@ Specifies whether the system should send TCP keepalive messages to the
110 other side. 110 other side.
111 If they are sent, death of the connection or crash of one 111 If they are sent, death of the connection or crash of one
112 of the machines will be properly noticed. 112 of the machines will be properly noticed.
@@ -120,10 +120,10 @@ index dd35dd8..250c0d1 100644
120 connections will die if the route is down temporarily, and some people 120 connections will die if the route is down temporarily, and some people
121 find it annoying. 121 find it annoying.
122diff --git a/sshd_config.5 b/sshd_config.5 122diff --git a/sshd_config.5 b/sshd_config.5
123index 0331496..d14576e 100644 123index 68424f1..1269bbd 100644
124--- a/sshd_config.5 124--- a/sshd_config.5
125+++ b/sshd_config.5 125+++ b/sshd_config.5
126@@ -1392,6 +1392,9 @@ This avoids infinitely hanging sessions. 126@@ -1443,6 +1443,9 @@ This avoids infinitely hanging sessions.
127 .Pp 127 .Pp
128 To disable TCP keepalive messages, the value should be set to 128 To disable TCP keepalive messages, the value should be set to
129 .Dq no . 129 .Dq no .
@@ -132,4 +132,4 @@ index 0331496..d14576e 100644
132+.Cm KeepAlive . 132+.Cm KeepAlive .
133 .It Cm TrustedUserCAKeys 133 .It Cm TrustedUserCAKeys
134 Specifies a file containing public keys of certificate authorities that are 134 Specifies a file containing public keys of certificate authorities that are
135 trusted to sign user certificates for authentication. 135 trusted to sign user certificates for authentication, or
diff --git a/debian/patches/lintian-symlink-pickiness.patch b/debian/patches/lintian-symlink-pickiness.patch
index 7aa035726..a285b4c69 100644
--- a/debian/patches/lintian-symlink-pickiness.patch
+++ b/debian/patches/lintian-symlink-pickiness.patch
@@ -1,4 +1,4 @@
1From 90fc009420a03c598d6f003df5466191ab4d12b2 Mon Sep 17 00:00:00 2001 1From 1237c8b43799156af8972c53c9ccc6b27140a284 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:08 +0000 3Date: Sun, 9 Feb 2014 16:10:08 +0000
4Subject: Fix picky lintian errors about slogin symlinks 4Subject: Fix picky lintian errors about slogin symlinks
diff --git a/debian/patches/mention-ssh-keygen-on-keychange.patch b/debian/patches/mention-ssh-keygen-on-keychange.patch
index 127ed9f9e..84804481e 100644
--- a/debian/patches/mention-ssh-keygen-on-keychange.patch
+++ b/debian/patches/mention-ssh-keygen-on-keychange.patch
@@ -1,4 +1,4 @@
1From aedcf9cb37f512b929ce895ba1fccc9ca39166b0 Mon Sep 17 00:00:00 2001 1From f948cb2d089ebf70b70db3d483d09ad97a0cf371 Mon Sep 17 00:00:00 2001
2From: Scott Moser <smoser@ubuntu.com> 2From: Scott Moser <smoser@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:10:03 +0000 3Date: Sun, 9 Feb 2014 16:10:03 +0000
4Subject: Mention ssh-keygen in ssh fingerprint changed warning 4Subject: Mention ssh-keygen in ssh fingerprint changed warning
@@ -13,7 +13,7 @@ Patch-Name: mention-ssh-keygen-on-keychange.patch
13 1 file changed, 6 insertions(+), 1 deletion(-) 13 1 file changed, 6 insertions(+), 1 deletion(-)
14 14
15diff --git a/sshconnect.c b/sshconnect.c 15diff --git a/sshconnect.c b/sshconnect.c
16index 0073c6e..6065dff 100644 16index 8adc943..0c9fc6c 100644
17--- a/sshconnect.c 17--- a/sshconnect.c
18+++ b/sshconnect.c 18+++ b/sshconnect.c
19@@ -1078,9 +1078,12 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, 19@@ -1078,9 +1078,12 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port,
diff --git a/debian/patches/no-openssl-version-status.patch b/debian/patches/no-openssl-version-status.patch
index f4d8bca66..73b16a368 100644
--- a/debian/patches/no-openssl-version-status.patch
+++ b/debian/patches/no-openssl-version-status.patch
@@ -1,4 +1,4 @@
1From 6b85aa42144010401906754b98f9876651669163 Mon Sep 17 00:00:00 2001 1From d3777c50b834493fcfbc3549e1dfb465c10abeec Mon Sep 17 00:00:00 2001
2From: Kurt Roeckx <kurt@roeckx.be> 2From: Kurt Roeckx <kurt@roeckx.be>
3Date: Sun, 9 Feb 2014 16:10:14 +0000 3Date: Sun, 9 Feb 2014 16:10:14 +0000
4Subject: Don't check the status field of the OpenSSL version 4Subject: Don't check the status field of the OpenSSL version
diff --git a/debian/patches/openbsd-docs.patch b/debian/patches/openbsd-docs.patch
index f5b96f4a1..97971707f 100644
--- a/debian/patches/openbsd-docs.patch
+++ b/debian/patches/openbsd-docs.patch
@@ -1,4 +1,4 @@
1From 96c2797aaa79d687e75dc56f40f7102131d87fb1 Mon Sep 17 00:00:00 2001 1From 3303a9d037ae9b62e5af01f467d8053cbd9c8410 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:09 +0000 3Date: Sun, 9 Feb 2014 16:10:09 +0000
4Subject: Adjust various OpenBSD-specific references in manual pages 4Subject: Adjust various OpenBSD-specific references in manual pages
@@ -88,7 +88,7 @@ index 9b93666..19bed1e 100644
88 The file format is described in 88 The file format is described in
89 .Xr moduli 5 . 89 .Xr moduli 5 .
90diff --git a/ssh.1 b/ssh.1 90diff --git a/ssh.1 b/ssh.1
91index 53c711a..04de6cf 100644 91index c84196f..c3e1266 100644
92--- a/ssh.1 92--- a/ssh.1
93+++ b/ssh.1 93+++ b/ssh.1
94@@ -766,6 +766,10 @@ Protocol 1 is restricted to using only RSA keys, 94@@ -766,6 +766,10 @@ Protocol 1 is restricted to using only RSA keys,
@@ -103,7 +103,7 @@ index 53c711a..04de6cf 100644
103 .Pp 103 .Pp
104 The file 104 The file
105diff --git a/sshd.8 b/sshd.8 105diff --git a/sshd.8 b/sshd.8
106index fc2154c..8dba6cf 100644 106index 5afd10f..2f4d4f3 100644
107--- a/sshd.8 107--- a/sshd.8
108+++ b/sshd.8 108+++ b/sshd.8
109@@ -67,7 +67,7 @@ over an insecure network. 109@@ -67,7 +67,7 @@ over an insecure network.
@@ -115,7 +115,7 @@ index fc2154c..8dba6cf 100644
115 It forks a new 115 It forks a new
116 daemon for each incoming connection. 116 daemon for each incoming connection.
117 The forked daemons handle 117 The forked daemons handle
118@@ -862,7 +862,7 @@ This file is for host-based authentication (see 118@@ -864,7 +864,7 @@ This file is for host-based authentication (see
119 .Xr ssh 1 ) . 119 .Xr ssh 1 ) .
120 It should only be writable by root. 120 It should only be writable by root.
121 .Pp 121 .Pp
@@ -124,7 +124,7 @@ index fc2154c..8dba6cf 100644
124 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange". 124 Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange".
125 The file format is described in 125 The file format is described in
126 .Xr moduli 5 . 126 .Xr moduli 5 .
127@@ -961,7 +961,6 @@ The content of this file is not sensitive; it can be world-readable. 127@@ -963,7 +963,6 @@ The content of this file is not sensitive; it can be world-readable.
128 .Xr ssh-keyscan 1 , 128 .Xr ssh-keyscan 1 ,
129 .Xr chroot 2 , 129 .Xr chroot 2 ,
130 .Xr hosts_access 5 , 130 .Xr hosts_access 5 ,
@@ -133,10 +133,10 @@ index fc2154c..8dba6cf 100644
133 .Xr sshd_config 5 , 133 .Xr sshd_config 5 ,
134 .Xr inetd 8 , 134 .Xr inetd 8 ,
135diff --git a/sshd_config.5 b/sshd_config.5 135diff --git a/sshd_config.5 b/sshd_config.5
136index ec58635..453d741 100644 136index a5afbc3..355b445 100644
137--- a/sshd_config.5 137--- a/sshd_config.5
138+++ b/sshd_config.5 138+++ b/sshd_config.5
139@@ -322,8 +322,7 @@ This option is only available for protocol version 2. 139@@ -374,8 +374,7 @@ This option is only available for protocol version 2.
140 By default, no banner is displayed. 140 By default, no banner is displayed.
141 .It Cm ChallengeResponseAuthentication 141 .It Cm ChallengeResponseAuthentication
142 Specifies whether challenge-response authentication is allowed (e.g. via 142 Specifies whether challenge-response authentication is allowed (e.g. via
diff --git a/debian/patches/package-versioning.patch b/debian/patches/package-versioning.patch
index 11674a915..6eb7b7243 100644
--- a/debian/patches/package-versioning.patch
+++ b/debian/patches/package-versioning.patch
@@ -1,4 +1,4 @@
1From 9f6aded97671ee8b9164f0524b3ac622d827dcde Mon Sep 17 00:00:00 2001 1From c3a4906692ddd85d8530d2fdb74822ae793f18db Mon Sep 17 00:00:00 2001
2From: Matthew Vernon <matthew@debian.org> 2From: Matthew Vernon <matthew@debian.org>
3Date: Sun, 9 Feb 2014 16:10:05 +0000 3Date: Sun, 9 Feb 2014 16:10:05 +0000
4Subject: Include the Debian version in our identification 4Subject: Include the Debian version in our identification
@@ -19,7 +19,7 @@ Patch-Name: package-versioning.patch
19 3 files changed, 9 insertions(+), 4 deletions(-) 19 3 files changed, 9 insertions(+), 4 deletions(-)
20 20
21diff --git a/sshconnect.c b/sshconnect.c 21diff --git a/sshconnect.c b/sshconnect.c
22index 6065dff..a6c9e20 100644 22index 0c9fc6c..988f4ef 100644
23--- a/sshconnect.c 23--- a/sshconnect.c
24+++ b/sshconnect.c 24+++ b/sshconnect.c
25@@ -524,10 +524,10 @@ send_client_banner(int connection_out, int minor1) 25@@ -524,10 +524,10 @@ send_client_banner(int connection_out, int minor1)
@@ -36,7 +36,7 @@ index 6065dff..a6c9e20 100644
36 if (roaming_atomicio(vwrite, connection_out, client_version_string, 36 if (roaming_atomicio(vwrite, connection_out, client_version_string,
37 strlen(client_version_string)) != strlen(client_version_string)) 37 strlen(client_version_string)) != strlen(client_version_string))
38diff --git a/sshd.c b/sshd.c 38diff --git a/sshd.c b/sshd.c
39index 3b4e97c..c362209 100644 39index 9ff9e8b..96e75c6 100644
40--- a/sshd.c 40--- a/sshd.c
41+++ b/sshd.c 41+++ b/sshd.c
42@@ -442,7 +442,7 @@ sshd_exchange_identification(int sock_in, int sock_out) 42@@ -442,7 +442,7 @@ sshd_exchange_identification(int sock_in, int sock_out)
@@ -49,11 +49,11 @@ index 3b4e97c..c362209 100644
49 options.version_addendum, newline); 49 options.version_addendum, newline);
50 50
51diff --git a/version.h b/version.h 51diff --git a/version.h b/version.h
52index dfe3ee9..94569ac 100644 52index b58fbe1..bff2b3b 100644
53--- a/version.h 53--- a/version.h
54+++ b/version.h 54+++ b/version.h
55@@ -3,4 +3,9 @@ 55@@ -3,4 +3,9 @@
56 #define SSH_VERSION "OpenSSH_6.8" 56 #define SSH_VERSION "OpenSSH_6.9"
57 57
58 #define SSH_PORTABLE "p1" 58 #define SSH_PORTABLE "p1"
59-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE 59-#define SSH_RELEASE SSH_VERSION SSH_PORTABLE
diff --git a/debian/patches/quieter-signals.patch b/debian/patches/quieter-signals.patch
index ff16b9850..ba16a9943 100644
--- a/debian/patches/quieter-signals.patch
+++ b/debian/patches/quieter-signals.patch
@@ -1,4 +1,4 @@
1From 34592a434851697537873eed1eb83ba0a640c5c8 Mon Sep 17 00:00:00 2001 1From 7c26c2f768c5d457c6645c1e1c077ba10a853626 Mon Sep 17 00:00:00 2001
2From: Peter Samuelson <peter@p12n.org> 2From: Peter Samuelson <peter@p12n.org>
3Date: Sun, 9 Feb 2014 16:09:55 +0000 3Date: Sun, 9 Feb 2014 16:09:55 +0000
4Subject: Reduce severity of "Killed by signal %d" 4Subject: Reduce severity of "Killed by signal %d"
@@ -22,10 +22,10 @@ Patch-Name: quieter-signals.patch
22 1 file changed, 4 insertions(+), 2 deletions(-) 22 1 file changed, 4 insertions(+), 2 deletions(-)
23 23
24diff --git a/clientloop.c b/clientloop.c 24diff --git a/clientloop.c b/clientloop.c
25index 156a196..45cef88 100644 25index 964353d..65f90b8 100644
26--- a/clientloop.c 26--- a/clientloop.c
27+++ b/clientloop.c 27+++ b/clientloop.c
28@@ -1707,8 +1707,10 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) 28@@ -1720,8 +1720,10 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id)
29 exit_status = 0; 29 exit_status = 0;
30 } 30 }
31 31
diff --git a/debian/patches/restore-tcp-wrappers.patch b/debian/patches/restore-tcp-wrappers.patch
index c9da26f7d..9e0435313 100644
--- a/debian/patches/restore-tcp-wrappers.patch
+++ b/debian/patches/restore-tcp-wrappers.patch
@@ -1,4 +1,4 @@
1From 7df209aed8ded9a6cab34e704576998786bdc890 Mon Sep 17 00:00:00 2001 1From ace4bfab52b31a2833636a243ba150fdf0f48293 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Tue, 7 Oct 2014 13:22:41 +0100 3Date: Tue, 7 Oct 2014 13:22:41 +0100
4Subject: Restore TCP wrappers support 4Subject: Restore TCP wrappers support
@@ -28,10 +28,10 @@ Patch-Name: restore-tcp-wrappers.patch
28 3 files changed, 89 insertions(+) 28 3 files changed, 89 insertions(+)
29 29
30diff --git a/configure.ac b/configure.ac 30diff --git a/configure.ac b/configure.ac
31index 216a9fd..5f606ea 100644 31index df21693..4d55c46 100644
32--- a/configure.ac 32--- a/configure.ac
33+++ b/configure.ac 33+++ b/configure.ac
34@@ -1440,6 +1440,62 @@ AC_ARG_WITH([skey], 34@@ -1448,6 +1448,62 @@ AC_ARG_WITH([skey],
35 ] 35 ]
36 ) 36 )
37 37
@@ -94,7 +94,7 @@ index 216a9fd..5f606ea 100644
94 # Check whether user wants to use ldns 94 # Check whether user wants to use ldns
95 LDNS_MSG="no" 95 LDNS_MSG="no"
96 AC_ARG_WITH(ldns, 96 AC_ARG_WITH(ldns,
97@@ -4920,6 +4976,7 @@ echo " KerberosV support: $KRB5_MSG" 97@@ -4928,6 +4984,7 @@ echo " KerberosV support: $KRB5_MSG"
98 echo " SELinux support: $SELINUX_MSG" 98 echo " SELinux support: $SELINUX_MSG"
99 echo " Smartcard support: $SCARD_MSG" 99 echo " Smartcard support: $SCARD_MSG"
100 echo " S/KEY support: $SKEY_MSG" 100 echo " S/KEY support: $SKEY_MSG"
@@ -103,10 +103,10 @@ index 216a9fd..5f606ea 100644
103 echo " libedit support: $LIBEDIT_MSG" 103 echo " libedit support: $LIBEDIT_MSG"
104 echo " Solaris process contract support: $SPC_MSG" 104 echo " Solaris process contract support: $SPC_MSG"
105diff --git a/sshd.8 b/sshd.8 105diff --git a/sshd.8 b/sshd.8
106index 3c53f7c..fc2154c 100644 106index dcf20f0..5afd10f 100644
107--- a/sshd.8 107--- a/sshd.8
108+++ b/sshd.8 108+++ b/sshd.8
109@@ -851,6 +851,12 @@ the user's home directory becomes accessible. 109@@ -853,6 +853,12 @@ the user's home directory becomes accessible.
110 This file should be writable only by the user, and need not be 110 This file should be writable only by the user, and need not be
111 readable by anyone else. 111 readable by anyone else.
112 .Pp 112 .Pp
@@ -119,7 +119,7 @@ index 3c53f7c..fc2154c 100644
119 .It Pa /etc/hosts.equiv 119 .It Pa /etc/hosts.equiv
120 This file is for host-based authentication (see 120 This file is for host-based authentication (see
121 .Xr ssh 1 ) . 121 .Xr ssh 1 ) .
122@@ -954,6 +960,7 @@ The content of this file is not sensitive; it can be world-readable. 122@@ -956,6 +962,7 @@ The content of this file is not sensitive; it can be world-readable.
123 .Xr ssh-keygen 1 , 123 .Xr ssh-keygen 1 ,
124 .Xr ssh-keyscan 1 , 124 .Xr ssh-keyscan 1 ,
125 .Xr chroot 2 , 125 .Xr chroot 2 ,
@@ -128,7 +128,7 @@ index 3c53f7c..fc2154c 100644
128 .Xr moduli 5 , 128 .Xr moduli 5 ,
129 .Xr sshd_config 5 , 129 .Xr sshd_config 5 ,
130diff --git a/sshd.c b/sshd.c 130diff --git a/sshd.c b/sshd.c
131index cf38bae..9cbe8c4 100644 131index 6b85e6c..186ad55 100644
132--- a/sshd.c 132--- a/sshd.c
133+++ b/sshd.c 133+++ b/sshd.c
134@@ -129,6 +129,13 @@ 134@@ -129,6 +129,13 @@
@@ -145,7 +145,7 @@ index cf38bae..9cbe8c4 100644
145 #ifndef O_NOCTTY 145 #ifndef O_NOCTTY
146 #define O_NOCTTY 0 146 #define O_NOCTTY 0
147 #endif 147 #endif
148@@ -2133,6 +2140,24 @@ main(int ac, char **av) 148@@ -2141,6 +2148,24 @@ main(int ac, char **av)
149 #ifdef SSH_AUDIT_EVENTS 149 #ifdef SSH_AUDIT_EVENTS
150 audit_connection_from(remote_ip, remote_port); 150 audit_connection_from(remote_ip, remote_port);
151 #endif 151 #endif
@@ -169,4 +169,4 @@ index cf38bae..9cbe8c4 100644
169+#endif /* LIBWRAP */ 169+#endif /* LIBWRAP */
170 170
171 /* Log the connection. */ 171 /* Log the connection. */
172 verbose("Connection from %s port %d on %s port %d", 172 laddr = get_local_ipaddr(sock_in);
diff --git a/debian/patches/scp-quoting.patch b/debian/patches/scp-quoting.patch
index 52e709112..fcf389dec 100644
--- a/debian/patches/scp-quoting.patch
+++ b/debian/patches/scp-quoting.patch
@@ -1,4 +1,4 @@
1From 4f55e60d2296feba17b473b2146a75debe29993a Mon Sep 17 00:00:00 2001 1From 9921536f50f50eb283dea50c77753eb0773d4258 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com> 2From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:59 +0000 3Date: Sun, 9 Feb 2014 16:09:59 +0000
4Subject: Adjust scp quoting in verbose mode 4Subject: Adjust scp quoting in verbose mode
@@ -17,7 +17,7 @@ Patch-Name: scp-quoting.patch
17 1 file changed, 10 insertions(+), 2 deletions(-) 17 1 file changed, 10 insertions(+), 2 deletions(-)
18 18
19diff --git a/scp.c b/scp.c 19diff --git a/scp.c b/scp.c
20index 887b014..afa4a2f 100644 20index 593fe89..e39294e 100644
21--- a/scp.c 21--- a/scp.c
22+++ b/scp.c 22+++ b/scp.c
23@@ -190,8 +190,16 @@ do_local_cmd(arglist *a) 23@@ -190,8 +190,16 @@ do_local_cmd(arglist *a)
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch
index da53671e3..617aa3b11 100644
--- a/debian/patches/selinux-role.patch
+++ b/debian/patches/selinux-role.patch
@@ -1,4 +1,4 @@
1From b9e97e15e25e4c836cb550213e3ee59b19096f9d Mon Sep 17 00:00:00 2001 1From 8b3e4a6ddad01fef62d153ac3b033de61a02696e Mon Sep 17 00:00:00 2001
2From: Manoj Srivastava <srivasta@debian.org> 2From: Manoj Srivastava <srivasta@debian.org>
3Date: Sun, 9 Feb 2014 16:09:49 +0000 3Date: Sun, 9 Feb 2014 16:09:49 +0000
4Subject: Handle SELinux authorisation roles 4Subject: Handle SELinux authorisation roles
@@ -32,7 +32,7 @@ Patch-Name: selinux-role.patch
32 16 files changed, 104 insertions(+), 31 deletions(-) 32 16 files changed, 104 insertions(+), 31 deletions(-)
33 33
34diff --git a/auth.h b/auth.h 34diff --git a/auth.h b/auth.h
35index db86037..4985cd8 100644 35index 8b27575..3c2222f 100644
36--- a/auth.h 36--- a/auth.h
37+++ b/auth.h 37+++ b/auth.h
38@@ -62,6 +62,7 @@ struct Authctxt { 38@@ -62,6 +62,7 @@ struct Authctxt {
@@ -113,7 +113,7 @@ index 3f49bdc..6eb3cc7 100644
113 if (auth2_setup_methods_lists(authctxt) != 0) 113 if (auth2_setup_methods_lists(authctxt) != 0)
114 packet_disconnect("no authentication methods enabled"); 114 packet_disconnect("no authentication methods enabled");
115diff --git a/monitor.c b/monitor.c 115diff --git a/monitor.c b/monitor.c
116index a2027e5..6ff05e4 100644 116index bdc2972..3a3d2f0 100644
117--- a/monitor.c 117--- a/monitor.c
118+++ b/monitor.c 118+++ b/monitor.c
119@@ -127,6 +127,7 @@ int mm_answer_sign(int, Buffer *); 119@@ -127,6 +127,7 @@ int mm_answer_sign(int, Buffer *);
@@ -180,7 +180,7 @@ index a2027e5..6ff05e4 100644
180 return (0); 180 return (0);
181 } 181 }
182 182
183@@ -1540,7 +1566,7 @@ mm_answer_pty(int sock, Buffer *m) 183@@ -1544,7 +1570,7 @@ mm_answer_pty(int sock, Buffer *m)
184 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); 184 res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty));
185 if (res == 0) 185 if (res == 0)
186 goto error; 186 goto error;
@@ -203,10 +203,10 @@ index bc50ade..2d82b8b 100644
203 203
204 struct mm_master; 204 struct mm_master;
205diff --git a/monitor_wrap.c b/monitor_wrap.c 205diff --git a/monitor_wrap.c b/monitor_wrap.c
206index b667218..5aa9c47 100644 206index 71e7c08..6ae72a0 100644
207--- a/monitor_wrap.c 207--- a/monitor_wrap.c
208+++ b/monitor_wrap.c 208+++ b/monitor_wrap.c
209@@ -329,10 +329,10 @@ mm_auth2_read_banner(void) 209@@ -327,10 +327,10 @@ mm_auth2_read_banner(void)
210 return (banner); 210 return (banner);
211 } 211 }
212 212
@@ -219,7 +219,7 @@ index b667218..5aa9c47 100644
219 { 219 {
220 Buffer m; 220 Buffer m;
221 221
222@@ -341,12 +341,30 @@ mm_inform_authserv(char *service, char *style) 222@@ -339,12 +339,30 @@ mm_inform_authserv(char *service, char *style)
223 buffer_init(&m); 223 buffer_init(&m);
224 buffer_put_cstring(&m, service); 224 buffer_put_cstring(&m, service);
225 buffer_put_cstring(&m, style ? style : ""); 225 buffer_put_cstring(&m, style ? style : "");
@@ -251,7 +251,7 @@ index b667218..5aa9c47 100644
251 int 251 int
252 mm_auth_password(Authctxt *authctxt, char *password) 252 mm_auth_password(Authctxt *authctxt, char *password)
253diff --git a/monitor_wrap.h b/monitor_wrap.h 253diff --git a/monitor_wrap.h b/monitor_wrap.h
254index 0c770e8..4d1e899 100644 254index 9758290..57e740f 100644
255--- a/monitor_wrap.h 255--- a/monitor_wrap.h
256+++ b/monitor_wrap.h 256+++ b/monitor_wrap.h
257@@ -41,7 +41,8 @@ void mm_log_handler(LogLevel, const char *, void *); 257@@ -41,7 +41,8 @@ void mm_log_handler(LogLevel, const char *, void *);
@@ -396,7 +396,7 @@ index 1c7a45d..436ae7c 100644
396 char *platform_krb5_get_principal_name(const char *); 396 char *platform_krb5_get_principal_name(const char *);
397 int platform_sys_dir_uid(uid_t); 397 int platform_sys_dir_uid(uid_t);
398diff --git a/session.c b/session.c 398diff --git a/session.c b/session.c
399index 54bac36..d4b7725 100644 399index 5a64715..afac4a5 100644
400--- a/session.c 400--- a/session.c
401+++ b/session.c 401+++ b/session.c
402@@ -1487,7 +1487,7 @@ safely_chroot(const char *path, uid_t uid) 402@@ -1487,7 +1487,7 @@ safely_chroot(const char *path, uid_t uid)
@@ -458,7 +458,7 @@ index 6a2f35e..ef6593c 100644
458 const char *value); 458 const char *value);
459 459
460diff --git a/sshd.c b/sshd.c 460diff --git a/sshd.c b/sshd.c
461index 9cbe8c4..3b4e97c 100644 461index 186ad55..9ff9e8b 100644
462--- a/sshd.c 462--- a/sshd.c
463+++ b/sshd.c 463+++ b/sshd.c
464@@ -781,7 +781,7 @@ privsep_postauth(Authctxt *authctxt) 464@@ -781,7 +781,7 @@ privsep_postauth(Authctxt *authctxt)
@@ -471,7 +471,7 @@ index 9cbe8c4..3b4e97c 100644
471 skip: 471 skip:
472 /* It is safe now to apply the key state */ 472 /* It is safe now to apply the key state */
473diff --git a/sshpty.c b/sshpty.c 473diff --git a/sshpty.c b/sshpty.c
474index d2ff8c1..f7b1f6d 100644 474index 7bb7641..0e32b39 100644
475--- a/sshpty.c 475--- a/sshpty.c
476+++ b/sshpty.c 476+++ b/sshpty.c
477@@ -187,7 +187,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col, 477@@ -187,7 +187,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col,
diff --git a/debian/patches/shell-path.patch b/debian/patches/shell-path.patch
index 549ef38dd..c12d86132 100644
--- a/debian/patches/shell-path.patch
+++ b/debian/patches/shell-path.patch
@@ -1,4 +1,4 @@
1From 8a8bbc66b8eefd7c679d5769f087209188deafe7 Mon Sep 17 00:00:00 2001 1From 865180de0e7d4735170faac2d584603fbe0530b2 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:00 +0000 3Date: Sun, 9 Feb 2014 16:10:00 +0000
4Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand 4Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand
@@ -16,7 +16,7 @@ Patch-Name: shell-path.patch
16 1 file changed, 2 insertions(+), 2 deletions(-) 16 1 file changed, 2 insertions(+), 2 deletions(-)
17 17
18diff --git a/sshconnect.c b/sshconnect.c 18diff --git a/sshconnect.c b/sshconnect.c
19index 9e51506..0073c6e 100644 19index f41960c..8adc943 100644
20--- a/sshconnect.c 20--- a/sshconnect.c
21+++ b/sshconnect.c 21+++ b/sshconnect.c
22@@ -231,7 +231,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command) 22@@ -231,7 +231,7 @@ ssh_proxy_connect(const char *host, u_short port, const char *proxy_command)
@@ -28,7 +28,7 @@ index 9e51506..0073c6e 100644
28 perror(argv[0]); 28 perror(argv[0]);
29 exit(1); 29 exit(1);
30 } 30 }
31@@ -1470,7 +1470,7 @@ ssh_local_cmd(const char *args) 31@@ -1471,7 +1471,7 @@ ssh_local_cmd(const char *args)
32 if (pid == 0) { 32 if (pid == 0) {
33 signal(SIGPIPE, SIG_DFL); 33 signal(SIGPIPE, SIG_DFL);
34 debug3("Executing %s -c \"%s\"", shell, args); 34 debug3("Executing %s -c \"%s\"", shell, args);
diff --git a/debian/patches/sigstop.patch b/debian/patches/sigstop.patch
index 80e775dc1..ae65d8285 100644
--- a/debian/patches/sigstop.patch
+++ b/debian/patches/sigstop.patch
@@ -1,4 +1,4 @@
1From a8e779107942d044d281461c609ec29129dec51e Mon Sep 17 00:00:00 2001 1From b0b95d9689563856ac4992c90b65ed4fd8f3fae6 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:17 +0000 3Date: Sun, 9 Feb 2014 16:10:17 +0000
4Subject: Support synchronisation with service supervisor using SIGSTOP 4Subject: Support synchronisation with service supervisor using SIGSTOP
@@ -13,10 +13,10 @@ Patch-Name: sigstop.patch
13 1 file changed, 10 insertions(+) 13 1 file changed, 10 insertions(+)
14 14
15diff --git a/sshd.c b/sshd.c 15diff --git a/sshd.c b/sshd.c
16index 5435968..f8db3ae 100644 16index 7886d0e..cc8ecaf 100644
17--- a/sshd.c 17--- a/sshd.c
18+++ b/sshd.c 18+++ b/sshd.c
19@@ -2030,6 +2030,16 @@ main(int ac, char **av) 19@@ -2038,6 +2038,16 @@ main(int ac, char **av)
20 } 20 }
21 } 21 }
22 22
diff --git a/debian/patches/ssh-agent-setgid.patch b/debian/patches/ssh-agent-setgid.patch
index b382252a3..aa9fa7e4d 100644
--- a/debian/patches/ssh-agent-setgid.patch
+++ b/debian/patches/ssh-agent-setgid.patch
@@ -1,4 +1,4 @@
1From 101d1dd7f95d75f1862c541a5b8d4032d4623d53 Mon Sep 17 00:00:00 2001 1From 95d0369e741776a0d18cffb2e4526dee37ebdbd6 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:13 +0000 3Date: Sun, 9 Feb 2014 16:10:13 +0000
4Subject: Document consequences of ssh-agent being setgid in ssh-agent(1) 4Subject: Document consequences of ssh-agent being setgid in ssh-agent(1)
@@ -13,10 +13,10 @@ Patch-Name: ssh-agent-setgid.patch
13 1 file changed, 15 insertions(+) 13 1 file changed, 15 insertions(+)
14 14
15diff --git a/ssh-agent.1 b/ssh-agent.1 15diff --git a/ssh-agent.1 b/ssh-agent.1
16index 6759afe..25de326 100644 16index d0aa712..2a940d9 100644
17--- a/ssh-agent.1 17--- a/ssh-agent.1
18+++ b/ssh-agent.1 18+++ b/ssh-agent.1
19@@ -181,6 +181,21 @@ environment variable holds the agent's process ID. 19@@ -186,6 +186,21 @@ environment variable holds the agent's process ID.
20 .Pp 20 .Pp
21 The agent exits automatically when the command given on the command 21 The agent exits automatically when the command given on the command
22 line terminates. 22 line terminates.
diff --git a/debian/patches/ssh-argv0.patch b/debian/patches/ssh-argv0.patch
index 0fe3b6da4..fce893c91 100644
--- a/debian/patches/ssh-argv0.patch
+++ b/debian/patches/ssh-argv0.patch
@@ -1,4 +1,4 @@
1From fac628fd57d3d357b86d77987f896d6289240345 Mon Sep 17 00:00:00 2001 1From abc6170edaed77f07694dd001c87077376157eaa Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:10:10 +0000 3Date: Sun, 9 Feb 2014 16:10:10 +0000
4Subject: ssh(1): Refer to ssh-argv0(1) 4Subject: ssh(1): Refer to ssh-argv0(1)
@@ -18,10 +18,10 @@ Patch-Name: ssh-argv0.patch
18 1 file changed, 1 insertion(+) 18 1 file changed, 1 insertion(+)
19 19
20diff --git a/ssh.1 b/ssh.1 20diff --git a/ssh.1 b/ssh.1
21index 04de6cf..c8892fe 100644 21index c3e1266..2178863 100644
22--- a/ssh.1 22--- a/ssh.1
23+++ b/ssh.1 23+++ b/ssh.1
24@@ -1471,6 +1471,7 @@ if an error occurred. 24@@ -1487,6 +1487,7 @@ if an error occurred.
25 .Xr sftp 1 , 25 .Xr sftp 1 ,
26 .Xr ssh-add 1 , 26 .Xr ssh-add 1 ,
27 .Xr ssh-agent 1 , 27 .Xr ssh-agent 1 ,
diff --git a/debian/patches/ssh-vulnkey-compat.patch b/debian/patches/ssh-vulnkey-compat.patch
index 28b98f527..7af91e955 100644
--- a/debian/patches/ssh-vulnkey-compat.patch
+++ b/debian/patches/ssh-vulnkey-compat.patch
@@ -1,4 +1,4 @@
1From d027dea6b4b659a7ad537e452db563763302eabd Mon Sep 17 00:00:00 2001 1From dd02db02d322c9db67d42fe491727854f951c828 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@ubuntu.com> 2From: Colin Watson <cjwatson@ubuntu.com>
3Date: Sun, 9 Feb 2014 16:09:50 +0000 3Date: Sun, 9 Feb 2014 16:09:50 +0000
4Subject: Accept obsolete ssh-vulnkey configuration options 4Subject: Accept obsolete ssh-vulnkey configuration options
@@ -17,7 +17,7 @@ Patch-Name: ssh-vulnkey-compat.patch
17 2 files changed, 2 insertions(+) 17 2 files changed, 2 insertions(+)
18 18
19diff --git a/readconf.c b/readconf.c 19diff --git a/readconf.c b/readconf.c
20index 254dbce..278fe15 100644 20index 68dac76..85eea48 100644
21--- a/readconf.c 21--- a/readconf.c
22+++ b/readconf.c 22+++ b/readconf.c
23@@ -180,6 +180,7 @@ static struct { 23@@ -180,6 +180,7 @@ static struct {
@@ -29,10 +29,10 @@ index 254dbce..278fe15 100644
29 { "pubkeyauthentication", oPubkeyAuthentication }, 29 { "pubkeyauthentication", oPubkeyAuthentication },
30 { "dsaauthentication", oPubkeyAuthentication }, /* alias */ 30 { "dsaauthentication", oPubkeyAuthentication }, /* alias */
31diff --git a/servconf.c b/servconf.c 31diff --git a/servconf.c b/servconf.c
32index f68c0d0..b3a2841 100644 32index 2f7f41e..8a5bd7b 100644
33--- a/servconf.c 33--- a/servconf.c
34+++ b/servconf.c 34+++ b/servconf.c
35@@ -503,6 +503,7 @@ static struct { 35@@ -510,6 +510,7 @@ static struct {
36 { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL }, 36 { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL },
37 { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL }, 37 { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL },
38 { "strictmodes", sStrictModes, SSHCFG_GLOBAL }, 38 { "strictmodes", sStrictModes, SSHCFG_GLOBAL },
diff --git a/debian/patches/ssh1-keepalive.patch b/debian/patches/ssh1-keepalive.patch
index e6bc72440..48308bcff 100644
--- a/debian/patches/ssh1-keepalive.patch
+++ b/debian/patches/ssh1-keepalive.patch
@@ -1,4 +1,4 @@
1From 396f7d932b391fc92ac7ccdf8813f49564e2bbab Mon Sep 17 00:00:00 2001 1From b3d7661669a0f5255ede81f82c25951aeba9576c Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:09:51 +0000 3Date: Sun, 9 Feb 2014 16:09:51 +0000
4Subject: Partial server keep-alive implementation for SSH1 4Subject: Partial server keep-alive implementation for SSH1
@@ -13,10 +13,10 @@ Patch-Name: ssh1-keepalive.patch
13 2 files changed, 19 insertions(+), 11 deletions(-) 13 2 files changed, 19 insertions(+), 11 deletions(-)
14 14
15diff --git a/clientloop.c b/clientloop.c 15diff --git a/clientloop.c b/clientloop.c
16index 7df9413..156a196 100644 16index 77d5498..964353d 100644
17--- a/clientloop.c 17--- a/clientloop.c
18+++ b/clientloop.c 18+++ b/clientloop.c
19@@ -564,16 +564,21 @@ client_global_request_reply(int type, u_int32_t seq, void *ctxt) 19@@ -577,16 +577,21 @@ client_global_request_reply(int type, u_int32_t seq, void *ctxt)
20 static void 20 static void
21 server_alive_check(void) 21 server_alive_check(void)
22 { 22 {
@@ -47,7 +47,7 @@ index 7df9413..156a196 100644
47 } 47 }
48 48
49 /* 49 /*
50@@ -635,7 +640,7 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, 50@@ -648,7 +653,7 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp,
51 */ 51 */
52 52
53 timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */ 53 timeout_secs = INT_MAX; /* we use INT_MAX to mean no timeout */
@@ -57,10 +57,10 @@ index 7df9413..156a196 100644
57 server_alive_time = now + options.server_alive_interval; 57 server_alive_time = now + options.server_alive_interval;
58 } 58 }
59diff --git a/ssh_config.5 b/ssh_config.5 59diff --git a/ssh_config.5 b/ssh_config.5
60index 4476171..dd35dd8 100644 60index b840261..f7510b6 100644
61--- a/ssh_config.5 61--- a/ssh_config.5
62+++ b/ssh_config.5 62+++ b/ssh_config.5
63@@ -1409,7 +1409,10 @@ If, for example, 63@@ -1414,7 +1414,10 @@ If, for example,
64 .Cm ServerAliveCountMax 64 .Cm ServerAliveCountMax
65 is left at the default, if the server becomes unresponsive, 65 is left at the default, if the server becomes unresponsive,
66 ssh will disconnect after approximately 45 seconds. 66 ssh will disconnect after approximately 45 seconds.
diff --git a/debian/patches/syslog-level-silent.patch b/debian/patches/syslog-level-silent.patch
index d760e6c19..e829e50fd 100644
--- a/debian/patches/syslog-level-silent.patch
+++ b/debian/patches/syslog-level-silent.patch
@@ -1,4 +1,4 @@
1From fbe5bd9e957ea90404158b3a3c11a6b91fe6f010 Mon Sep 17 00:00:00 2001 1From 9e6bb8525886d99876eb43a3b39c96bdf3032146 Mon Sep 17 00:00:00 2001
2From: Jonathan David Amery <jdamery@ysolde.ucam.org> 2From: Jonathan David Amery <jdamery@ysolde.ucam.org>
3Date: Sun, 9 Feb 2014 16:09:54 +0000 3Date: Sun, 9 Feb 2014 16:09:54 +0000
4Subject: "LogLevel SILENT" compatibility 4Subject: "LogLevel SILENT" compatibility
@@ -33,10 +33,10 @@ index 32e1d2e..53e7b65 100644
33 { "FATAL", SYSLOG_LEVEL_FATAL }, 33 { "FATAL", SYSLOG_LEVEL_FATAL },
34 { "ERROR", SYSLOG_LEVEL_ERROR }, 34 { "ERROR", SYSLOG_LEVEL_ERROR },
35diff --git a/ssh.c b/ssh.c 35diff --git a/ssh.c b/ssh.c
36index 0ad82f0..e8be6fe 100644 36index 3fd5a94..d99f7ef 100644
37--- a/ssh.c 37--- a/ssh.c
38+++ b/ssh.c 38+++ b/ssh.c
39@@ -1107,7 +1107,7 @@ main(int ac, char **av) 39@@ -1105,7 +1105,7 @@ main(int ac, char **av)
40 /* Do not allocate a tty if stdin is not a tty. */ 40 /* Do not allocate a tty if stdin is not a tty. */
41 if ((!isatty(fileno(stdin)) || stdin_null_flag) && 41 if ((!isatty(fileno(stdin)) || stdin_null_flag) &&
42 options.request_tty != REQUEST_TTY_FORCE) { 42 options.request_tty != REQUEST_TTY_FORCE) {
diff --git a/debian/patches/user-group-modes.patch b/debian/patches/user-group-modes.patch
index 8ce3d1f71..9213c1f29 100644
--- a/debian/patches/user-group-modes.patch
+++ b/debian/patches/user-group-modes.patch
@@ -1,4 +1,4 @@
1From 39b2121148a0aa016a648446823c8f02c5fd95b3 Mon Sep 17 00:00:00 2001 1From 209c51110996719eab04236d72f776eed6bd8226 Mon Sep 17 00:00:00 2001
2From: Colin Watson <cjwatson@debian.org> 2From: Colin Watson <cjwatson@debian.org>
3Date: Sun, 9 Feb 2014 16:09:58 +0000 3Date: Sun, 9 Feb 2014 16:09:58 +0000
4Subject: Allow harmless group-writability 4Subject: Allow harmless group-writability
@@ -52,10 +52,10 @@ index ee9e827..2ff2cff 100644
52 pw->pw_name, buf); 52 pw->pw_name, buf);
53 auth_debug_add("Bad file modes for %.200s", buf); 53 auth_debug_add("Bad file modes for %.200s", buf);
54diff --git a/auth.c b/auth.c 54diff --git a/auth.c b/auth.c
55index f9b7673..41e3876 100644 55index e6c094d..a99c475 100644
56--- a/auth.c 56--- a/auth.c
57+++ b/auth.c 57+++ b/auth.c
58@@ -423,8 +423,7 @@ check_key_in_hostfiles(struct passwd *pw, Key *key, const char *host, 58@@ -422,8 +422,7 @@ check_key_in_hostfiles(struct passwd *pw, Key *key, const char *host,
59 user_hostfile = tilde_expand_filename(userfile, pw->pw_uid); 59 user_hostfile = tilde_expand_filename(userfile, pw->pw_uid);
60 if (options.strict_modes && 60 if (options.strict_modes &&
61 (stat(user_hostfile, &st) == 0) && 61 (stat(user_hostfile, &st) == 0) &&
@@ -65,7 +65,7 @@ index f9b7673..41e3876 100644
65 logit("Authentication refused for %.100s: " 65 logit("Authentication refused for %.100s: "
66 "bad owner or modes for %.200s", 66 "bad owner or modes for %.200s",
67 pw->pw_name, user_hostfile); 67 pw->pw_name, user_hostfile);
68@@ -486,8 +485,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir, 68@@ -485,8 +484,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir,
69 snprintf(err, errlen, "%s is not a regular file", buf); 69 snprintf(err, errlen, "%s is not a regular file", buf);
70 return -1; 70 return -1;
71 } 71 }
@@ -75,7 +75,7 @@ index f9b7673..41e3876 100644
75 snprintf(err, errlen, "bad ownership or modes for file %s", 75 snprintf(err, errlen, "bad ownership or modes for file %s",
76 buf); 76 buf);
77 return -1; 77 return -1;
78@@ -502,8 +500,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir, 78@@ -501,8 +499,7 @@ auth_secure_path(const char *name, struct stat *stp, const char *pw_dir,
79 strlcpy(buf, cp, sizeof(buf)); 79 strlcpy(buf, cp, sizeof(buf));
80 80
81 if (stat(buf, &st) < 0 || 81 if (stat(buf, &st) < 0 ||
@@ -86,7 +86,7 @@ index f9b7673..41e3876 100644
86 "bad ownership or modes for directory %s", buf); 86 "bad ownership or modes for directory %s", buf);
87 return -1; 87 return -1;
88diff --git a/misc.c b/misc.c 88diff --git a/misc.c b/misc.c
89index 38af3df..d745480 100644 89index ddd2b2d..1c063ea 100644
90--- a/misc.c 90--- a/misc.c
91+++ b/misc.c 91+++ b/misc.c
92@@ -50,8 +50,9 @@ 92@@ -50,8 +50,9 @@
@@ -216,7 +216,7 @@ index f35ec39..9a23e6e 100644
216- return 0; 216- return 0;
217-} 217-}
218diff --git a/readconf.c b/readconf.c 218diff --git a/readconf.c b/readconf.c
219index 1d2d596..2ef8d7b 100644 219index 5c5890c..5f6c37f 100644
220--- a/readconf.c 220--- a/readconf.c
221+++ b/readconf.c 221+++ b/readconf.c
222@@ -39,6 +39,8 @@ 222@@ -39,6 +39,8 @@
@@ -239,10 +239,10 @@ index 1d2d596..2ef8d7b 100644
239 } 239 }
240 240
241diff --git a/ssh.1 b/ssh.1 241diff --git a/ssh.1 b/ssh.1
242index da64b71..53c711a 100644 242index df7ac86..c84196f 100644
243--- a/ssh.1 243--- a/ssh.1
244+++ b/ssh.1 244+++ b/ssh.1
245@@ -1355,6 +1355,8 @@ The file format and configuration options are described in 245@@ -1371,6 +1371,8 @@ The file format and configuration options are described in
246 .Xr ssh_config 5 . 246 .Xr ssh_config 5 .
247 Because of the potential for abuse, this file must have strict permissions: 247 Because of the potential for abuse, this file must have strict permissions:
248 read/write for the user, and not writable by others. 248 read/write for the user, and not writable by others.
@@ -252,10 +252,10 @@ index da64b71..53c711a 100644
252 .It Pa ~/.ssh/environment 252 .It Pa ~/.ssh/environment
253 Contains additional definitions for environment variables; see 253 Contains additional definitions for environment variables; see
254diff --git a/ssh_config.5 b/ssh_config.5 254diff --git a/ssh_config.5 b/ssh_config.5
255index 250c0d1..8abcf40 100644 255index 21d3e94..1d0c52b 100644
256--- a/ssh_config.5 256--- a/ssh_config.5
257+++ b/ssh_config.5 257+++ b/ssh_config.5
258@@ -1701,6 +1701,8 @@ The format of this file is described above. 258@@ -1706,6 +1706,8 @@ The format of this file is described above.
259 This file is used by the SSH client. 259 This file is used by the SSH client.
260 Because of the potential for abuse, this file must have strict permissions: 260 Because of the potential for abuse, this file must have strict permissions:
261 read/write for the user, and not accessible by others. 261 read/write for the user, and not accessible by others.
diff --git a/dh.c b/dh.c
index a260240fd..4c639acc3 100644
--- a/dh.c
+++ b/dh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dh.c,v 1.55 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: dh.c,v 1.57 2015/05/27 23:39:18 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * 4 *
@@ -155,7 +155,7 @@ choose_dh(int min, int wantbits, int max)
155 (f = fopen(_PATH_DH_PRIMES, "r")) == NULL) { 155 (f = fopen(_PATH_DH_PRIMES, "r")) == NULL) {
156 logit("WARNING: %s does not exist, using fixed modulus", 156 logit("WARNING: %s does not exist, using fixed modulus",
157 _PATH_DH_MODULI); 157 _PATH_DH_MODULI);
158 return (dh_new_group14()); 158 return (dh_new_group_fallback(max));
159 } 159 }
160 160
161 linenum = 0; 161 linenum = 0;
@@ -183,7 +183,7 @@ choose_dh(int min, int wantbits, int max)
183 if (bestcount == 0) { 183 if (bestcount == 0) {
184 fclose(f); 184 fclose(f);
185 logit("WARNING: no suitable primes in %s", _PATH_DH_PRIMES); 185 logit("WARNING: no suitable primes in %s", _PATH_DH_PRIMES);
186 return (dh_new_group14()); 186 return (dh_new_group_fallback(max));
187 } 187 }
188 188
189 linenum = 0; 189 linenum = 0;
@@ -204,7 +204,7 @@ choose_dh(int min, int wantbits, int max)
204 if (linenum != which+1) { 204 if (linenum != which+1) {
205 logit("WARNING: line %d disappeared in %s, giving up", 205 logit("WARNING: line %d disappeared in %s, giving up",
206 which, _PATH_DH_PRIMES); 206 which, _PATH_DH_PRIMES);
207 return (dh_new_group14()); 207 return (dh_new_group_fallback(max));
208 } 208 }
209 209
210 return (dh_new_group(dhg.g, dhg.p)); 210 return (dh_new_group(dhg.g, dhg.p));
@@ -261,7 +261,7 @@ dh_gen_key(DH *dh, int need)
261 261
262 if (need < 0 || dh->p == NULL || 262 if (need < 0 || dh->p == NULL ||
263 (pbits = BN_num_bits(dh->p)) <= 0 || 263 (pbits = BN_num_bits(dh->p)) <= 0 ||
264 need > INT_MAX / 2 || 2 * need >= pbits) 264 need > INT_MAX / 2 || 2 * need > pbits)
265 return SSH_ERR_INVALID_ARGUMENT; 265 return SSH_ERR_INVALID_ARGUMENT;
266 dh->length = MIN(need * 2, pbits - 1); 266 dh->length = MIN(need * 2, pbits - 1);
267 if (DH_generate_key(dh) == 0 || 267 if (DH_generate_key(dh) == 0 ||
@@ -339,6 +339,45 @@ dh_new_group14(void)
339} 339}
340 340
341/* 341/*
342 * 4k bit fallback group used by DH-GEX if moduli file cannot be read.
343 * Source: MODP group 16 from RFC3526.
344 */
345DH *
346dh_new_group_fallback(int max)
347{
348 static char *gen = "2", *group16 =
349 "FFFFFFFF" "FFFFFFFF" "C90FDAA2" "2168C234" "C4C6628B" "80DC1CD1"
350 "29024E08" "8A67CC74" "020BBEA6" "3B139B22" "514A0879" "8E3404DD"
351 "EF9519B3" "CD3A431B" "302B0A6D" "F25F1437" "4FE1356D" "6D51C245"
352 "E485B576" "625E7EC6" "F44C42E9" "A637ED6B" "0BFF5CB6" "F406B7ED"
353 "EE386BFB" "5A899FA5" "AE9F2411" "7C4B1FE6" "49286651" "ECE45B3D"
354 "C2007CB8" "A163BF05" "98DA4836" "1C55D39A" "69163FA8" "FD24CF5F"
355 "83655D23" "DCA3AD96" "1C62F356" "208552BB" "9ED52907" "7096966D"
356 "670C354E" "4ABC9804" "F1746C08" "CA18217C" "32905E46" "2E36CE3B"
357 "E39E772C" "180E8603" "9B2783A2" "EC07A28F" "B5C55DF0" "6F4C52C9"
358 "DE2BCBF6" "95581718" "3995497C" "EA956AE5" "15D22618" "98FA0510"
359 "15728E5A" "8AAAC42D" "AD33170D" "04507A33" "A85521AB" "DF1CBA64"
360 "ECFB8504" "58DBEF0A" "8AEA7157" "5D060C7D" "B3970F85" "A6E1E4C7"
361 "ABF5AE8C" "DB0933D7" "1E8C94E0" "4A25619D" "CEE3D226" "1AD2EE6B"
362 "F12FFA06" "D98A0864" "D8760273" "3EC86A64" "521F2B18" "177B200C"
363 "BBE11757" "7A615D6C" "770988C0" "BAD946E2" "08E24FA0" "74E5AB31"
364 "43DB5BFC" "E0FD108E" "4B82D120" "A9210801" "1A723C12" "A787E6D7"
365 "88719A10" "BDBA5B26" "99C32718" "6AF4E23C" "1A946834" "B6150BDA"
366 "2583E9CA" "2AD44CE8" "DBBBC2DB" "04DE8EF9" "2E8EFC14" "1FBECAA6"
367 "287C5947" "4E6BC05D" "99B2964F" "A090C3A2" "233BA186" "515BE7ED"
368 "1F612970" "CEE2D7AF" "B81BDD76" "2170481C" "D0069127" "D5B05AA9"
369 "93B4EA98" "8D8FDDC1" "86FFB7DC" "90A6C08F" "4DF435C9" "34063199"
370 "FFFFFFFF" "FFFFFFFF";
371
372 if (max < 4096) {
373 debug3("requested max size %d, using 2k bit group 14", max);
374 return dh_new_group14();
375 }
376 debug3("using 4k bit group 16");
377 return (dh_new_group_asc(gen, group16));
378}
379
380/*
342 * Estimates the group order for a Diffie-Hellman group that has an 381 * Estimates the group order for a Diffie-Hellman group that has an
343 * attack complexity approximately the same as O(2**bits). 382 * attack complexity approximately the same as O(2**bits).
344 * Values from NIST Special Publication 800-57: Recommendation for Key 383 * Values from NIST Special Publication 800-57: Recommendation for Key
diff --git a/dh.h b/dh.h
index 63a1b1477..654695315 100644
--- a/dh.h
+++ b/dh.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: dh.h,v 1.12 2015/01/19 20:16:15 markus Exp $ */ 1/* $OpenBSD: dh.h,v 1.13 2015/05/27 23:39:18 dtucker Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Niels Provos. All rights reserved. 4 * Copyright (c) 2000 Niels Provos. All rights reserved.
@@ -37,6 +37,7 @@ DH *dh_new_group_asc(const char *, const char *);
37DH *dh_new_group(BIGNUM *, BIGNUM *); 37DH *dh_new_group(BIGNUM *, BIGNUM *);
38DH *dh_new_group1(void); 38DH *dh_new_group1(void);
39DH *dh_new_group14(void); 39DH *dh_new_group14(void);
40DH *dh_new_group_fallback(int);
40 41
41int dh_gen_key(DH *, int); 42int dh_gen_key(DH *, int);
42int dh_pub_is_valid(DH *, BIGNUM *); 43int dh_pub_is_valid(DH *, BIGNUM *);
diff --git a/digest-libc.c b/digest-libc.c
index a216e784e..40db00274 100644
--- a/digest-libc.c
+++ b/digest-libc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: digest-libc.c,v 1.4 2014/12/21 22:27:56 djm Exp $ */ 1/* $OpenBSD: digest-libc.c,v 1.5 2015/05/05 02:48:17 jsg Exp $ */
2/* 2/*
3 * Copyright (c) 2013 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2013 Damien Miller <djm@mindrot.org>
4 * Copyright (c) 2014 Markus Friedl. All rights reserved. 4 * Copyright (c) 2014 Markus Friedl. All rights reserved.
@@ -172,7 +172,7 @@ ssh_digest_start(int alg)
172 const struct ssh_digest *digest = ssh_digest_by_alg(alg); 172 const struct ssh_digest *digest = ssh_digest_by_alg(alg);
173 struct ssh_digest_ctx *ret; 173 struct ssh_digest_ctx *ret;
174 174
175 if (digest == NULL || (ret = calloc(1, sizeof(ret))) == NULL) 175 if (digest == NULL || (ret = calloc(1, sizeof(*ret))) == NULL)
176 return NULL; 176 return NULL;
177 if ((ret->mdctx = calloc(1, digest->ctx_len)) == NULL) { 177 if ((ret->mdctx = calloc(1, digest->ctx_len)) == NULL) {
178 free(ret); 178 free(ret);
diff --git a/dispatch.c b/dispatch.c
index afe618221..aac933e0a 100644
--- a/dispatch.c
+++ b/dispatch.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: dispatch.c,v 1.26 2015/02/12 20:34:19 dtucker Exp $ */ 1/* $OpenBSD: dispatch.c,v 1.27 2015/05/01 07:10:01 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -137,22 +137,6 @@ ssh_dispatch_run_fatal(struct ssh *ssh, int mode, volatile sig_atomic_t *done,
137{ 137{
138 int r; 138 int r;
139 139
140 if ((r = ssh_dispatch_run(ssh, mode, done, ctxt)) != 0) { 140 if ((r = ssh_dispatch_run(ssh, mode, done, ctxt)) != 0)
141 switch (r) { 141 sshpkt_fatal(ssh, __func__, r);
142 case SSH_ERR_CONN_CLOSED:
143 logit("Connection closed by %.200s",
144 ssh_remote_ipaddr(ssh));
145 cleanup_exit(255);
146 case SSH_ERR_CONN_TIMEOUT:
147 logit("Connection to %.200s timed out while "
148 "waiting to read", ssh_remote_ipaddr(ssh));
149 cleanup_exit(255);
150 case SSH_ERR_DISCONNECTED:
151 logit("Disconnected from %.200s",
152 ssh_remote_ipaddr(ssh));
153 cleanup_exit(255);
154 default:
155 fatal("%s: %s", __func__, ssh_err(r));
156 }
157 }
158} 142}
diff --git a/dns.h b/dns.h
index 815f073a1..30e2b19b3 100644
--- a/dns.h
+++ b/dns.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: dns.h,v 1.14 2015/01/15 09:40:00 djm Exp $ */ 1/* $OpenBSD: dns.h,v 1.15 2015/05/08 06:45:13 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2003 Wesley Griffin. All rights reserved. 4 * Copyright (c) 2003 Wesley Griffin. All rights reserved.
@@ -33,7 +33,7 @@ enum sshfp_types {
33 SSHFP_KEY_RSA = 1, 33 SSHFP_KEY_RSA = 1,
34 SSHFP_KEY_DSA = 2, 34 SSHFP_KEY_DSA = 2,
35 SSHFP_KEY_ECDSA = 3, 35 SSHFP_KEY_ECDSA = 3,
36 SSHFP_KEY_ED25519 = 4 36 SSHFP_KEY_ED25519 = 4
37}; 37};
38 38
39enum sshfp_hashes { 39enum sshfp_hashes {
diff --git a/groupaccess.c b/groupaccess.c
index 4fca04471..2518c8487 100644
--- a/groupaccess.c
+++ b/groupaccess.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: groupaccess.c,v 1.15 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: groupaccess.c,v 1.16 2015/05/04 06:10:48 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Kevin Steves. All rights reserved. 3 * Copyright (c) 2001 Kevin Steves. All rights reserved.
4 * 4 *
@@ -97,11 +97,9 @@ int
97ga_match_pattern_list(const char *group_pattern) 97ga_match_pattern_list(const char *group_pattern)
98{ 98{
99 int i, found = 0; 99 int i, found = 0;
100 size_t len = strlen(group_pattern);
101 100
102 for (i = 0; i < ngroups; i++) { 101 for (i = 0; i < ngroups; i++) {
103 switch (match_pattern_list(groups_byname[i], 102 switch (match_pattern_list(groups_byname[i], group_pattern, 0)) {
104 group_pattern, len, 0)) {
105 case -1: 103 case -1:
106 return 0; /* Negated match wins */ 104 return 0; /* Negated match wins */
107 case 0: 105 case 0:
diff --git a/gss-genr.c b/gss-genr.c
index 5610f0bf2..b4eca3feb 100644
--- a/gss-genr.c
+++ b/gss-genr.c
@@ -34,6 +34,7 @@
34#include <limits.h> 34#include <limits.h>
35#include <stdarg.h> 35#include <stdarg.h>
36#include <string.h> 36#include <string.h>
37#include <signal.h>
37#include <unistd.h> 38#include <unistd.h>
38 39
39#include "xmalloc.h" 40#include "xmalloc.h"
diff --git a/gss-serv.c b/gss-serv.c
index 539862d67..2f6baf70d 100644
--- a/gss-serv.c
+++ b/gss-serv.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gss-serv.c,v 1.28 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: gss-serv.c,v 1.29 2015/05/22 03:50:02 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved.
@@ -52,6 +52,8 @@
52 52
53extern ServerOptions options; 53extern ServerOptions options;
54 54
55extern ServerOptions options;
56
55static ssh_gssapi_client gssapi_client = 57static ssh_gssapi_client gssapi_client =
56 { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER, 58 { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER,
57 GSS_C_NO_CREDENTIAL, GSS_C_NO_NAME, NULL, 59 GSS_C_NO_CREDENTIAL, GSS_C_NO_NAME, NULL,
@@ -109,7 +111,7 @@ ssh_gssapi_acquire_cred(Gssctxt *ctx)
109 gss_create_empty_oid_set(&status, &oidset); 111 gss_create_empty_oid_set(&status, &oidset);
110 gss_add_oid_set_member(&status, ctx->oid, &oidset); 112 gss_add_oid_set_member(&status, ctx->oid, &oidset);
111 113
112 if (gethostname(lname, sizeof(lname))) { 114 if (gethostname(lname, MAXHOSTNAMELEN)) {
113 gss_release_oid_set(&status, &oidset); 115 gss_release_oid_set(&status, &oidset);
114 return (-1); 116 return (-1);
115 } 117 }
@@ -120,7 +122,7 @@ ssh_gssapi_acquire_cred(Gssctxt *ctx)
120 } 122 }
121 123
122 if ((ctx->major = gss_acquire_cred(&ctx->minor, 124 if ((ctx->major = gss_acquire_cred(&ctx->minor,
123 ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds, 125 ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds,
124 NULL, NULL))) 126 NULL, NULL)))
125 ssh_gssapi_error(ctx); 127 ssh_gssapi_error(ctx);
126 128
diff --git a/hmac.c b/hmac.c
index d1c12417e..1c879640c 100644
--- a/hmac.c
+++ b/hmac.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hmac.c,v 1.11 2015/01/15 21:37:14 markus Exp $ */ 1/* $OpenBSD: hmac.c,v 1.12 2015/03/24 20:03:44 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Markus Friedl. All rights reserved. 3 * Copyright (c) 2014 Markus Friedl. All rights reserved.
4 * 4 *
@@ -154,7 +154,7 @@ hmac_test(void *key, size_t klen, void *m, size_t mlen, u_char *e, size_t elen)
154 154
155 if (memcmp(e, digest, elen)) { 155 if (memcmp(e, digest, elen)) {
156 for (i = 0; i < elen; i++) 156 for (i = 0; i < elen; i++)
157 printf("[%zd] %2.2x %2.2x\n", i, e[i], digest[i]); 157 printf("[%zu] %2.2x %2.2x\n", i, e[i], digest[i]);
158 printf("mismatch\n"); 158 printf("mismatch\n");
159 } else 159 } else
160 printf("ok\n"); 160 printf("ok\n");
diff --git a/hostfile.c b/hostfile.c
index b235795e6..2850a4793 100644
--- a/hostfile.c
+++ b/hostfile.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hostfile.c,v 1.64 2015/02/16 22:08:57 djm Exp $ */ 1/* $OpenBSD: hostfile.c,v 1.66 2015/05/04 06:10:48 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -242,7 +242,8 @@ record_hostkey(struct hostkey_foreach_line *l, void *_ctx)
242 struct hostkey_entry *tmp; 242 struct hostkey_entry *tmp;
243 243
244 if (l->status == HKF_STATUS_INVALID) { 244 if (l->status == HKF_STATUS_INVALID) {
245 error("%s:%ld: parse error in hostkeys file", 245 /* XXX make this verbose() in the future */
246 debug("%s:%ld: parse error in hostkeys file",
246 l->path, l->linenum); 247 l->path, l->linenum);
247 return 0; 248 return 0;
248 } 249 }
@@ -662,7 +663,7 @@ match_maybe_hashed(const char *host, const char *names, int *was_hashed)
662 return nlen == strlen(hashed_host) && 663 return nlen == strlen(hashed_host) &&
663 strncmp(hashed_host, names, nlen) == 0; 664 strncmp(hashed_host, names, nlen) == 0;
664 } 665 }
665 return match_hostname(host, names, nlen) == 1; 666 return match_hostname(host, names) == 1;
666} 667}
667 668
668int 669int
@@ -810,7 +811,7 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx,
810 memcpy(ktype, lineinfo.rawkey, l); 811 memcpy(ktype, lineinfo.rawkey, l);
811 ktype[l] = '\0'; 812 ktype[l] = '\0';
812 lineinfo.keytype = sshkey_type_from_name(ktype); 813 lineinfo.keytype = sshkey_type_from_name(ktype);
813#ifdef WITH_SSH1 814
814 /* 815 /*
815 * Assume RSA1 if the first component is a short 816 * Assume RSA1 if the first component is a short
816 * decimal number. 817 * decimal number.
@@ -818,7 +819,7 @@ hostkeys_foreach(const char *path, hostkeys_foreach_fn *callback, void *ctx,
818 if (lineinfo.keytype == KEY_UNSPEC && l < 8 && 819 if (lineinfo.keytype == KEY_UNSPEC && l < 8 &&
819 strspn(ktype, "0123456789") == l) 820 strspn(ktype, "0123456789") == l)
820 lineinfo.keytype = KEY_RSA1; 821 lineinfo.keytype = KEY_RSA1;
821#endif 822
822 /* 823 /*
823 * Check that something other than whitespace follows 824 * Check that something other than whitespace follows
824 * the key type. This won't catch all corruption, but 825 * the key type. This won't catch all corruption, but
diff --git a/kex.c b/kex.c
index be938ad04..4d8e6f536 100644
--- a/kex.c
+++ b/kex.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kex.c,v 1.105 2015/01/30 00:22:25 djm Exp $ */ 1/* $OpenBSD: kex.c,v 1.106 2015/04/17 13:25:52 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * 4 *
@@ -245,6 +245,8 @@ kex_prop_free(char **proposal)
245{ 245{
246 u_int i; 246 u_int i;
247 247
248 if (proposal == NULL)
249 return;
248 for (i = 0; i < PROPOSAL_MAX; i++) 250 for (i = 0; i < PROPOSAL_MAX; i++)
249 free(proposal[i]); 251 free(proposal[i]);
250 free(proposal); 252 free(proposal);
diff --git a/kexc25519.c b/kexc25519.c
index b6e6c4010..8d8cd4a2b 100644
--- a/kexc25519.c
+++ b/kexc25519.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexc25519.c,v 1.8 2015/01/19 20:16:15 markus Exp $ */ 1/* $OpenBSD: kexc25519.c,v 1.9 2015/03/26 07:00:04 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001, 2013 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001, 2013 Markus Friedl. All rights reserved.
4 * Copyright (c) 2010 Damien Miller. All rights reserved. 4 * Copyright (c) 2010 Damien Miller. All rights reserved.
@@ -66,6 +66,11 @@ kexc25519_shared_key(const u_char key[CURVE25519_SIZE],
66 u_char shared_key[CURVE25519_SIZE]; 66 u_char shared_key[CURVE25519_SIZE];
67 int r; 67 int r;
68 68
69 /* Check for all-zero public key */
70 explicit_bzero(shared_key, CURVE25519_SIZE);
71 if (timingsafe_bcmp(pub, shared_key, CURVE25519_SIZE) == 0)
72 return SSH_ERR_KEY_INVALID_EC_VALUE;
73
69 crypto_scalarmult_curve25519(shared_key, key, pub); 74 crypto_scalarmult_curve25519(shared_key, key, pub);
70#ifdef DEBUG_KEXECDH 75#ifdef DEBUG_KEXECDH
71 dump_digest("shared secret", shared_key, CURVE25519_SIZE); 76 dump_digest("shared secret", shared_key, CURVE25519_SIZE);
diff --git a/kexc25519s.c b/kexc25519s.c
index b2d2c858f..240272533 100644
--- a/kexc25519s.c
+++ b/kexc25519s.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexc25519s.c,v 1.8 2015/01/26 06:10:03 djm Exp $ */ 1/* $OpenBSD: kexc25519s.c,v 1.9 2015/04/27 00:37:53 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2010 Damien Miller. All rights reserved. 4 * Copyright (c) 2010 Damien Miller. All rights reserved.
@@ -27,6 +27,7 @@
27#include "includes.h" 27#include "includes.h"
28 28
29#include <sys/types.h> 29#include <sys/types.h>
30#include <stdio.h>
30#include <string.h> 31#include <string.h>
31#include <signal.h> 32#include <signal.h>
32 33
diff --git a/kexgexc.c b/kexgexc.c
index e8e059a88..71ff13352 100644
--- a/kexgexc.c
+++ b/kexgexc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexgexc.c,v 1.20 2015/01/26 06:10:03 djm Exp $ */ 1/* $OpenBSD: kexgexc.c,v 1.22 2015/05/26 23:23:40 dtucker Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * Copyright (c) 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -28,6 +28,7 @@
28 28
29#ifdef WITH_OPENSSL 29#ifdef WITH_OPENSSL
30 30
31#include <sys/param.h>
31#include <sys/types.h> 32#include <sys/types.h>
32 33
33#include <openssl/dh.h> 34#include <openssl/dh.h>
@@ -65,25 +66,17 @@ kexgex_client(struct ssh *ssh)
65 kex->min = DH_GRP_MIN; 66 kex->min = DH_GRP_MIN;
66 kex->max = DH_GRP_MAX; 67 kex->max = DH_GRP_MAX;
67 kex->nbits = nbits; 68 kex->nbits = nbits;
68 if (ssh->compat & SSH_OLD_DHGEX) { 69 if (datafellows & SSH_BUG_DHGEX_LARGE)
69 /* Old GEX request */ 70 kex->nbits = MIN(kex->nbits, 4096);
70 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST_OLD)) 71 /* New GEX request */
71 != 0 || 72 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST)) != 0 ||
72 (r = sshpkt_put_u32(ssh, kex->nbits)) != 0 || 73 (r = sshpkt_put_u32(ssh, kex->min)) != 0 ||
73 (r = sshpkt_send(ssh)) != 0) 74 (r = sshpkt_put_u32(ssh, kex->nbits)) != 0 ||
74 goto out; 75 (r = sshpkt_put_u32(ssh, kex->max)) != 0 ||
75 debug("SSH2_MSG_KEX_DH_GEX_REQUEST_OLD(%u) sent", kex->nbits); 76 (r = sshpkt_send(ssh)) != 0)
76 } else { 77 goto out;
77 /* New GEX request */ 78 debug("SSH2_MSG_KEX_DH_GEX_REQUEST(%u<%u<%u) sent",
78 if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST)) != 0 || 79 kex->min, kex->nbits, kex->max);
79 (r = sshpkt_put_u32(ssh, kex->min)) != 0 ||
80 (r = sshpkt_put_u32(ssh, kex->nbits)) != 0 ||
81 (r = sshpkt_put_u32(ssh, kex->max)) != 0 ||
82 (r = sshpkt_send(ssh)) != 0)
83 goto out;
84 debug("SSH2_MSG_KEX_DH_GEX_REQUEST(%u<%u<%u) sent",
85 kex->min, kex->nbits, kex->max);
86 }
87#ifdef DEBUG_KEXDH 80#ifdef DEBUG_KEXDH
88 fprintf(stderr, "\nmin = %d, nbits = %d, max = %d\n", 81 fprintf(stderr, "\nmin = %d, nbits = %d, max = %d\n",
89 kex->min, kex->nbits, kex->max); 82 kex->min, kex->nbits, kex->max);
diff --git a/kexgexs.c b/kexgexs.c
index 9c281d288..ff6c6879e 100644
--- a/kexgexs.c
+++ b/kexgexs.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: kexgexs.c,v 1.24 2015/01/26 06:10:03 djm Exp $ */ 1/* $OpenBSD: kexgexs.c,v 1.25 2015/04/13 02:04:08 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Niels Provos. All rights reserved. 3 * Copyright (c) 2000 Niels Provos. All rights reserved.
4 * Copyright (c) 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2001 Markus Friedl. All rights reserved.
@@ -60,8 +60,6 @@ static int input_kex_dh_gex_init(int, u_int32_t, void *);
60int 60int
61kexgex_server(struct ssh *ssh) 61kexgex_server(struct ssh *ssh)
62{ 62{
63 ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST_OLD,
64 &input_kex_dh_gex_request);
65 ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST, 63 ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST,
66 &input_kex_dh_gex_request); 64 &input_kex_dh_gex_request);
67 debug("expecting SSH2_MSG_KEX_DH_GEX_REQUEST"); 65 debug("expecting SSH2_MSG_KEX_DH_GEX_REQUEST");
@@ -76,36 +74,19 @@ input_kex_dh_gex_request(int type, u_int32_t seq, void *ctxt)
76 int r; 74 int r;
77 u_int min = 0, max = 0, nbits = 0; 75 u_int min = 0, max = 0, nbits = 0;
78 76
79 switch (type) { 77 debug("SSH2_MSG_KEX_DH_GEX_REQUEST received");
80 case SSH2_MSG_KEX_DH_GEX_REQUEST: 78 if ((r = sshpkt_get_u32(ssh, &min)) != 0 ||
81 debug("SSH2_MSG_KEX_DH_GEX_REQUEST received"); 79 (r = sshpkt_get_u32(ssh, &nbits)) != 0 ||
82 if ((r = sshpkt_get_u32(ssh, &min)) != 0 || 80 (r = sshpkt_get_u32(ssh, &max)) != 0 ||
83 (r = sshpkt_get_u32(ssh, &nbits)) != 0 || 81 (r = sshpkt_get_end(ssh)) != 0)
84 (r = sshpkt_get_u32(ssh, &max)) != 0 ||
85 (r = sshpkt_get_end(ssh)) != 0)
86 goto out;
87 kex->nbits = nbits;
88 kex->min = min;
89 kex->max = max;
90 min = MAX(DH_GRP_MIN, min);
91 max = MIN(DH_GRP_MAX, max);
92 nbits = MAX(DH_GRP_MIN, nbits);
93 nbits = MIN(DH_GRP_MAX, nbits);
94 break;
95 case SSH2_MSG_KEX_DH_GEX_REQUEST_OLD:
96 debug("SSH2_MSG_KEX_DH_GEX_REQUEST_OLD received");
97 if ((r = sshpkt_get_u32(ssh, &nbits)) != 0 ||
98 (r = sshpkt_get_end(ssh)) != 0)
99 goto out;
100 kex->nbits = nbits;
101 /* unused for old GEX */
102 kex->min = min = DH_GRP_MIN;
103 kex->max = max = DH_GRP_MAX;
104 break;
105 default:
106 r = SSH_ERR_INVALID_ARGUMENT;
107 goto out; 82 goto out;
108 } 83 kex->nbits = nbits;
84 kex->min = min;
85 kex->max = max;
86 min = MAX(DH_GRP_MIN, min);
87 max = MIN(DH_GRP_MAX, max);
88 nbits = MAX(DH_GRP_MIN, nbits);
89 nbits = MIN(DH_GRP_MAX, nbits);
109 90
110 if (kex->max < kex->min || kex->nbits < kex->min || 91 if (kex->max < kex->min || kex->nbits < kex->min ||
111 kex->max < kex->nbits) { 92 kex->max < kex->nbits) {
@@ -131,10 +112,6 @@ input_kex_dh_gex_request(int type, u_int32_t seq, void *ctxt)
131 if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) 112 if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0)
132 goto out; 113 goto out;
133 114
134 /* old KEX does not use min/max in kexgex_hash() */
135 if (type == SSH2_MSG_KEX_DH_GEX_REQUEST_OLD)
136 kex->min = kex->max = -1;
137
138 debug("expecting SSH2_MSG_KEX_DH_GEX_INIT"); 115 debug("expecting SSH2_MSG_KEX_DH_GEX_INIT");
139 ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_INIT, &input_kex_dh_gex_init); 116 ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_INIT, &input_kex_dh_gex_init);
140 r = 0; 117 r = 0;
diff --git a/krl.c b/krl.c
index 4bbaa2080..a98252ef8 100644
--- a/krl.c
+++ b/krl.c
@@ -14,7 +14,7 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16 16
17/* $OpenBSD: krl.c,v 1.31 2015/01/30 01:10:33 djm Exp $ */ 17/* $OpenBSD: krl.c,v 1.32 2015/06/24 23:47:23 djm Exp $ */
18 18
19#include "includes.h" 19#include "includes.h"
20 20
@@ -772,7 +772,7 @@ ssh_krl_to_blob(struct ssh_krl *krl, struct sshbuf *buf,
772 goto out; 772 goto out;
773 773
774 if ((r = sshkey_sign(sign_keys[i], &sblob, &slen, 774 if ((r = sshkey_sign(sign_keys[i], &sblob, &slen,
775 sshbuf_ptr(buf), sshbuf_len(buf), 0)) == -1) 775 sshbuf_ptr(buf), sshbuf_len(buf), 0)) != 0)
776 goto out; 776 goto out;
777 KRL_DBG(("%s: signature sig len %zu", __func__, slen)); 777 KRL_DBG(("%s: signature sig len %zu", __func__, slen));
778 if ((r = sshbuf_put_string(buf, sblob, slen)) != 0) 778 if ((r = sshbuf_put_string(buf, sblob, slen)) != 0)
diff --git a/match.c b/match.c
index c35e32896..913b6bae0 100644
--- a/match.c
+++ b/match.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.c,v 1.29 2013/11/20 20:54:10 deraadt Exp $ */ 1/* $OpenBSD: match.c,v 1.30 2015/05/04 06:10:48 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -115,15 +115,13 @@ match_pattern(const char *s, const char *pattern)
115 * indicate negation). Returns -1 if negation matches, 1 if there is 115 * indicate negation). Returns -1 if negation matches, 1 if there is
116 * a positive match, 0 if there is no match at all. 116 * a positive match, 0 if there is no match at all.
117 */ 117 */
118
119int 118int
120match_pattern_list(const char *string, const char *pattern, u_int len, 119match_pattern_list(const char *string, const char *pattern, int dolower)
121 int dolower)
122{ 120{
123 char sub[1024]; 121 char sub[1024];
124 int negated; 122 int negated;
125 int got_positive; 123 int got_positive;
126 u_int i, subi; 124 u_int i, subi, len = strlen(pattern);
127 125
128 got_positive = 0; 126 got_positive = 0;
129 for (i = 0; i < len;) { 127 for (i = 0; i < len;) {
@@ -177,9 +175,9 @@ match_pattern_list(const char *string, const char *pattern, u_int len,
177 * a positive match, 0 if there is no match at all. 175 * a positive match, 0 if there is no match at all.
178 */ 176 */
179int 177int
180match_hostname(const char *host, const char *pattern, u_int len) 178match_hostname(const char *host, const char *pattern)
181{ 179{
182 return match_pattern_list(host, pattern, len, 1); 180 return match_pattern_list(host, pattern, 1);
183} 181}
184 182
185/* 183/*
@@ -200,7 +198,7 @@ match_host_and_ip(const char *host, const char *ipaddr,
200 return 0; 198 return 0;
201 199
202 /* negative hostname match */ 200 /* negative hostname match */
203 if ((mhost = match_hostname(host, patterns, strlen(patterns))) == -1) 201 if ((mhost = match_hostname(host, patterns)) == -1)
204 return 0; 202 return 0;
205 /* no match at all */ 203 /* no match at all */
206 if (mhost == 0 && mip == 0) 204 if (mhost == 0 && mip == 0)
diff --git a/match.h b/match.h
index 3d7f70fc0..db97ca8f7 100644
--- a/match.h
+++ b/match.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: match.h,v 1.15 2010/02/26 20:29:54 djm Exp $ */ 1/* $OpenBSD: match.h,v 1.16 2015/05/04 06:10:48 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -15,8 +15,8 @@
15#define MATCH_H 15#define MATCH_H
16 16
17int match_pattern(const char *, const char *); 17int match_pattern(const char *, const char *);
18int match_pattern_list(const char *, const char *, u_int, int); 18int match_pattern_list(const char *, const char *, int);
19int match_hostname(const char *, const char *, u_int); 19int match_hostname(const char *, const char *);
20int match_host_and_ip(const char *, const char *, const char *); 20int match_host_and_ip(const char *, const char *, const char *);
21int match_user(const char *, const char *, const char *, const char *); 21int match_user(const char *, const char *, const char *, const char *);
22char *match_list(const char *, const char *, u_int *); 22char *match_list(const char *, const char *, u_int *);
diff --git a/misc.c b/misc.c
index d7454808e..1c063ea42 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: misc.c,v 1.96 2015/01/16 06:40:12 deraadt Exp $ */ 1/* $OpenBSD: misc.c,v 1.97 2015/04/24 01:36:00 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved. 4 * Copyright (c) 2005,2006 Damien Miller. All rights reserved.
@@ -474,7 +474,7 @@ addargs(arglist *args, char *fmt, ...)
474 } else if (args->num+2 >= nalloc) 474 } else if (args->num+2 >= nalloc)
475 nalloc *= 2; 475 nalloc *= 2;
476 476
477 args->list = xrealloc(args->list, nalloc, sizeof(char *)); 477 args->list = xreallocarray(args->list, nalloc, sizeof(char *));
478 args->nalloc = nalloc; 478 args->nalloc = nalloc;
479 args->list[args->num++] = cp; 479 args->list[args->num++] = cp;
480 args->list[args->num] = NULL; 480 args->list[args->num] = NULL;
diff --git a/moduli b/moduli
index 49f76ee98..6bb25c9bf 100644
--- a/moduli
+++ b/moduli
@@ -1,262 +1,247 @@
1# $OpenBSD: moduli,v 1.8 2012/08/29 05:06:54 dtucker Exp $ 1# $OpenBSD: moduli,v 1.13 2015/05/28 00:03:06 dtucker Exp $
2# Time Type Tests Tries Size Generator Modulus 2# Time Type Tests Tries Size Generator Modulus
320120821044040 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A770E2EC9F 320150520234251 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A740BE2123
420120821044046 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7711F2C6B 420150520234255 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A740D85877
520120821044047 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771225323 520150520234257 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A740E6494B
620120821044048 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7712507AB 620150520234301 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A741120F9B
720120821044050 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7712A2DB3 720150520234303 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7411EAC5B
820120821044051 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7712CACEF 820150520234304 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7412579DB
920120821044053 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7713959C3 920150520234311 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74167053B
1020120821044057 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7715BBA13 1020150520234312 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74169B303
1120120821044103 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77191592F 1120150520234318 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A741A3D69F
1220120821044104 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771938E1F 1220150520234322 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A741C07E23
1320120821044106 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771A1E127 1320150520234330 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7420B48E3
1420120821044108 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771B3CDFB 1420150520234331 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74215059B
1520120821044109 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771B71913 1520150520234336 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74240BD03
1620120821044111 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771C2759F 1620150520234338 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7424D70BB
1720120821044113 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771CF8ABF 1720150520234341 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7425C6CE3
1820120821044114 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771D2B49B 1820150520234342 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74264FA9B
1920120821044116 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771DF6193 1920150520234343 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7426BB34B
2020120821044117 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771E67E33 2020150520234346 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74285D9E3
2120120821044120 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771FA581B 2120150520234347 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A742878293
2220120821044121 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772027DDB 2220150520234348 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74288D143
2320120821044123 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772093F8B 2320150520234356 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A742D55BF3
2420120821044124 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7720EEF6F 2420150520234401 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A742FC8227
2520120821044125 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77216CAD7 2520150520234410 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7436032EB
2620120821044126 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77219A90B 2620150520234411 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74361377F
2720120821044129 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7722A0103 2720150520234415 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7437CCCFB
2820120821044130 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772343DBF 2820150520234418 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A743902C1F
2920120821044133 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772460C3F 2920150520234420 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7439EE5DB
3020120821044137 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7726A4E0F 3020150520234422 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A743AE19BF
3120120821044138 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772716D8B 3120150520234430 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7440152AB
3220120821044141 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7728D719B 3220150520234432 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7440C2F63
3320120821044143 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77297AA8B 3320150520234434 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7441FBDEB
3420120821044145 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772A8794B 3420150520234436 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7442C98DF
3520120821044147 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772B4D6AB 3520150520234437 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744319703
3620120821044149 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772BD325F 3620150520234438 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74433E927
3720120821044150 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772BDAE07 3720150520234444 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7446DF46F
3820120821044151 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772C95CE3 3820150520234450 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744A3488B
3920120821044502 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F96361507 3920150520234455 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744CDAACB
4020120821044515 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F965885BF 4020150520234459 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744E9D8FF
4120120821044519 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F966006C7 4120150520234504 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A745196237
4220120821044528 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9674A0EB 4220150520235007 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031E9A9C5F7
4320120821044539 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F969457F3 4320150520235015 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031E9CBB21F
4420120821044544 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F969BE79B 4420150520235039 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA2E9623
4520120821044606 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F96E1E827 4520150520235043 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA33E3DF
4620120821044623 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9714284B 4620150520235057 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA68038B
4720120821044630 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97231CB7 4720150520235114 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAAB0717
4820120821044636 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F972E01DF 4820150520235122 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAC2A7FB
4920120821044647 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F974BCED3 4920150520235125 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAC82DD3
5020120821044650 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F974C3A43 5020150520235154 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB40583F
5120120821044653 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F974E8F73 5120150520235214 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB94F247
5220120821044701 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9763403B 5220150520235218 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB9DF49F
5320120821044705 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9767666B 5320150520235239 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EBF7BE27
5420120821044708 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9768D81F 5420150520235244 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC0B4F4F
5520120821044726 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F979FD437 5520150520235250 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC21070F
5620120821044729 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97A29BC7 5620150520235256 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC36541F
5720120821044732 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97A56447 5720150520235307 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC5FE22B
5820120821044737 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97AEDBDB 5820150520235322 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ECA1FB57
5920120821044740 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97B187F3 5920150520235331 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ECC3C823
6020120821044746 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97BC6EE3 6020150520235349 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED035187
6120120821044757 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97DCCDEB 6120150520235400 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED2F07DB
6220120821044817 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F981975F7 6220150520235407 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED4620CF
6320120821044831 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F983EC267 6320150520235422 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED86D39F
6420120821044841 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F985A032F 6420150520235424 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED86E683
6520120821044846 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9863B0AB 6520150520235427 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED8C3073
6620120821044852 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F986E5C7F 6620150520235443 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDCB1F63
6720120821044911 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98A8FF6B 6720150520235450 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDE00B77
6820120821044917 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98B40E4B 6820150520235452 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDE42247
6920120821044924 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98C5840F 6920150520235458 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDF8F493
7020120821044940 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98F22CEB 7020150520235503 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE04D69F
7120120821044947 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99040FFF 7120150520235508 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE14B92B
7220120821044954 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99139AE3 7220150520235510 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE167933
7320120821045010 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9940BEFB 7320150520235517 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE2DC63B
7420120821045017 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9954379F 7420150520235527 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE52259F
7520120821045020 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99548C23 7520150520235539 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE829247
7620120821045023 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99562FC3 7620150520235557 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EED044BF
7720120821045028 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9960CDCF 7720150520235608 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EEFD34CF
7820120821045038 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F997AC0B3 7820150520235614 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF0F709F
7920120821045045 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F998D9B6B 7920150520235616 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF12110B
8020120821045050 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9994BB77 8020150520235622 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF25FE1F
8120120821045059 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99AC001B 8120150520235637 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF6BF4D3
8220120821045101 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99AC5547 8220150520235654 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFAF28BF
8320120821045107 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99B86567 8320150520235701 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFBFB8BB
8420120821045110 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99BA2677 8420150520235704 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFC7A62F
8520120821045128 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99EF4523 8520150520235710 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFD79323
8620120821045154 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9A419DAB 8620150520235725 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0158F1F
8720120821045214 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9A7D1E67 8720150520235728 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F01A9E6B
8820120821045218 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9A826443 8820150520235743 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F055798B
8920120821045639 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293680B09D63 8920150520235752 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0730BC3
9020120821045830 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936814C2FFB 9020150520235757 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F08283FF
9120120821050046 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368214FC53 9120150520235825 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0F451E3
9220120821050054 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368218E83F 9220150520235830 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0FDEFB7
9320120821050118 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293682361D5F 9320150520235901 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F1828ECF
9420120821050218 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936828ADA17 9420150521000008 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F185D7BF
9520120821050243 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293682A8A7CB 9520150521000011 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F18C58FB
9620120821050427 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368341AC87 9620150521000014 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F191F757
9720120821050515 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936837F8657 9720150521000841 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CC7F06BB
9820120821050545 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683A3DFD3 9820150521001025 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CD1057AB
9920120821050554 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683A9635F 9920150521001131 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CD717D6F
10020120821050636 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683DF582B 10020150521001248 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CDDA85F7
10120120821050648 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683E86803 10120150521001453 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CE8959BF
10220120821050758 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684495A13 10220150521001510 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CE98227B
10320120821050807 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936844FAB5B 10320150521001623 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CEF967BF
10420120821050849 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368486D99B 10420150521001651 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CF18156B
10520120821050916 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684A776A7 10520150521001758 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CF717197
10620120821050942 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684C4FF73 10620150521001924 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CFE1507B
10720120821051003 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684DB980F 10720150521002244 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D0F75427
10820120821051010 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684DD4FBF 10820150521002509 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D1BD2823
10920120821051158 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685721537 10920150521002808 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D2B4950F
11020120821051206 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685768253 11020150521002846 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D2E6D6D7
11120120821051231 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685930F13 11120150521003203 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D3F5D0D3
11220120821051240 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685987B0B 11220150521003322 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D45851E3
11320120821051324 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685D5E36B 11320150521003430 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D4AEE517
11420120821051349 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685F3AB7F 11420150521003629 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5538E0B
11520120821051424 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686206187 11520150521003714 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D58BAFCF
11620120821051516 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368668EB4B 11620150521003722 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5916FC7
11720120821051540 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368686EB87 11720150521003739 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5A378F7
11820120821051622 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686BCCF13 11820150521004506 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D82B5113
11920120821051703 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686F13B9F 11920150521004613 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D880CB43
12020120821051715 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686FB2D4F 12020150521004753 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D909305B
12120120821051837 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936876ED7DF 12120150521004802 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D90DBDC3
12220120821051843 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936876F05DB 12220150521005025 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D9CBF44F
12320120821051930 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293687AEDE8F 12320150521005051 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D9E89DA7
12420120821052131 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293688637CFF 12420150521005252 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DA8BA403
12520120821053137 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942284EA9F 12520150521005347 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DAD07F73
12620120821053209 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94228B7F67 12620150521005825 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DC5CE5A3
12720120821053317 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9422A2B3C7 12720150521005858 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DC84A597
12820120821053841 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94232DEF87 12820150521010014 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DCE62957
12920120821054039 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942359AB7B 12920150521010219 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DD9517D7
13020120821054334 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9423A371A7 13020150521011229 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F951FEB83
13120120821054455 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9423C1CEEF 13120150521011834 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F960399B7
13220120821054844 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424273F1F 13220150521012438 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F96EE7973
13320120821055307 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424987667 13320150521014010 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F99453213
13420120821055436 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424B90BAB 13420150521015607 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9B549727
13520120821055700 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424F6C7CF 13520150521015640 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9B600A7B
13620120821060224 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94258ADCEF 13620150521020946 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9D5299DF
13720120821060334 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9425A1FCEB 13720150521021536 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9E2793D3
13820120821060420 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9425AEBF43 13820150521022706 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9FE131CB
13920120821060927 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942634C34F 13920150521023922 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA1BAC073
14020120821061829 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94272F0D4F 14020150521025234 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA3BC9483
14120120821062020 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94275B00B7 14120150521025424 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA3FB3513
14220120821062241 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9427941F5F 14220150521032445 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA87E0FAB
14320120821063416 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9428D5E367 14320150521032932 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA929F00F
14420120821063648 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942917E127 14420150521032947 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA92B272B
14520120821064052 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9429825A2B 14520150521033245 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA9953D0B
14620120821064951 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942A74C4EB 14620150521034828 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FABDD4AEF
14720120821065736 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942B4640D3 14720150521035044 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAC298C7F
14820120821071146 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942CCD6D1B 14820150521035111 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAC31F17B
14920120821071337 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942CF9321B 14920150521035749 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAD250357
15020120821072545 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942E48654F 15020150521040009 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAD788A73
15120120821075022 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9430F1B6A3 15120150521040220 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FADC5F173
15220120821080229 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9432356F63 15220150521040316 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FADDFFC03
15320120821081230 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94333D9363 15320150521041042 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAEEBDEB3
15420120821081746 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9433C6A7A7 15420150521041443 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAF7AD7BB
15520120821081811 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9433C94C93 15520150521041831 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB007D653
15620120821084945 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45B27D047 15620150521041928 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB025C91B
15720120821091240 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45C370A33 15720150521042301 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB0A4C143
15820120821092428 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45CBB9FBB 15820150521042631 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB12009F7
15920120821093047 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45D001E73 15920150521042740 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB145360F
16020120821095420 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45E104D6F 16020150521043358 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB22FAE93
16120120821095624 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45E21E2BF 16120150521044013 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB31527AF
16220120821102749 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45F9B1B7B 16220150521044543 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE806E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB3DDFBB7
16320120821105854 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4610E205F 16320150521004745 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F52665F2B
16420120821110658 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA461631FBF 16420150521003352 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F57C7B577
16520120821110744 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA461635E3B 16520150521005557 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F591BBC57
16620120821115206 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4636E0DF7 16620150521014228 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5BDF5CE7
16720120821121256 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4645F38B3 16720150521015455 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5C9CFD1F
16820120821121421 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46467609B 16820150521001701 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5CF6FF9B
16920120821122649 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA464F87D6B 16920150521002558 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5D7C4FE3
17020120821122854 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46508F94B 17020150521003319 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5DE41DFB
17120120821125200 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4661CBC5B 17120150521003721 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5E1B5FAF
17220120821130613 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA466BC6B33 17220150521010943 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F600B866F
17320120821131115 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA466ED9CC7 17320150521014141 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F61F01EC3
17420120821132817 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA467B278B3 17420150521010312 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F65EAB753
17520120821135349 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA468D8351B 17520150521002914 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F69FD9357
17620120821141206 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA469A817A7 17620150521011058 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6C6B8513
17720120821144909 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46B488EF7 17720150521013628 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6DE7D9EF
17820120821150021 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46BC5D5E7 17820150521015040 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6EB0C897
17920120821153843 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46D774723 17920150521001307 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6F15473B
18020120821162006 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46F5488DB 18020150521012712 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7377044B
18120120821170404 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA47157A067 18120150521005218 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7767DEA3
18220120821173305 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA472A1E94B 18220150521003512 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7C5546F7
18320120821173936 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA472E0E57F 18320150521005420 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7D68EDC3
18420120821174533 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4731F7433 18420150521011347 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7E859CF3
18520120821180053 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA473C7CE3F 18520150521002429 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F819A93E7
18620120821180952 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4742A8237 18620150521004826 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F88D91A57
18720120821181124 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA474343C5B 18720150521010541 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F89D29B9F
18820120821183540 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4754D89DB 18820150521012418 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8ADC38F7
18920120821183852 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA47569B47F 18920150521015506 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8C91980B
19020120821184512 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA475AC57DB 19020150521004000 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8E369B97
19120120821184603 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA475AD78CB 19120150521005659 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8F2B1BEB
19220120821184701 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA475B0038F 19220150521010328 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8F7DD1D3
19320120821185939 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4763BD72F 19320150521011152 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8FF052BB
19420120821190630 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA476853BB7 19420150521001457 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F92940463
19520120821190945 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA476A47843 19520150521011129 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F95C47DCB
19620120821195501 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA478A96AEF 19620150521013515 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F9710A103
19720120705232031 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B241215BB 19720150521013841 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979CBA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F9733A497
19820120705233800 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B246EC93B 19820150521041810 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BE934407F
19920120706002709 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2582B477 19920150521070624 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BEEB1E407
20020120706013826 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B271419A3 20020150521051555 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BF50EEEC3
20120120706014732 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B273FB1BB 20120150521061258 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C00AF225F
20220120706021008 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B27B7E59F 20220150521034225 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C058D5963
20320120705225552 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B29C4E81B 20320150521035956 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C0616723F
20420120705233754 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2AB07037 20420150521054248 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C12F16C3F
20520120705234834 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2AE25CBB 20520150521060112 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C1379EA23
20620120706024556 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2EDFAA6F 20620150521023340 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C165F2773
20720120705233556 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B30EE83EB 20720150521043505 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C1A3EC717
20820120706002117 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B31E6F727 20820150521024626 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C202ABED3
20920120705233808 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B37267537 20920150521064303 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C27790087
21020120706001148 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B3DF98C1F 21020150521060604 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C2F9DF583
21120120706013155 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B3FBB98EB 21120150521062143 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3003EEAB
21220120706025705 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B418898A7 21220150521044311 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C363D0A77
21320120706022948 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B4707179B 21320150521053731 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C37D6EFCF
21420120705233534 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B4F3D25C7 21420150521065640 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3A20A2DF
21520120706014542 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B520205CB 21520150521044717 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3F622E8B
21620120706030026 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B539518DB 21620150521065426 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C430ED7CB
21720120706003519 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B566E0243 21720150521023632 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C445E575B
21820120706032218 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B59E508EF 21820150521032945 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C45EEE643
21920120706033523 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B5A254F5F 21920150521054538 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C49FB77CB
22020120705235242 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B5B60C48F 22020150521024620 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C4D86D0FB
22120120706022615 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B646A1B3B 22120150521042108 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE3151CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C505E524B
22220120706032540 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B6594B14F 22220150521041835 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD3703FA7
22320120706001843 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B677C3593 22320150521051726 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD4CEF96F
22420120705054703 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234453518A0F7 22420150521074626 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD86439C3
22520120705060217 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445353B291F 22520150521082439 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CD947F7F3
22620120705100916 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344537DF8F1B 22620150521012012 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CE0694343
22720120705112627 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344538AF7C7B 22720150521073153 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CE93D436F
22820120705121419 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445392BB61F 22820150521094433 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CEC4EE993
22920120705162623 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234453BD5FE03 22920150521074128 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354CFA190CE3
23020120705171958 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234453C6257EF 23020150521014004 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D0235296F
23120120705222541 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234453FBF1073 23120150521014736 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D025961EB
23220120705120012 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344544BA2363 23220150521065737 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D0961218F
23320120705143238 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445464ED33B 23320150521043653 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D163706C7
23420120705175610 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445486B9E93 23420150521085322 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D1BC6858F
23520120705143839 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344551AEBB1B 23520150521093922 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D1CC27FE3
23620120705164833 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344553053057 23620150521120407 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D1FE2874F
23720120705195911 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344560200E33 23720150521124157 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D20A8A19B
23820120705051445 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445620DCB9B 23820150521035417 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D24E0665B
23920120705090103 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234456453E2C3 23920150521062806 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D2828F7AB
24020120705102457 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234456520F7B3 24020150521074218 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D29B42017
24120120705045958 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234456CC34FE7 24120150521114937 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D2F027D3F
24220120705064048 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234456DBB1643 24220150521073847 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D3905A9FF
24320120705100057 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234456FACFC3F 24320150521024512 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D41DB2FFB
24420120705130216 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445716EEFD3 24420150521024827 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D41E2852F
24520120705184211 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344574BD3B0F 24520150521042402 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D43D9B0E3
24620120705075506 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234457918ED6F 24620150521083756 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D491D852F
24720120705111016 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445857E1707 24720150521113241 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C24447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B401A14FACDAC97F63529118ED56DFB7DAC4967FFA252D185DBC29652E3F62A45D6BF990FB354D4CAD7D8B
24820120705051124 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234458C6078E3
24920120705054255 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234458CA4E313
25020120705155949 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234459281E7B3
25120120705065517 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE2344597A57CB3
25220120705082307 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445987253DB
25320120705182442 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234459E124B2F
25420120705184956 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE234459E442F5B
25520120705071209 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445A1E0FD83
25620120705155527 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445A6BDA473
25720120705103912 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445ADCE429F
25820120705115451 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445AE75FB83
25920120705133531 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445AF5813A3
26020120705144902 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445AFF92FDF
26120120705160631 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445B0A9AF9F
26220120705194100 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6AC0C670108376302BA364FFD30E78D0CAB72BADB15F282CD256BC3B365896D80DC170BE23445B296E223
diff --git a/monitor.c b/monitor.c
index ce7ba079c..12ed6fd00 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor.c,v 1.145 2015/02/20 22:17:21 djm Exp $ */ 1/* $OpenBSD: monitor.c,v 1.150 2015/06/22 23:42:16 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -432,7 +432,7 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
432 if (ent->flags & (MON_AUTHDECIDE|MON_ALOG)) { 432 if (ent->flags & (MON_AUTHDECIDE|MON_ALOG)) {
433 auth_log(authctxt, authenticated, partial, 433 auth_log(authctxt, authenticated, partial,
434 auth_method, auth_submethod); 434 auth_method, auth_submethod);
435 if (!authenticated) 435 if (!partial && !authenticated)
436 authctxt->failures++; 436 authctxt->failures++;
437 } 437 }
438 } 438 }
@@ -1244,7 +1244,7 @@ mm_answer_keyallowed(int sock, Buffer *m)
1244 Key *key; 1244 Key *key;
1245 char *cuser, *chost; 1245 char *cuser, *chost;
1246 u_char *blob; 1246 u_char *blob;
1247 u_int bloblen; 1247 u_int bloblen, pubkey_auth_attempt;
1248 enum mm_keytype type = 0; 1248 enum mm_keytype type = 0;
1249 int allowed = 0; 1249 int allowed = 0;
1250 1250
@@ -1254,6 +1254,7 @@ mm_answer_keyallowed(int sock, Buffer *m)
1254 cuser = buffer_get_string(m, NULL); 1254 cuser = buffer_get_string(m, NULL);
1255 chost = buffer_get_string(m, NULL); 1255 chost = buffer_get_string(m, NULL);
1256 blob = buffer_get_string(m, &bloblen); 1256 blob = buffer_get_string(m, &bloblen);
1257 pubkey_auth_attempt = buffer_get_int(m);
1257 1258
1258 key = key_from_blob(blob, bloblen); 1259 key = key_from_blob(blob, bloblen);
1259 1260
@@ -1274,19 +1275,19 @@ mm_answer_keyallowed(int sock, Buffer *m)
1274 allowed = options.pubkey_authentication && 1275 allowed = options.pubkey_authentication &&
1275 !auth2_userkey_already_used(authctxt, key) && 1276 !auth2_userkey_already_used(authctxt, key) &&
1276 match_pattern_list(sshkey_ssh_name(key), 1277 match_pattern_list(sshkey_ssh_name(key),
1277 options.pubkey_key_types, 1278 options.pubkey_key_types, 0) == 1 &&
1278 strlen(options.pubkey_key_types), 0) == 1 && 1279 user_key_allowed(authctxt->pw, key,
1279 user_key_allowed(authctxt->pw, key); 1280 pubkey_auth_attempt);
1280 pubkey_auth_info(authctxt, key, NULL); 1281 pubkey_auth_info(authctxt, key, NULL);
1281 auth_method = "publickey"; 1282 auth_method = "publickey";
1282 if (options.pubkey_authentication && allowed != 1) 1283 if (options.pubkey_authentication &&
1284 (!pubkey_auth_attempt || allowed != 1))
1283 auth_clear_options(); 1285 auth_clear_options();
1284 break; 1286 break;
1285 case MM_HOSTKEY: 1287 case MM_HOSTKEY:
1286 allowed = options.hostbased_authentication && 1288 allowed = options.hostbased_authentication &&
1287 match_pattern_list(sshkey_ssh_name(key), 1289 match_pattern_list(sshkey_ssh_name(key),
1288 options.hostbased_key_types, 1290 options.hostbased_key_types, 0) == 1 &&
1289 strlen(options.hostbased_key_types), 0) == 1 &&
1290 hostbased_key_allowed(authctxt->pw, 1291 hostbased_key_allowed(authctxt->pw,
1291 cuser, chost, key); 1292 cuser, chost, key);
1292 pubkey_auth_info(authctxt, key, 1293 pubkey_auth_info(authctxt, key,
@@ -1533,6 +1534,9 @@ mm_record_login(Session *s, struct passwd *pw)
1533 socklen_t fromlen; 1534 socklen_t fromlen;
1534 struct sockaddr_storage from; 1535 struct sockaddr_storage from;
1535 1536
1537 if (options.use_login)
1538 return;
1539
1536 /* 1540 /*
1537 * Get IP address of client. If the connection is not a socket, let 1541 * Get IP address of client. If the connection is not a socket, let
1538 * the address be 0.0.0.0. 1542 * the address be 0.0.0.0.
diff --git a/monitor_wrap.c b/monitor_wrap.c
index a5f4e9d3c..2a0fe9bf6 100644
--- a/monitor_wrap.c
+++ b/monitor_wrap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.c,v 1.84 2015/02/16 22:13:32 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.c,v 1.85 2015/05/01 03:23:51 djm Exp $ */
2/* 2/*
3 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
4 * Copyright 2002 Markus Friedl <markus@openbsd.org> 4 * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -153,10 +153,8 @@ mm_request_receive(int sock, Buffer *m)
153 debug3("%s entering", __func__); 153 debug3("%s entering", __func__);
154 154
155 if (atomicio(read, sock, buf, sizeof(buf)) != sizeof(buf)) { 155 if (atomicio(read, sock, buf, sizeof(buf)) != sizeof(buf)) {
156 if (errno == EPIPE) { 156 if (errno == EPIPE)
157 error("%s: socket closed", __func__);
158 cleanup_exit(255); 157 cleanup_exit(255);
159 }
160 fatal("%s: read: %s", __func__, strerror(errno)); 158 fatal("%s: read: %s", __func__, strerror(errno));
161 } 159 }
162 msg_len = get_u32(buf); 160 msg_len = get_u32(buf);
@@ -391,16 +389,17 @@ mm_auth_password(Authctxt *authctxt, char *password)
391} 389}
392 390
393int 391int
394mm_user_key_allowed(struct passwd *pw, Key *key) 392mm_user_key_allowed(struct passwd *pw, Key *key, int pubkey_auth_attempt)
395{ 393{
396 return (mm_key_allowed(MM_USERKEY, NULL, NULL, key)); 394 return (mm_key_allowed(MM_USERKEY, NULL, NULL, key,
395 pubkey_auth_attempt));
397} 396}
398 397
399int 398int
400mm_hostbased_key_allowed(struct passwd *pw, char *user, char *host, 399mm_hostbased_key_allowed(struct passwd *pw, char *user, char *host,
401 Key *key) 400 Key *key)
402{ 401{
403 return (mm_key_allowed(MM_HOSTKEY, user, host, key)); 402 return (mm_key_allowed(MM_HOSTKEY, user, host, key, 0));
404} 403}
405 404
406int 405int
@@ -410,13 +409,14 @@ mm_auth_rhosts_rsa_key_allowed(struct passwd *pw, char *user,
410 int ret; 409 int ret;
411 410
412 key->type = KEY_RSA; /* XXX hack for key_to_blob */ 411 key->type = KEY_RSA; /* XXX hack for key_to_blob */
413 ret = mm_key_allowed(MM_RSAHOSTKEY, user, host, key); 412 ret = mm_key_allowed(MM_RSAHOSTKEY, user, host, key, 0);
414 key->type = KEY_RSA1; 413 key->type = KEY_RSA1;
415 return (ret); 414 return (ret);
416} 415}
417 416
418int 417int
419mm_key_allowed(enum mm_keytype type, char *user, char *host, Key *key) 418mm_key_allowed(enum mm_keytype type, char *user, char *host, Key *key,
419 int pubkey_auth_attempt)
420{ 420{
421 Buffer m; 421 Buffer m;
422 u_char *blob; 422 u_char *blob;
@@ -434,6 +434,7 @@ mm_key_allowed(enum mm_keytype type, char *user, char *host, Key *key)
434 buffer_put_cstring(&m, user ? user : ""); 434 buffer_put_cstring(&m, user ? user : "");
435 buffer_put_cstring(&m, host ? host : ""); 435 buffer_put_cstring(&m, host ? host : "");
436 buffer_put_string(&m, blob, len); 436 buffer_put_string(&m, blob, len);
437 buffer_put_int(&m, pubkey_auth_attempt);
437 free(blob); 438 free(blob);
438 439
439 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); 440 mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m);
diff --git a/monitor_wrap.h b/monitor_wrap.h
index f99c31c43..682939215 100644
--- a/monitor_wrap.h
+++ b/monitor_wrap.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: monitor_wrap.h,v 1.26 2015/02/16 22:13:32 djm Exp $ */ 1/* $OpenBSD: monitor_wrap.h,v 1.27 2015/05/01 03:23:51 djm Exp $ */
2 2
3/* 3/*
4 * Copyright 2002 Niels Provos <provos@citi.umich.edu> 4 * Copyright 2002 Niels Provos <provos@citi.umich.edu>
@@ -46,8 +46,8 @@ void mm_inform_authrole(char *);
46struct passwd *mm_getpwnamallow(const char *); 46struct passwd *mm_getpwnamallow(const char *);
47char *mm_auth2_read_banner(void); 47char *mm_auth2_read_banner(void);
48int mm_auth_password(struct Authctxt *, char *); 48int mm_auth_password(struct Authctxt *, char *);
49int mm_key_allowed(enum mm_keytype, char *, char *, Key *); 49int mm_key_allowed(enum mm_keytype, char *, char *, Key *, int);
50int mm_user_key_allowed(struct passwd *, Key *); 50int mm_user_key_allowed(struct passwd *, Key *, int);
51int mm_hostbased_key_allowed(struct passwd *, char *, char *, Key *); 51int mm_hostbased_key_allowed(struct passwd *, char *, char *, Key *);
52int mm_auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *); 52int mm_auth_rhosts_rsa_key_allowed(struct passwd *, char *, char *, Key *);
53int mm_key_verify(Key *, u_char *, u_int, u_char *, u_int); 53int mm_key_verify(Key *, u_char *, u_int, u_char *, u_int);
diff --git a/mux.c b/mux.c
index f3faaeec9..cdc01bd4f 100644
--- a/mux.c
+++ b/mux.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: mux.c,v 1.50 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: mux.c,v 1.53 2015/05/01 04:03:20 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -350,7 +350,7 @@ process_mux_new_session(u_int rid, Channel *c, Buffer *m, Buffer *r)
350 free(cp); 350 free(cp);
351 continue; 351 continue;
352 } 352 }
353 cctx->env = xrealloc(cctx->env, env_len + 2, 353 cctx->env = xreallocarray(cctx->env, env_len + 2,
354 sizeof(*cctx->env)); 354 sizeof(*cctx->env));
355 cctx->env[env_len++] = cp; 355 cctx->env[env_len++] = cp;
356 cctx->env[env_len] = NULL; 356 cctx->env[env_len] = NULL;
@@ -593,7 +593,9 @@ mux_confirm_remote_forward(int type, u_int32_t seq, void *ctxt)
593 return; 593 return;
594 } 594 }
595 buffer_init(&out); 595 buffer_init(&out);
596 if (fctx->fid >= options.num_remote_forwards) { 596 if (fctx->fid >= options.num_remote_forwards ||
597 (options.remote_forwards[fctx->fid].connect_path == NULL &&
598 options.remote_forwards[fctx->fid].connect_host == NULL)) {
597 xasprintf(&failmsg, "unknown forwarding id %d", fctx->fid); 599 xasprintf(&failmsg, "unknown forwarding id %d", fctx->fid);
598 goto fail; 600 goto fail;
599 } 601 }
@@ -605,7 +607,7 @@ mux_confirm_remote_forward(int type, u_int32_t seq, void *ctxt)
605 if (type == SSH2_MSG_REQUEST_SUCCESS) { 607 if (type == SSH2_MSG_REQUEST_SUCCESS) {
606 if (rfwd->listen_port == 0) { 608 if (rfwd->listen_port == 0) {
607 rfwd->allocated_port = packet_get_int(); 609 rfwd->allocated_port = packet_get_int();
608 logit("Allocated port %u for mux remote forward" 610 debug("Allocated port %u for mux remote forward"
609 " to %s:%d", rfwd->allocated_port, 611 " to %s:%d", rfwd->allocated_port,
610 rfwd->connect_host, rfwd->connect_port); 612 rfwd->connect_host, rfwd->connect_port);
611 buffer_put_int(&out, MUX_S_REMOTE_PORT); 613 buffer_put_int(&out, MUX_S_REMOTE_PORT);
@@ -627,6 +629,17 @@ mux_confirm_remote_forward(int type, u_int32_t seq, void *ctxt)
627 else 629 else
628 xasprintf(&failmsg, "remote port forwarding failed for " 630 xasprintf(&failmsg, "remote port forwarding failed for "
629 "listen port %d", rfwd->listen_port); 631 "listen port %d", rfwd->listen_port);
632
633 debug2("%s: clearing registered forwarding for listen %d, "
634 "connect %s:%d", __func__, rfwd->listen_port,
635 rfwd->connect_path ? rfwd->connect_path :
636 rfwd->connect_host, rfwd->connect_port);
637
638 free(rfwd->listen_host);
639 free(rfwd->listen_path);
640 free(rfwd->connect_host);
641 free(rfwd->connect_path);
642 memset(rfwd, 0, sizeof(*rfwd));
630 } 643 }
631 fail: 644 fail:
632 error("%s: %s", __func__, failmsg); 645 error("%s: %s", __func__, failmsg);
@@ -1722,7 +1735,7 @@ mux_client_forward(int fd, int cancel_flag, u_int ftype, struct Forward *fwd)
1722 if (cancel_flag) 1735 if (cancel_flag)
1723 fatal("%s: got MUX_S_REMOTE_PORT for cancel", __func__); 1736 fatal("%s: got MUX_S_REMOTE_PORT for cancel", __func__);
1724 fwd->allocated_port = buffer_get_int(&m); 1737 fwd->allocated_port = buffer_get_int(&m);
1725 logit("Allocated port %u for remote forward to %s:%d", 1738 verbose("Allocated port %u for remote forward to %s:%d",
1726 fwd->allocated_port, 1739 fwd->allocated_port,
1727 fwd->connect_host ? fwd->connect_host : "", 1740 fwd->connect_host ? fwd->connect_host : "",
1728 fwd->connect_port); 1741 fwd->connect_port);
diff --git a/myproposal.h b/myproposal.h
index b35b2b8bd..84b63bcd5 100644
--- a/myproposal.h
+++ b/myproposal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: myproposal.h,v 1.41 2014/07/11 13:54:34 tedu Exp $ */ 1/* $OpenBSD: myproposal.h,v 1.44 2015/05/27 23:51:10 dtucker Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -61,7 +61,7 @@
61 61
62#ifdef OPENSSL_HAVE_EVPGCM 62#ifdef OPENSSL_HAVE_EVPGCM
63# define AESGCM_CIPHER_MODES \ 63# define AESGCM_CIPHER_MODES \
64 "aes128-gcm@openssh.com,aes256-gcm@openssh.com," 64 ",aes128-gcm@openssh.com,aes256-gcm@openssh.com"
65#else 65#else
66# define AESGCM_CIPHER_MODES 66# define AESGCM_CIPHER_MODES
67#endif 67#endif
@@ -83,14 +83,17 @@
83# else 83# else
84# define KEX_CURVE25519_METHODS "" 84# define KEX_CURVE25519_METHODS ""
85# endif 85# endif
86#define KEX_SERVER_KEX \ 86#define KEX_COMMON_KEX \
87 KEX_CURVE25519_METHODS \ 87 KEX_CURVE25519_METHODS \
88 KEX_ECDH_METHODS \ 88 KEX_ECDH_METHODS \
89 KEX_SHA256_METHODS \ 89 KEX_SHA256_METHODS
90 "diffie-hellman-group14-sha1"
91 90
92#define KEX_CLIENT_KEX KEX_SERVER_KEX "," \ 91#define KEX_SERVER_KEX KEX_COMMON_KEX \
92 "diffie-hellman-group14-sha1" \
93
94#define KEX_CLIENT_KEX KEX_COMMON_KEX \
93 "diffie-hellman-group-exchange-sha1," \ 95 "diffie-hellman-group-exchange-sha1," \
96 "diffie-hellman-group14-sha1," \
94 "diffie-hellman-group1-sha1" 97 "diffie-hellman-group1-sha1"
95 98
96#define KEX_DEFAULT_PK_ALG \ 99#define KEX_DEFAULT_PK_ALG \
@@ -108,9 +111,9 @@
108/* the actual algorithms */ 111/* the actual algorithms */
109 112
110#define KEX_SERVER_ENCRYPT \ 113#define KEX_SERVER_ENCRYPT \
111 "aes128-ctr,aes192-ctr,aes256-ctr," \ 114 "chacha20-poly1305@openssh.com," \
112 AESGCM_CIPHER_MODES \ 115 "aes128-ctr,aes192-ctr,aes256-ctr" \
113 "chacha20-poly1305@openssh.com" 116 AESGCM_CIPHER_MODES
114 117
115#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT "," \ 118#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT "," \
116 "arcfour256,arcfour128," \ 119 "arcfour256,arcfour128," \
@@ -148,8 +151,8 @@
148 "ssh-ed25519-cert-v01@openssh.com," \ 151 "ssh-ed25519-cert-v01@openssh.com," \
149 "ssh-ed25519" 152 "ssh-ed25519"
150#define KEX_SERVER_ENCRYPT \ 153#define KEX_SERVER_ENCRYPT \
151 "aes128-ctr,aes192-ctr,aes256-ctr," \ 154 "chacha20-poly1305@openssh.com," \
152 "chacha20-poly1305@openssh.com" 155 "aes128-ctr,aes192-ctr,aes256-ctr"
153#define KEX_SERVER_MAC \ 156#define KEX_SERVER_MAC \
154 "umac-64-etm@openssh.com," \ 157 "umac-64-etm@openssh.com," \
155 "umac-128-etm@openssh.com," \ 158 "umac-128-etm@openssh.com," \
diff --git a/openbsd-compat/bcrypt_pbkdf.c b/openbsd-compat/bcrypt_pbkdf.c
index 16912575a..0a07f9a0f 100644
--- a/openbsd-compat/bcrypt_pbkdf.c
+++ b/openbsd-compat/bcrypt_pbkdf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bcrypt_pbkdf.c,v 1.9 2014/07/13 21:21:25 tedu Exp $ */ 1/* $OpenBSD: bcrypt_pbkdf.c,v 1.13 2015/01/12 03:20:04 tedu Exp $ */
2/* 2/*
3 * Copyright (c) 2013 Ted Unangst <tedu@openbsd.org> 3 * Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>
4 * 4 *
@@ -37,6 +37,8 @@
37#endif 37#endif
38#define SHA512_DIGEST_LENGTH crypto_hash_sha512_BYTES 38#define SHA512_DIGEST_LENGTH crypto_hash_sha512_BYTES
39 39
40#define MINIMUM(a,b) (((a) < (b)) ? (a) : (b))
41
40/* 42/*
41 * pkcs #5 pbkdf2 implementation using the "bcrypt" hash 43 * pkcs #5 pbkdf2 implementation using the "bcrypt" hash
42 * 44 *
@@ -61,8 +63,8 @@
61 * wise caller could do; we just do it for you. 63 * wise caller could do; we just do it for you.
62 */ 64 */
63 65
64#define BCRYPT_BLOCKS 8 66#define BCRYPT_WORDS 8
65#define BCRYPT_HASHSIZE (BCRYPT_BLOCKS * 4) 67#define BCRYPT_HASHSIZE (BCRYPT_WORDS * 4)
66 68
67static void 69static void
68bcrypt_hash(u_int8_t *sha2pass, u_int8_t *sha2salt, u_int8_t *out) 70bcrypt_hash(u_int8_t *sha2pass, u_int8_t *sha2salt, u_int8_t *out)
@@ -70,7 +72,7 @@ bcrypt_hash(u_int8_t *sha2pass, u_int8_t *sha2salt, u_int8_t *out)
70 blf_ctx state; 72 blf_ctx state;
71 u_int8_t ciphertext[BCRYPT_HASHSIZE] = 73 u_int8_t ciphertext[BCRYPT_HASHSIZE] =
72 "OxychromaticBlowfishSwatDynamite"; 74 "OxychromaticBlowfishSwatDynamite";
73 uint32_t cdata[BCRYPT_BLOCKS]; 75 uint32_t cdata[BCRYPT_WORDS];
74 int i; 76 int i;
75 uint16_t j; 77 uint16_t j;
76 size_t shalen = SHA512_DIGEST_LENGTH; 78 size_t shalen = SHA512_DIGEST_LENGTH;
@@ -85,14 +87,14 @@ bcrypt_hash(u_int8_t *sha2pass, u_int8_t *sha2salt, u_int8_t *out)
85 87
86 /* encryption */ 88 /* encryption */
87 j = 0; 89 j = 0;
88 for (i = 0; i < BCRYPT_BLOCKS; i++) 90 for (i = 0; i < BCRYPT_WORDS; i++)
89 cdata[i] = Blowfish_stream2word(ciphertext, sizeof(ciphertext), 91 cdata[i] = Blowfish_stream2word(ciphertext, sizeof(ciphertext),
90 &j); 92 &j);
91 for (i = 0; i < 64; i++) 93 for (i = 0; i < 64; i++)
92 blf_enc(&state, cdata, sizeof(cdata) / sizeof(uint64_t)); 94 blf_enc(&state, cdata, sizeof(cdata) / sizeof(uint64_t));
93 95
94 /* copy out */ 96 /* copy out */
95 for (i = 0; i < BCRYPT_BLOCKS; i++) { 97 for (i = 0; i < BCRYPT_WORDS; i++) {
96 out[4 * i + 3] = (cdata[i] >> 24) & 0xff; 98 out[4 * i + 3] = (cdata[i] >> 24) & 0xff;
97 out[4 * i + 2] = (cdata[i] >> 16) & 0xff; 99 out[4 * i + 2] = (cdata[i] >> 16) & 0xff;
98 out[4 * i + 1] = (cdata[i] >> 8) & 0xff; 100 out[4 * i + 1] = (cdata[i] >> 8) & 0xff;
@@ -156,9 +158,9 @@ bcrypt_pbkdf(const char *pass, size_t passlen, const u_int8_t *salt, size_t salt
156 } 158 }
157 159
158 /* 160 /*
159 * pbkdf2 deviation: ouput the key material non-linearly. 161 * pbkdf2 deviation: output the key material non-linearly.
160 */ 162 */
161 amt = MIN(amt, keylen); 163 amt = MINIMUM(amt, keylen);
162 for (i = 0; i < amt; i++) { 164 for (i = 0; i < amt; i++) {
163 size_t dest = i * stride + (count - 1); 165 size_t dest = i * stride + (count - 1);
164 if (dest >= origkeylen) 166 if (dest >= origkeylen)
diff --git a/openbsd-compat/blowfish.c b/openbsd-compat/blowfish.c
index 6c419549e..e10f7e7d9 100644
--- a/openbsd-compat/blowfish.c
+++ b/openbsd-compat/blowfish.c
@@ -50,7 +50,9 @@
50#endif 50#endif
51 51
52#include <sys/types.h> 52#include <sys/types.h>
53#ifdef HAVE_BLF_H
53#include <blf.h> 54#include <blf.h>
55#endif
54 56
55#undef inline 57#undef inline
56#ifdef __GNUC__ 58#ifdef __GNUC__
diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c
index a2d82126d..8672ccf7f 100644
--- a/openbsd-compat/bsd-cygwin_util.c
+++ b/openbsd-compat/bsd-cygwin_util.c
@@ -68,7 +68,7 @@ cygwin_ssh_privsep_user()
68 if (cygwin_internal (CW_CYGNAME_FROM_WINNAME, "sshd", cyg_privsep_user, 68 if (cygwin_internal (CW_CYGNAME_FROM_WINNAME, "sshd", cyg_privsep_user,
69 sizeof cyg_privsep_user) != 0) 69 sizeof cyg_privsep_user) != 0)
70#endif 70#endif
71 strcpy (cyg_privsep_user, "sshd"); 71 strlcpy(cyg_privsep_user, "sshd", sizeof(cyg_privsep_user));
72 } 72 }
73 return cyg_privsep_user; 73 return cyg_privsep_user;
74} 74}
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h
index 65c18ec2f..ff347a24b 100644
--- a/openbsd-compat/bsd-misc.h
+++ b/openbsd-compat/bsd-misc.h
@@ -111,7 +111,7 @@ pid_t getpgid(pid_t);
111#endif 111#endif
112 112
113#ifndef HAVE_ENDGRENT 113#ifndef HAVE_ENDGRENT
114# define endgrent() {} 114# define endgrent() do { } while(0)
115#endif 115#endif
116 116
117#ifndef HAVE_KRB5_GET_ERROR_MESSAGE 117#ifndef HAVE_KRB5_GET_ERROR_MESSAGE
@@ -119,7 +119,7 @@ pid_t getpgid(pid_t);
119#endif 119#endif
120 120
121#ifndef HAVE_KRB5_FREE_ERROR_MESSAGE 121#ifndef HAVE_KRB5_FREE_ERROR_MESSAGE
122# define krb5_free_error_message(a,b) while(0) 122# define krb5_free_error_message(a,b) do { } while(0)
123#endif 123#endif
124 124
125#endif /* _BSD_MISC_H */ 125#endif /* _BSD_MISC_H */
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h
index 1cffefe06..cb59ccd57 100644
--- a/openbsd-compat/openbsd-compat.h
+++ b/openbsd-compat/openbsd-compat.h
@@ -221,7 +221,7 @@ long long strtonum(const char *, long long, long long, const char **);
221 221
222/* multibyte character support */ 222/* multibyte character support */
223#ifndef HAVE_MBLEN 223#ifndef HAVE_MBLEN
224# define mblen(x, y) 1 224# define mblen(x, y) (1)
225#endif 225#endif
226 226
227#if !defined(HAVE_VASPRINTF) || !defined(HAVE_VSNPRINTF) 227#if !defined(HAVE_VASPRINTF) || !defined(HAVE_VSNPRINTF)
diff --git a/openbsd-compat/rmd160.c b/openbsd-compat/rmd160.c
index 2a14dd7b0..e915141a5 100644
--- a/openbsd-compat/rmd160.c
+++ b/openbsd-compat/rmd160.c
@@ -32,7 +32,9 @@
32#ifndef WITH_OPENSSL 32#ifndef WITH_OPENSSL
33 33
34#include <sys/types.h> 34#include <sys/types.h>
35#ifdef HAVE_ENDIAN_H
35#include <endian.h> 36#include <endian.h>
37#endif
36#include <string.h> 38#include <string.h>
37#include <rmd160.h> 39#include <rmd160.h>
38 40
diff --git a/packet.c b/packet.c
index b1219c85b..a7727ef65 100644
--- a/packet.c
+++ b/packet.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.c,v 1.208 2015/02/13 18:57:00 markus Exp $ */ 1/* $OpenBSD: packet.c,v 1.212 2015/05/01 07:10:01 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -290,6 +290,7 @@ ssh_packet_set_connection(struct ssh *ssh, int fd_in, int fd_out)
290 (r = cipher_init(&state->receive_context, none, 290 (r = cipher_init(&state->receive_context, none,
291 (const u_char *)"", 0, NULL, 0, CIPHER_DECRYPT)) != 0) { 291 (const u_char *)"", 0, NULL, 0, CIPHER_DECRYPT)) != 0) {
292 error("%s: cipher_init failed: %s", __func__, ssh_err(r)); 292 error("%s: cipher_init failed: %s", __func__, ssh_err(r));
293 free(ssh);
293 return NULL; 294 return NULL;
294 } 295 }
295 state->newkeys[MODE_IN] = state->newkeys[MODE_OUT] = NULL; 296 state->newkeys[MODE_IN] = state->newkeys[MODE_OUT] = NULL;
@@ -791,7 +792,9 @@ ssh_packet_set_compress_hooks(struct ssh *ssh, void *ctx,
791void 792void
792ssh_packet_set_encryption_key(struct ssh *ssh, const u_char *key, u_int keylen, int number) 793ssh_packet_set_encryption_key(struct ssh *ssh, const u_char *key, u_int keylen, int number)
793{ 794{
794#ifdef WITH_SSH1 795#ifndef WITH_SSH1
796 fatal("no SSH protocol 1 support");
797#else /* WITH_SSH1 */
795 struct session_state *state = ssh->state; 798 struct session_state *state = ssh->state;
796 const struct sshcipher *cipher = cipher_by_number(number); 799 const struct sshcipher *cipher = cipher_by_number(number);
797 int r; 800 int r;
@@ -1279,7 +1282,7 @@ ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1279 * been sent. 1282 * been sent.
1280 */ 1283 */
1281 if ((r = ssh_packet_write_wait(ssh)) != 0) 1284 if ((r = ssh_packet_write_wait(ssh)) != 0)
1282 return r; 1285 goto out;
1283 1286
1284 /* Stay in the loop until we have received a complete packet. */ 1287 /* Stay in the loop until we have received a complete packet. */
1285 for (;;) { 1288 for (;;) {
@@ -1337,15 +1340,20 @@ ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
1337 len = roaming_read(state->connection_in, buf, 1340 len = roaming_read(state->connection_in, buf,
1338 sizeof(buf), &cont); 1341 sizeof(buf), &cont);
1339 } while (len == 0 && cont); 1342 } while (len == 0 && cont);
1340 if (len == 0) 1343 if (len == 0) {
1341 return SSH_ERR_CONN_CLOSED; 1344 r = SSH_ERR_CONN_CLOSED;
1342 if (len < 0) 1345 goto out;
1343 return SSH_ERR_SYSTEM_ERROR; 1346 }
1347 if (len < 0) {
1348 r = SSH_ERR_SYSTEM_ERROR;
1349 goto out;
1350 }
1344 1351
1345 /* Append it to the buffer. */ 1352 /* Append it to the buffer. */
1346 if ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0) 1353 if ((r = ssh_packet_process_incoming(ssh, buf, len)) != 0)
1347 return r; 1354 goto out;
1348 } 1355 }
1356 out:
1349 free(setp); 1357 free(setp);
1350 return r; 1358 return r;
1351} 1359}
@@ -1912,9 +1920,19 @@ sshpkt_fatal(struct ssh *ssh, const char *tag, int r)
1912 logit("Connection closed by %.200s", ssh_remote_ipaddr(ssh)); 1920 logit("Connection closed by %.200s", ssh_remote_ipaddr(ssh));
1913 cleanup_exit(255); 1921 cleanup_exit(255);
1914 case SSH_ERR_CONN_TIMEOUT: 1922 case SSH_ERR_CONN_TIMEOUT:
1915 logit("Connection to %.200s timed out while " 1923 logit("Connection to %.200s timed out", ssh_remote_ipaddr(ssh));
1916 "waiting to write", ssh_remote_ipaddr(ssh));
1917 cleanup_exit(255); 1924 cleanup_exit(255);
1925 case SSH_ERR_DISCONNECTED:
1926 logit("Disconnected from %.200s",
1927 ssh_remote_ipaddr(ssh));
1928 cleanup_exit(255);
1929 case SSH_ERR_SYSTEM_ERROR:
1930 if (errno == ECONNRESET) {
1931 logit("Connection reset by %.200s",
1932 ssh_remote_ipaddr(ssh));
1933 cleanup_exit(255);
1934 }
1935 /* FALLTHROUGH */
1918 default: 1936 default:
1919 fatal("%s%sConnection to %.200s: %s", 1937 fatal("%s%sConnection to %.200s: %s",
1920 tag != NULL ? tag : "", tag != NULL ? ": " : "", 1938 tag != NULL ? tag : "", tag != NULL ? ": " : "",
@@ -2727,13 +2745,14 @@ sshpkt_put_stringb(struct ssh *ssh, const struct sshbuf *v)
2727 return sshbuf_put_stringb(ssh->state->outgoing_packet, v); 2745 return sshbuf_put_stringb(ssh->state->outgoing_packet, v);
2728} 2746}
2729 2747
2730#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC) 2748#ifdef WITH_OPENSSL
2749#ifdef OPENSSL_HAS_ECC
2731int 2750int
2732sshpkt_put_ec(struct ssh *ssh, const EC_POINT *v, const EC_GROUP *g) 2751sshpkt_put_ec(struct ssh *ssh, const EC_POINT *v, const EC_GROUP *g)
2733{ 2752{
2734 return sshbuf_put_ec(ssh->state->outgoing_packet, v, g); 2753 return sshbuf_put_ec(ssh->state->outgoing_packet, v, g);
2735} 2754}
2736#endif /* WITH_OPENSSL && OPENSSL_HAS_ECC */ 2755#endif /* OPENSSL_HAS_ECC */
2737 2756
2738#ifdef WITH_SSH1 2757#ifdef WITH_SSH1
2739int 2758int
@@ -2743,7 +2762,6 @@ sshpkt_put_bignum1(struct ssh *ssh, const BIGNUM *v)
2743} 2762}
2744#endif /* WITH_SSH1 */ 2763#endif /* WITH_SSH1 */
2745 2764
2746#ifdef WITH_OPENSSL
2747int 2765int
2748sshpkt_put_bignum2(struct ssh *ssh, const BIGNUM *v) 2766sshpkt_put_bignum2(struct ssh *ssh, const BIGNUM *v)
2749{ 2767{
@@ -2795,13 +2813,14 @@ sshpkt_get_cstring(struct ssh *ssh, char **valp, size_t *lenp)
2795 return sshbuf_get_cstring(ssh->state->incoming_packet, valp, lenp); 2813 return sshbuf_get_cstring(ssh->state->incoming_packet, valp, lenp);
2796} 2814}
2797 2815
2798#if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC) 2816#ifdef WITH_OPENSSL
2817#ifdef OPENSSL_HAS_ECC
2799int 2818int
2800sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g) 2819sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g)
2801{ 2820{
2802 return sshbuf_get_ec(ssh->state->incoming_packet, v, g); 2821 return sshbuf_get_ec(ssh->state->incoming_packet, v, g);
2803} 2822}
2804#endif /* WITH_OPENSSL && OPENSSL_HAS_ECC */ 2823#endif /* OPENSSL_HAS_ECC */
2805 2824
2806#ifdef WITH_SSH1 2825#ifdef WITH_SSH1
2807int 2826int
@@ -2811,7 +2830,6 @@ sshpkt_get_bignum1(struct ssh *ssh, BIGNUM *v)
2811} 2830}
2812#endif /* WITH_SSH1 */ 2831#endif /* WITH_SSH1 */
2813 2832
2814#ifdef WITH_OPENSSL
2815int 2833int
2816sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v) 2834sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v)
2817{ 2835{
diff --git a/readconf.c b/readconf.c
index 66a62f269..f0769b574 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.c,v 1.232 2015/02/16 22:13:32 djm Exp $ */ 1/* $OpenBSD: readconf.c,v 1.237 2015/06/26 05:13:20 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -312,7 +312,7 @@ add_local_forward(Options *options, const struct Forward *newfwd)
312 newfwd->listen_path == NULL) 312 newfwd->listen_path == NULL)
313 fatal("Privileged ports can only be forwarded by root."); 313 fatal("Privileged ports can only be forwarded by root.");
314#endif 314#endif
315 options->local_forwards = xrealloc(options->local_forwards, 315 options->local_forwards = xreallocarray(options->local_forwards,
316 options->num_local_forwards + 1, 316 options->num_local_forwards + 1,
317 sizeof(*options->local_forwards)); 317 sizeof(*options->local_forwards));
318 fwd = &options->local_forwards[options->num_local_forwards++]; 318 fwd = &options->local_forwards[options->num_local_forwards++];
@@ -335,7 +335,7 @@ add_remote_forward(Options *options, const struct Forward *newfwd)
335{ 335{
336 struct Forward *fwd; 336 struct Forward *fwd;
337 337
338 options->remote_forwards = xrealloc(options->remote_forwards, 338 options->remote_forwards = xreallocarray(options->remote_forwards,
339 options->num_remote_forwards + 1, 339 options->num_remote_forwards + 1,
340 sizeof(*options->remote_forwards)); 340 sizeof(*options->remote_forwards));
341 fwd = &options->remote_forwards[options->num_remote_forwards++]; 341 fwd = &options->remote_forwards[options->num_remote_forwards++];
@@ -509,7 +509,6 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
509 char *arg, *oattrib, *attrib, *cmd, *cp = *condition, *host, *criteria; 509 char *arg, *oattrib, *attrib, *cmd, *cp = *condition, *host, *criteria;
510 const char *ruser; 510 const char *ruser;
511 int r, port, this_result, result = 1, attributes = 0, negate; 511 int r, port, this_result, result = 1, attributes = 0, negate;
512 size_t len;
513 char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV]; 512 char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV];
514 513
515 /* 514 /*
@@ -562,25 +561,24 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw,
562 result = -1; 561 result = -1;
563 goto out; 562 goto out;
564 } 563 }
565 len = strlen(arg);
566 if (strcasecmp(attrib, "host") == 0) { 564 if (strcasecmp(attrib, "host") == 0) {
567 criteria = xstrdup(host); 565 criteria = xstrdup(host);
568 r = match_hostname(host, arg, len) == 1; 566 r = match_hostname(host, arg) == 1;
569 if (r == (negate ? 1 : 0)) 567 if (r == (negate ? 1 : 0))
570 this_result = result = 0; 568 this_result = result = 0;
571 } else if (strcasecmp(attrib, "originalhost") == 0) { 569 } else if (strcasecmp(attrib, "originalhost") == 0) {
572 criteria = xstrdup(original_host); 570 criteria = xstrdup(original_host);
573 r = match_hostname(original_host, arg, len) == 1; 571 r = match_hostname(original_host, arg) == 1;
574 if (r == (negate ? 1 : 0)) 572 if (r == (negate ? 1 : 0))
575 this_result = result = 0; 573 this_result = result = 0;
576 } else if (strcasecmp(attrib, "user") == 0) { 574 } else if (strcasecmp(attrib, "user") == 0) {
577 criteria = xstrdup(ruser); 575 criteria = xstrdup(ruser);
578 r = match_pattern_list(ruser, arg, len, 0) == 1; 576 r = match_pattern_list(ruser, arg, 0) == 1;
579 if (r == (negate ? 1 : 0)) 577 if (r == (negate ? 1 : 0))
580 this_result = result = 0; 578 this_result = result = 0;
581 } else if (strcasecmp(attrib, "localuser") == 0) { 579 } else if (strcasecmp(attrib, "localuser") == 0) {
582 criteria = xstrdup(pw->pw_name); 580 criteria = xstrdup(pw->pw_name);
583 r = match_pattern_list(pw->pw_name, arg, len, 0) == 1; 581 r = match_pattern_list(pw->pw_name, arg, 0) == 1;
584 if (r == (negate ? 1 : 0)) 582 if (r == (negate ? 1 : 0))
585 this_result = result = 0; 583 this_result = result = 0;
586 } else if (strcasecmp(attrib, "exec") == 0) { 584 } else if (strcasecmp(attrib, "exec") == 0) {
@@ -682,8 +680,8 @@ parse_token(const char *cp, const char *filename, int linenum,
682 for (i = 0; keywords[i].name; i++) 680 for (i = 0; keywords[i].name; i++)
683 if (strcmp(cp, keywords[i].name) == 0) 681 if (strcmp(cp, keywords[i].name) == 0)
684 return keywords[i].opcode; 682 return keywords[i].opcode;
685 if (ignored_unknown != NULL && match_pattern_list(cp, ignored_unknown, 683 if (ignored_unknown != NULL &&
686 strlen(ignored_unknown), 1) == 1) 684 match_pattern_list(cp, ignored_unknown, 1) == 1)
687 return oIgnoredUnknownOption; 685 return oIgnoredUnknownOption;
688 error("%s: line %d: Bad configuration option: %s", 686 error("%s: line %d: Bad configuration option: %s",
689 filename, linenum, cp); 687 filename, linenum, cp);
@@ -780,7 +778,9 @@ process_config_line(Options *options, struct passwd *pw, const char *host,
780 } 778 }
781 779
782 /* Strip trailing whitespace */ 780 /* Strip trailing whitespace */
783 for (len = strlen(line) - 1; len > 0; len--) { 781 if ((len = strlen(line)) == 0)
782 return 0;
783 for (len--; len > 0; len--) {
784 if (strchr(WHITESPACE, line[len]) == NULL) 784 if (strchr(WHITESPACE, line[len]) == NULL)
785 break; 785 break;
786 line[len] = '\0'; 786 line[len] = '\0';
@@ -1273,13 +1273,13 @@ parse_int:
1273 arg = strdelim(&s); 1273 arg = strdelim(&s);
1274 if (!arg || *arg == '\0') 1274 if (!arg || *arg == '\0')
1275 fatal("%.200s line %d: Missing argument.", filename, linenum); 1275 fatal("%.200s line %d: Missing argument.", filename, linenum);
1276 if (arg[0] == '^' && arg[2] == 0 && 1276 if (strcmp(arg, "none") == 0)
1277 value = SSH_ESCAPECHAR_NONE;
1278 else if (arg[1] == '\0')
1279 value = (u_char) arg[0];
1280 else if (arg[0] == '^' && arg[2] == 0 &&
1277 (u_char) arg[1] >= 64 && (u_char) arg[1] < 128) 1281 (u_char) arg[1] >= 64 && (u_char) arg[1] < 128)
1278 value = (u_char) arg[1] & 31; 1282 value = (u_char) arg[1] & 31;
1279 else if (strlen(arg) == 1)
1280 value = (u_char) arg[0];
1281 else if (strcmp(arg, "none") == 0)
1282 value = SSH_ESCAPECHAR_NONE;
1283 else { 1283 else {
1284 fatal("%.200s line %d: Bad escape character.", 1284 fatal("%.200s line %d: Bad escape character.",
1285 filename, linenum); 1285 filename, linenum);
@@ -1981,7 +1981,8 @@ parse_fwd_field(char **p, struct fwdarg *fwd)
1981 switch (*cp) { 1981 switch (*cp) {
1982 case '\\': 1982 case '\\':
1983 memmove(cp, cp + 1, strlen(cp + 1) + 1); 1983 memmove(cp, cp + 1, strlen(cp + 1) + 1);
1984 cp++; 1984 if (*cp == '\0')
1985 return -1;
1985 break; 1986 break;
1986 case '/': 1987 case '/':
1987 ispath = 1; 1988 ispath = 1;
diff --git a/regress/Makefile b/regress/Makefile
index 99a7d60f5..cba83f4d6 100644
--- a/regress/Makefile
+++ b/regress/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.78 2015/01/26 06:12:18 djm Exp $ 1# $OpenBSD: Makefile,v 1.81 2015/05/21 06:44:25 djm Exp $
2 2
3REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec 3REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec
4tests: prep $(REGRESS_TARGETS) 4tests: prep $(REGRESS_TARGETS)
@@ -54,6 +54,7 @@ LTESTS= connect \
54 multiplex \ 54 multiplex \
55 reexec \ 55 reexec \
56 brokenkeys \ 56 brokenkeys \
57 cfgparse \
57 cfgmatch \ 58 cfgmatch \
58 addrmatch \ 59 addrmatch \
59 localcommand \ 60 localcommand \
@@ -72,7 +73,8 @@ LTESTS= connect \
72 limit-keytype \ 73 limit-keytype \
73 hostkey-agent \ 74 hostkey-agent \
74 keygen-knownhosts \ 75 keygen-knownhosts \
75 hostkey-rotate 76 hostkey-rotate \
77 principals-command
76 78
77 79
78# dhgex \ 80# dhgex \
@@ -180,10 +182,10 @@ t11:
180 ${TEST_SSH_SSHKEYGEN} -E sha256 -lf ${.CURDIR}/rsa_openssh.pub |\ 182 ${TEST_SSH_SSHKEYGEN} -E sha256 -lf ${.CURDIR}/rsa_openssh.pub |\
181 awk '{print $$2}' | diff - ${.CURDIR}/t11.ok 183 awk '{print $$2}' | diff - ${.CURDIR}/t11.ok
182 184
183t12.out: 185$(OBJ)/t12.out:
184 ${TEST_SSH_SSHKEYGEN} -q -t ed25519 -N '' -C 'test-comment-1234' -f $(OBJ)/$@ 186 ${TEST_SSH_SSHKEYGEN} -q -t ed25519 -N '' -C 'test-comment-1234' -f $@
185 187
186t12: t12.out 188t12: $(OBJ)/t12.out
187 ${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t12.out.pub | grep test-comment-1234 >/dev/null 189 ${TEST_SSH_SSHKEYGEN} -lf $(OBJ)/t12.out.pub | grep test-comment-1234 >/dev/null
188 190
189t-exec: ${LTESTS:=.sh} 191t-exec: ${LTESTS:=.sh}
diff --git a/regress/README.regress b/regress/README.regress
index 82e4cc751..9b99bdacb 100644
--- a/regress/README.regress
+++ b/regress/README.regress
@@ -31,7 +31,7 @@ TEST_SHELL: shell used for running the test scripts.
31TEST_SSH_PORT: TCP port to be used for the listening tests. 31TEST_SSH_PORT: TCP port to be used for the listening tests.
32TEST_SSH_SSH_CONFOPTS: Configuration directives to be added to ssh_config 32TEST_SSH_SSH_CONFOPTS: Configuration directives to be added to ssh_config
33 before running each test. 33 before running each test.
34TEST_SSH_SSHD_CONFOTPS: Configuration directives to be added to sshd_config 34TEST_SSH_SSHD_CONFOPTS: Configuration directives to be added to sshd_config
35 before running each test. 35 before running each test.
36 36
37 37
diff --git a/regress/cfgparse.sh b/regress/cfgparse.sh
new file mode 100644
index 000000000..736f38976
--- /dev/null
+++ b/regress/cfgparse.sh
@@ -0,0 +1,75 @@
1# $OpenBSD: cfgparse.sh,v 1.5 2015/05/29 03:05:13 djm Exp $
2# Placed in the Public Domain.
3
4tid="config parse"
5
6# This is a reasonable proxy for IPv6 support.
7if ! config_defined HAVE_STRUCT_IN6_ADDR ; then
8 SKIP_IPV6=yes
9fi
10
11# We need to use the keys generated for the regression test because sshd -T
12# will fail if we're not running with SUDO (no permissions for real keys) or
13# if we are # running tests on a system that has never had sshd installed
14# (keys won't exist).
15
16grep "HostKey " $OBJ/sshd_config > $OBJ/sshd_config_minimal
17SSHD_KEYS="`cat $OBJ/sshd_config_minimal`"
18
19verbose "reparse minimal config"
20($SUDO ${SSHD} -T -f $OBJ/sshd_config_minimal >$OBJ/sshd_config.1 &&
21 $SUDO ${SSHD} -T -f $OBJ/sshd_config.1 >$OBJ/sshd_config.2 &&
22 diff $OBJ/sshd_config.1 $OBJ/sshd_config.2) || fail "reparse minimal config"
23
24verbose "reparse regress config"
25($SUDO ${SSHD} -T -f $OBJ/sshd_config >$OBJ/sshd_config.1 &&
26 $SUDO ${SSHD} -T -f $OBJ/sshd_config.1 >$OBJ/sshd_config.2 &&
27 diff $OBJ/sshd_config.1 $OBJ/sshd_config.2) || fail "reparse regress config"
28
29verbose "listenaddress order"
30# expected output
31cat > $OBJ/sshd_config.0 <<EOD
32listenaddress 1.2.3.4:1234
33listenaddress 1.2.3.4:5678
34EOD
35[ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.0 <<EOD
36listenaddress [::1]:1234
37listenaddress [::1]:5678
38EOD
39
40# test input sets. should all result in the output above.
41# test 1: addressfamily and port first
42cat > $OBJ/sshd_config.1 <<EOD
43${SSHD_KEYS}
44addressfamily any
45port 1234
46port 5678
47listenaddress 1.2.3.4
48EOD
49[ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.1 <<EOD
50listenaddress ::1
51EOD
52
53($SUDO ${SSHD} -T -f $OBJ/sshd_config.1 | \
54 grep 'listenaddress ' >$OBJ/sshd_config.2 &&
55 diff $OBJ/sshd_config.0 $OBJ/sshd_config.2) || \
56 fail "listenaddress order 1"
57# test 2: listenaddress first
58cat > $OBJ/sshd_config.1 <<EOD
59${SSHD_KEYS}
60listenaddress 1.2.3.4
61port 1234
62port 5678
63addressfamily any
64EOD
65[ X${SKIP_IPV6} = Xyes ] || cat >> $OBJ/sshd_config.1 <<EOD
66listenaddress ::1
67EOD
68
69($SUDO ${SSHD} -T -f $OBJ/sshd_config.1 | \
70 grep 'listenaddress ' >$OBJ/sshd_config.2 &&
71 diff $OBJ/sshd_config.0 $OBJ/sshd_config.2) || \
72 fail "listenaddress order 2"
73
74# cleanup
75rm -f $OBJ/sshd_config.[012]
diff --git a/regress/cipher-speed.sh b/regress/cipher-speed.sh
index ad2f9b90b..575dc2341 100644
--- a/regress/cipher-speed.sh
+++ b/regress/cipher-speed.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: cipher-speed.sh,v 1.12 2015/03/03 22:35:19 markus Exp $ 1# $OpenBSD: cipher-speed.sh,v 1.13 2015/03/24 20:22:17 markus Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="cipher speed" 4tid="cipher speed"
@@ -25,7 +25,7 @@ for c in `${SSH} -Q cipher`; do n=0; for m in `${SSH} -Q mac`; do
25 fi 25 fi
26 done 26 done
27 # No point trying all MACs for AEAD ciphers since they are ignored. 27 # No point trying all MACs for AEAD ciphers since they are ignored.
28 if ssh -Q cipher-auth | grep "^${c}\$" >/dev/null 2>&1 ; then 28 if ${SSH} -Q cipher-auth | grep "^${c}\$" >/dev/null 2>&1 ; then
29 break 29 break
30 fi 30 fi
31 n=`expr $n + 1` 31 n=`expr $n + 1`
diff --git a/regress/hostkey-rotate.sh b/regress/hostkey-rotate.sh
index b5d542d12..cde6008f4 100644
--- a/regress/hostkey-rotate.sh
+++ b/regress/hostkey-rotate.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: hostkey-rotate.sh,v 1.2 2015/03/03 17:53:40 djm Exp $ 1# $OpenBSD: hostkey-rotate.sh,v 1.3 2015/03/24 20:22:17 markus Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="hostkey rotate" 4tid="hostkey rotate"
@@ -15,7 +15,7 @@ rm $OBJ/known_hosts
15trace "prepare hostkeys" 15trace "prepare hostkeys"
16nkeys=0 16nkeys=0
17all_algs="" 17all_algs=""
18for k in `ssh -Q key-plain` ; do 18for k in `${SSH} -Q key-plain` ; do
19 ${SSHKEYGEN} -qt $k -f $OBJ/hkr.$k -N '' || fatal "ssh-keygen $k" 19 ${SSHKEYGEN} -qt $k -f $OBJ/hkr.$k -N '' || fatal "ssh-keygen $k"
20 echo "Hostkey $OBJ/hkr.${k}" >> $OBJ/sshd_proxy.orig 20 echo "Hostkey $OBJ/hkr.${k}" >> $OBJ/sshd_proxy.orig
21 nkeys=`expr $nkeys + 1` 21 nkeys=`expr $nkeys + 1`
@@ -62,7 +62,7 @@ expect_nkeys $nkeys "learn hostkeys"
62check_key_present ssh-rsa || fail "didn't learn keys" 62check_key_present ssh-rsa || fail "didn't learn keys"
63 63
64# Check each key type 64# Check each key type
65for k in `ssh -Q key-plain` ; do 65for k in `${SSH} -Q key-plain` ; do
66 verbose "learn additional hostkeys, type=$k" 66 verbose "learn additional hostkeys, type=$k"
67 dossh -oStrictHostKeyChecking=yes -oHostKeyAlgorithms=$k,$all_algs 67 dossh -oStrictHostKeyChecking=yes -oHostKeyAlgorithms=$k,$all_algs
68 expect_nkeys $nkeys "learn hostkeys $k" 68 expect_nkeys $nkeys "learn hostkeys $k"
@@ -109,7 +109,7 @@ dossh -oStrictHostKeyChecking=yes -oHostKeyAlgorithms=ssh-rsa
109expect_nkeys 1 "learn hostkeys" 109expect_nkeys 1 "learn hostkeys"
110check_key_present ssh-rsa || fail "didn't learn changed key" 110check_key_present ssh-rsa || fail "didn't learn changed key"
111 111
112# $OpenBSD: hostkey-rotate.sh,v 1.2 2015/03/03 17:53:40 djm Exp $ 112# $OpenBSD: hostkey-rotate.sh,v 1.3 2015/03/24 20:22:17 markus Exp $
113# Placed in the Public Domain. 113# Placed in the Public Domain.
114 114
115tid="hostkey rotate" 115tid="hostkey rotate"
diff --git a/regress/integrity.sh b/regress/integrity.sh
index 2ff8b3f17..1d4976771 100644
--- a/regress/integrity.sh
+++ b/regress/integrity.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: integrity.sh,v 1.15 2015/01/19 20:42:31 markus Exp $ 1# $OpenBSD: integrity.sh,v 1.16 2015/03/24 20:22:17 markus Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="integrity" 4tid="integrity"
@@ -38,7 +38,7 @@ for m in $macs; do
38 cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy 38 cp $OBJ/sshd_proxy_bak $OBJ/sshd_proxy
39 # modify output from sshd at offset $off 39 # modify output from sshd at offset $off
40 pxy="proxycommand=$cmd | $OBJ/modpipe -wm xor:$off:1" 40 pxy="proxycommand=$cmd | $OBJ/modpipe -wm xor:$off:1"
41 if ssh -Q cipher-auth | grep "^${m}\$" >/dev/null 2>&1 ; then 41 if ${SSH} -Q cipher-auth | grep "^${m}\$" >/dev/null 2>&1 ; then
42 echo "Ciphers=$m" >> $OBJ/sshd_proxy 42 echo "Ciphers=$m" >> $OBJ/sshd_proxy
43 macopt="-c $m" 43 macopt="-c $m"
44 else 44 else
diff --git a/regress/kextype.sh b/regress/kextype.sh
index 6f952f4e4..e27189904 100644
--- a/regress/kextype.sh
+++ b/regress/kextype.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: kextype.sh,v 1.5 2014/04/21 22:15:37 djm Exp $ 1# $OpenBSD: kextype.sh,v 1.6 2015/03/24 20:19:15 markus Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="login with different key exchange algorithms" 4tid="login with different key exchange algorithms"
@@ -8,7 +8,7 @@ cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
8cp $OBJ/ssh_proxy $OBJ/ssh_proxy_bak 8cp $OBJ/ssh_proxy $OBJ/ssh_proxy_bak
9 9
10# Make server accept all key exchanges. 10# Make server accept all key exchanges.
11ALLKEX=`ssh -Q kex` 11ALLKEX=`${SSH} -Q kex`
12KEXOPT=`echo $ALLKEX | tr ' ' ,` 12KEXOPT=`echo $ALLKEX | tr ' ' ,`
13echo "KexAlgorithms=$KEXOPT" >> $OBJ/sshd_proxy 13echo "KexAlgorithms=$KEXOPT" >> $OBJ/sshd_proxy
14 14
diff --git a/regress/keys-command.sh b/regress/keys-command.sh
index b595a434f..700273b66 100644
--- a/regress/keys-command.sh
+++ b/regress/keys-command.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: keys-command.sh,v 1.2 2012/12/06 06:06:54 dtucker Exp $ 1# $OpenBSD: keys-command.sh,v 1.3 2015/05/21 06:40:02 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="authorized keys from command" 4tid="authorized keys from command"
@@ -9,26 +9,63 @@ if test -z "$SUDO" ; then
9 exit 0 9 exit 0
10fi 10fi
11 11
12rm -f $OBJ/keys-command-args
13
14touch $OBJ/keys-command-args
15chmod a+rw $OBJ/keys-command-args
16
17expected_key_text=`awk '{ print $2 }' < $OBJ/rsa.pub`
18expected_key_fp=`$SSHKEYGEN -lf $OBJ/rsa.pub | awk '{ print $2 }'`
19
12# Establish a AuthorizedKeysCommand in /var/run where it will have 20# Establish a AuthorizedKeysCommand in /var/run where it will have
13# acceptable directory permissions. 21# acceptable directory permissions.
14KEY_COMMAND="/var/run/keycommand_${LOGNAME}" 22KEY_COMMAND="/var/run/keycommand_${LOGNAME}"
15cat << _EOF | $SUDO sh -c "cat > '$KEY_COMMAND'" 23cat << _EOF | $SUDO sh -c "rm -f '$KEY_COMMAND' ; cat > '$KEY_COMMAND'"
16#!/bin/sh 24#!/bin/sh
25echo args: "\$@" >> $OBJ/keys-command-args
26echo "$PATH" | grep -q mekmitasdigoat && exit 7
17test "x\$1" != "x${LOGNAME}" && exit 1 27test "x\$1" != "x${LOGNAME}" && exit 1
28if test $# -eq 6 ; then
29 test "x\$2" != "xblah" && exit 2
30 test "x\$3" != "x${expected_key_text}" && exit 3
31 test "x\$4" != "xssh-rsa" && exit 4
32 test "x\$5" != "x${expected_key_fp}" && exit 5
33 test "x\$6" != "xblah" && exit 6
34fi
18exec cat "$OBJ/authorized_keys_${LOGNAME}" 35exec cat "$OBJ/authorized_keys_${LOGNAME}"
19_EOF 36_EOF
20$SUDO chmod 0755 "$KEY_COMMAND" 37$SUDO chmod 0755 "$KEY_COMMAND"
21 38
22cp $OBJ/sshd_proxy $OBJ/sshd_proxy.bak
23(
24 grep -vi AuthorizedKeysFile $OBJ/sshd_proxy.bak
25 echo AuthorizedKeysFile none
26 echo AuthorizedKeysCommand $KEY_COMMAND
27 echo AuthorizedKeysCommandUser ${LOGNAME}
28) > $OBJ/sshd_proxy
29
30if [ -x $KEY_COMMAND ]; then 39if [ -x $KEY_COMMAND ]; then
31 ${SSH} -F $OBJ/ssh_proxy somehost true 40 cp $OBJ/sshd_proxy $OBJ/sshd_proxy.bak
41
42 verbose "AuthorizedKeysCommand with arguments"
43 (
44 grep -vi AuthorizedKeysFile $OBJ/sshd_proxy.bak
45 echo AuthorizedKeysFile none
46 echo AuthorizedKeysCommand $KEY_COMMAND %u blah %k %t %f blah
47 echo AuthorizedKeysCommandUser ${LOGNAME}
48 ) > $OBJ/sshd_proxy
49
50 # Ensure that $PATH is sanitised in sshd
51 env PATH=$PATH:/sbin/mekmitasdigoat \
52 ${SSH} -F $OBJ/ssh_proxy somehost true
53 if [ $? -ne 0 ]; then
54 fail "connect failed"
55 fi
56
57 verbose "AuthorizedKeysCommand without arguments"
58 # Check legacy behavior of no-args resulting in username being passed.
59 (
60 grep -vi AuthorizedKeysFile $OBJ/sshd_proxy.bak
61 echo AuthorizedKeysFile none
62 echo AuthorizedKeysCommand $KEY_COMMAND
63 echo AuthorizedKeysCommandUser ${LOGNAME}
64 ) > $OBJ/sshd_proxy
65
66 # Ensure that $PATH is sanitised in sshd
67 env PATH=$PATH:/sbin/mekmitasdigoat \
68 ${SSH} -F $OBJ/ssh_proxy somehost true
32 if [ $? -ne 0 ]; then 69 if [ $? -ne 0 ]; then
33 fail "connect failed" 70 fail "connect failed"
34 fi 71 fi
diff --git a/regress/netcat.c b/regress/netcat.c
index 1a9fc8730..6234ba019 100644
--- a/regress/netcat.c
+++ b/regress/netcat.c
@@ -42,7 +42,6 @@
42#include <netinet/in.h> 42#include <netinet/in.h>
43#include <netinet/tcp.h> 43#include <netinet/tcp.h>
44#include <netinet/ip.h> 44#include <netinet/ip.h>
45#include <arpa/telnet.h>
46 45
47#include <errno.h> 46#include <errno.h>
48#include <netdb.h> 47#include <netdb.h>
@@ -63,6 +62,13 @@
63# endif 62# endif
64#endif 63#endif
65 64
65/* Telnet options from arpa/telnet.h */
66#define IAC 255
67#define DONT 254
68#define DO 253
69#define WONT 252
70#define WILL 251
71
66#ifndef SUN_LEN 72#ifndef SUN_LEN
67#define SUN_LEN(su) \ 73#define SUN_LEN(su) \
68 (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path)) 74 (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
diff --git a/regress/principals-command.sh b/regress/principals-command.sh
new file mode 100644
index 000000000..90064373d
--- /dev/null
+++ b/regress/principals-command.sh
@@ -0,0 +1,141 @@
1# $OpenBSD: principals-command.sh,v 1.1 2015/05/21 06:44:25 djm Exp $
2# Placed in the Public Domain.
3
4tid="authorized principals command"
5
6rm -f $OBJ/user_ca_key* $OBJ/cert_user_key*
7cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak
8
9if test -z "$SUDO" ; then
10 echo "skipped (SUDO not set)"
11 echo "need SUDO to create file in /var/run, test won't work without"
12 exit 0
13fi
14
15# Establish a AuthorizedPrincipalsCommand in /var/run where it will have
16# acceptable directory permissions.
17PRINCIPALS_COMMAND="/var/run/principals_command_${LOGNAME}"
18cat << _EOF | $SUDO sh -c "cat > '$PRINCIPALS_COMMAND'"
19#!/bin/sh
20test "x\$1" != "x${LOGNAME}" && exit 1
21test -f "$OBJ/authorized_principals_${LOGNAME}" &&
22 exec cat "$OBJ/authorized_principals_${LOGNAME}"
23_EOF
24test $? -eq 0 || fatal "couldn't prepare principals command"
25$SUDO chmod 0755 "$PRINCIPALS_COMMAND"
26
27# Create a CA key and a user certificate.
28${SSHKEYGEN} -q -N '' -t ed25519 -f $OBJ/user_ca_key || \
29 fatal "ssh-keygen of user_ca_key failed"
30${SSHKEYGEN} -q -N '' -t ed25519 -f $OBJ/cert_user_key || \
31 fatal "ssh-keygen of cert_user_key failed"
32${SSHKEYGEN} -q -s $OBJ/user_ca_key -I "regress user key for $USER" \
33 -z $$ -n ${USER},mekmitasdigoat $OBJ/cert_user_key || \
34 fatal "couldn't sign cert_user_key"
35
36# Test explicitly-specified principals
37for privsep in yes no ; do
38 _prefix="privsep $privsep"
39
40 # Setup for AuthorizedPrincipalsCommand
41 rm -f $OBJ/authorized_keys_$USER
42 (
43 cat $OBJ/sshd_proxy_bak
44 echo "UsePrivilegeSeparation $privsep"
45 echo "AuthorizedKeysFile none"
46 echo "AuthorizedPrincipalsCommand $PRINCIPALS_COMMAND %u"
47 echo "AuthorizedPrincipalsCommandUser ${LOGNAME}"
48 echo "TrustedUserCAKeys $OBJ/user_ca_key.pub"
49 ) > $OBJ/sshd_proxy
50
51 # XXX test missing command
52 # XXX test failing command
53
54 # Empty authorized_principals
55 verbose "$tid: ${_prefix} empty authorized_principals"
56 echo > $OBJ/authorized_principals_$USER
57 ${SSH} -2i $OBJ/cert_user_key \
58 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
59 if [ $? -eq 0 ]; then
60 fail "ssh cert connect succeeded unexpectedly"
61 fi
62
63 # Wrong authorized_principals
64 verbose "$tid: ${_prefix} wrong authorized_principals"
65 echo gregorsamsa > $OBJ/authorized_principals_$USER
66 ${SSH} -2i $OBJ/cert_user_key \
67 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
68 if [ $? -eq 0 ]; then
69 fail "ssh cert connect succeeded unexpectedly"
70 fi
71
72 # Correct authorized_principals
73 verbose "$tid: ${_prefix} correct authorized_principals"
74 echo mekmitasdigoat > $OBJ/authorized_principals_$USER
75 ${SSH} -2i $OBJ/cert_user_key \
76 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
77 if [ $? -ne 0 ]; then
78 fail "ssh cert connect failed"
79 fi
80
81 # authorized_principals with bad key option
82 verbose "$tid: ${_prefix} authorized_principals bad key opt"
83 echo 'blah mekmitasdigoat' > $OBJ/authorized_principals_$USER
84 ${SSH} -2i $OBJ/cert_user_key \
85 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
86 if [ $? -eq 0 ]; then
87 fail "ssh cert connect succeeded unexpectedly"
88 fi
89
90 # authorized_principals with command=false
91 verbose "$tid: ${_prefix} authorized_principals command=false"
92 echo 'command="false" mekmitasdigoat' > \
93 $OBJ/authorized_principals_$USER
94 ${SSH} -2i $OBJ/cert_user_key \
95 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
96 if [ $? -eq 0 ]; then
97 fail "ssh cert connect succeeded unexpectedly"
98 fi
99
100
101 # authorized_principals with command=true
102 verbose "$tid: ${_prefix} authorized_principals command=true"
103 echo 'command="true" mekmitasdigoat' > \
104 $OBJ/authorized_principals_$USER
105 ${SSH} -2i $OBJ/cert_user_key \
106 -F $OBJ/ssh_proxy somehost false >/dev/null 2>&1
107 if [ $? -ne 0 ]; then
108 fail "ssh cert connect failed"
109 fi
110
111 # Setup for principals= key option
112 rm -f $OBJ/authorized_principals_$USER
113 (
114 cat $OBJ/sshd_proxy_bak
115 echo "UsePrivilegeSeparation $privsep"
116 ) > $OBJ/sshd_proxy
117
118 # Wrong principals list
119 verbose "$tid: ${_prefix} wrong principals key option"
120 (
121 printf 'cert-authority,principals="gregorsamsa" '
122 cat $OBJ/user_ca_key.pub
123 ) > $OBJ/authorized_keys_$USER
124 ${SSH} -2i $OBJ/cert_user_key \
125 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
126 if [ $? -eq 0 ]; then
127 fail "ssh cert connect succeeded unexpectedly"
128 fi
129
130 # Correct principals list
131 verbose "$tid: ${_prefix} correct principals key option"
132 (
133 printf 'cert-authority,principals="mekmitasdigoat" '
134 cat $OBJ/user_ca_key.pub
135 ) > $OBJ/authorized_keys_$USER
136 ${SSH} -2i $OBJ/cert_user_key \
137 -F $OBJ/ssh_proxy somehost true >/dev/null 2>&1
138 if [ $? -ne 0 ]; then
139 fail "ssh cert connect failed"
140 fi
141done
diff --git a/regress/ssh-com.sh b/regress/ssh-com.sh
index 6c5cfe888..4371d5279 100644
--- a/regress/ssh-com.sh
+++ b/regress/ssh-com.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: ssh-com.sh,v 1.8 2013/05/17 00:37:40 dtucker Exp $ 1# $OpenBSD: ssh-com.sh,v 1.9 2015/05/08 07:29:00 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="connect to ssh.com server" 4tid="connect to ssh.com server"
@@ -44,14 +44,14 @@ cat << EOF > $OBJ/sshd2_config
44 HostKeyFile ${SRC}/dsa_ssh2.prv 44 HostKeyFile ${SRC}/dsa_ssh2.prv
45 PublicHostKeyFile ${SRC}/dsa_ssh2.pub 45 PublicHostKeyFile ${SRC}/dsa_ssh2.pub
46 RandomSeedFile ${OBJ}/random_seed 46 RandomSeedFile ${OBJ}/random_seed
47 MaxConnections 0 47 MaxConnections 0
48 PermitRootLogin yes 48 PermitRootLogin yes
49 VerboseMode no 49 VerboseMode no
50 CheckMail no 50 CheckMail no
51 Ssh1Compatibility no 51 Ssh1Compatibility no
52EOF 52EOF
53 53
54# create client config 54# create client config
55sed "s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/" \ 55sed "s/HostKeyAlias.*/HostKeyAlias ssh2-localhost-with-alias/" \
56 < $OBJ/ssh_config > $OBJ/ssh_config_com 56 < $OBJ/ssh_config > $OBJ/ssh_config_com
57 57
diff --git a/regress/ssh2putty.sh b/regress/ssh2putty.sh
index 691db1690..bcf83afe9 100755
--- a/regress/ssh2putty.sh
+++ b/regress/ssh2putty.sh
@@ -1,5 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2# $OpenBSD: ssh2putty.sh,v 1.2 2009/10/06 23:51:49 dtucker Exp $ 2# $OpenBSD: ssh2putty.sh,v 1.3 2015/05/08 07:26:13 djm Exp $
3 3
4if test "x$1" = "x" -o "x$2" = "x" -o "x$3" = "x" ; then 4if test "x$1" = "x" -o "x$2" = "x" -o "x$3" = "x" ; then
5 echo "Usage: ssh2putty hostname port ssh-private-key" 5 echo "Usage: ssh2putty hostname port ssh-private-key"
@@ -19,13 +19,13 @@ else
19fi 19fi
20 20
21public_exponent=` 21public_exponent=`
22 openssl rsa -noout -text -in $KEYFILE | grep ^publicExponent | 22 openssl rsa -noout -text -in $KEYFILE | grep ^publicExponent |
23 sed 's/.*(//;s/).*//' 23 sed 's/.*(//;s/).*//'
24` 24`
25test $? -ne 0 && exit 1 25test $? -ne 0 && exit 1
26 26
27modulus=` 27modulus=`
28 openssl rsa -noout -modulus -in $KEYFILE | grep ^Modulus= | 28 openssl rsa -noout -modulus -in $KEYFILE | grep ^Modulus= |
29 sed 's/^Modulus=/0x/' | tr A-Z a-z 29 sed 's/^Modulus=/0x/' | tr A-Z a-z
30` 30`
31test $? -ne 0 && exit 1 31test $? -ne 0 && exit 1
diff --git a/regress/test-exec.sh b/regress/test-exec.sh
index 0f766620d..114e129f2 100644
--- a/regress/test-exec.sh
+++ b/regress/test-exec.sh
@@ -444,7 +444,7 @@ Host *
444EOF 444EOF
445 445
446if [ ! -z "$TEST_SSH_SSH_CONFOPTS" ]; then 446if [ ! -z "$TEST_SSH_SSH_CONFOPTS" ]; then
447 trace "adding ssh_config option $TEST_SSH_SSHD_CONFOPTS" 447 trace "adding ssh_config option $TEST_SSH_SSH_CONFOPTS"
448 echo "$TEST_SSH_SSH_CONFOPTS" >> $OBJ/ssh_config 448 echo "$TEST_SSH_SSH_CONFOPTS" >> $OBJ/ssh_config
449fi 449fi
450 450
diff --git a/regress/try-ciphers.sh b/regress/try-ciphers.sh
index 4165c7b88..889a735d2 100644
--- a/regress/try-ciphers.sh
+++ b/regress/try-ciphers.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: try-ciphers.sh,v 1.24 2015/03/03 22:35:19 markus Exp $ 1# $OpenBSD: try-ciphers.sh,v 1.25 2015/03/24 20:22:17 markus Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="try ciphers" 4tid="try ciphers"
@@ -19,7 +19,7 @@ for c in `${SSH} -Q cipher`; do
19 fi 19 fi
20 # No point trying all MACs for AEAD ciphers since they 20 # No point trying all MACs for AEAD ciphers since they
21 # are ignored. 21 # are ignored.
22 if ssh -Q cipher-auth | grep "^${c}\$" >/dev/null 2>&1 ; then 22 if ${SSH} -Q cipher-auth | grep "^${c}\$" >/dev/null 2>&1 ; then
23 break 23 break
24 fi 24 fi
25 n=`expr $n + 1` 25 n=`expr $n + 1`
diff --git a/regress/unittests/hostkeys/test_iterate.c b/regress/unittests/hostkeys/test_iterate.c
index d81291b68..2eaaf063a 100644
--- a/regress/unittests/hostkeys/test_iterate.c
+++ b/regress/unittests/hostkeys/test_iterate.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_iterate.c,v 1.3 2015/03/07 04:41:48 djm Exp $ */ 1/* $OpenBSD: test_iterate.c,v 1.4 2015/03/31 22:59:01 djm Exp $ */
2/* 2/*
3 * Regress test for hostfile.h hostkeys_foreach() 3 * Regress test for hostfile.h hostkeys_foreach()
4 * 4 *
@@ -91,8 +91,8 @@ check(struct hostkey_foreach_line *l, void *_ctx)
91 expected->l.keytype : expected->no_parse_keytype; 91 expected->l.keytype : expected->no_parse_keytype;
92 92
93#ifndef WITH_SSH1 93#ifndef WITH_SSH1
94 if (expected->l.keytype == KEY_RSA1 || 94 if (parse_key && (expected->l.keytype == KEY_RSA1 ||
95 expected->no_parse_keytype == KEY_RSA1) { 95 expected->no_parse_keytype == KEY_RSA1)) {
96 expected_status = HKF_STATUS_INVALID; 96 expected_status = HKF_STATUS_INVALID;
97 expected_keytype = KEY_UNSPEC; 97 expected_keytype = KEY_UNSPEC;
98 parse_key = 0; 98 parse_key = 0;
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c
index ad10c9be2..4453a8599 100644
--- a/regress/unittests/sshkey/test_sshkey.c
+++ b/regress/unittests/sshkey/test_sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_sshkey.c,v 1.3 2015/01/26 06:11:28 djm Exp $ */ 1/* $OpenBSD: test_sshkey.c,v 1.4 2015/04/22 01:38:36 djm Exp $ */
2/* 2/*
3 * Regress test for sshkey.h key management API 3 * Regress test for sshkey.h key management API
4 * 4 *
@@ -505,7 +505,7 @@ sshkey_tests(void)
505 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k1), 0); 505 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k1), 0);
506 ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2, 506 ASSERT_INT_EQ(sshkey_load_public(test_data_file("rsa_1.pub"), &k2,
507 NULL), 0); 507 NULL), 0);
508 k3 = get_private("ed25519_2"); 508 k3 = get_private("rsa_1");
509 build_cert(b, k2, "ssh-rsa-cert-v01@openssh.com", k3, k1); 509 build_cert(b, k2, "ssh-rsa-cert-v01@openssh.com", k3, k1);
510 ASSERT_INT_EQ(sshkey_from_blob(sshbuf_ptr(b), sshbuf_len(b), &k4), 510 ASSERT_INT_EQ(sshkey_from_blob(sshbuf_ptr(b), sshbuf_len(b), &k4),
511 SSH_ERR_KEY_CERT_INVALID_SIGN_KEY); 511 SSH_ERR_KEY_CERT_INVALID_SIGN_KEY);
diff --git a/rijndael.c b/rijndael.c
index b352a11e5..40ab7b1f5 100644
--- a/rijndael.c
+++ b/rijndael.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rijndael.c,v 1.19 2014/11/18 22:38:48 mikeb Exp $ */ 1/* $OpenBSD: rijndael.c,v 1.20 2015/03/16 11:09:52 djm Exp $ */
2 2
3/** 3/**
4 * rijndael-alg-fst.c 4 * rijndael-alg-fst.c
diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c
index b6f6258f2..2462bcc88 100644
--- a/sandbox-seccomp-filter.c
+++ b/sandbox-seccomp-filter.c
@@ -43,6 +43,7 @@
43#include <sys/resource.h> 43#include <sys/resource.h>
44#include <sys/prctl.h> 44#include <sys/prctl.h>
45 45
46#include <linux/net.h>
46#include <linux/audit.h> 47#include <linux/audit.h>
47#include <linux/filter.h> 48#include <linux/filter.h>
48#include <linux/seccomp.h> 49#include <linux/seccomp.h>
@@ -79,6 +80,16 @@
79#define SC_ALLOW(_nr) \ 80#define SC_ALLOW(_nr) \
80 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_ ## _nr, 0, 1), \ 81 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_ ## _nr, 0, 1), \
81 BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW) 82 BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW)
83#define SC_ALLOW_ARG(_nr, _arg_nr, _arg_val) \
84 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, __NR_ ## _nr, 0, 4), \
85 /* load first syscall argument */ \
86 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, \
87 offsetof(struct seccomp_data, args[(_arg_nr)])), \
88 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, (_arg_val), 0, 1), \
89 BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW), \
90 /* reload syscall number; all rules expect it in accumulator */ \
91 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, \
92 offsetof(struct seccomp_data, nr))
82 93
83/* Syscall filtering set for preauth. */ 94/* Syscall filtering set for preauth. */
84static const struct sock_filter preauth_insns[] = { 95static const struct sock_filter preauth_insns[] = {
@@ -90,45 +101,105 @@ static const struct sock_filter preauth_insns[] = {
90 /* Load the syscall number for checking. */ 101 /* Load the syscall number for checking. */
91 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 102 BPF_STMT(BPF_LD+BPF_W+BPF_ABS,
92 offsetof(struct seccomp_data, nr)), 103 offsetof(struct seccomp_data, nr)),
104
105 /* Syscalls to non-fatally deny */
106#ifdef __NR_fstat
107 SC_DENY(fstat, EACCES),
108#endif
109#ifdef __NR_fstat64
110 SC_DENY(fstat64, EACCES),
111#endif
112#ifdef __NR_open
93 SC_DENY(open, EACCES), 113 SC_DENY(open, EACCES),
114#endif
115#ifdef __NR_openat
116 SC_DENY(openat, EACCES),
117#endif
118#ifdef __NR_newfstatat
119 SC_DENY(newfstatat, EACCES),
120#endif
121#ifdef __NR_stat
94 SC_DENY(stat, EACCES), 122 SC_DENY(stat, EACCES),
95 SC_ALLOW(getpid), 123#endif
96 SC_ALLOW(gettimeofday), 124#ifdef __NR_stat64
125 SC_DENY(stat64, EACCES),
126#endif
127
128 /* Syscalls to permit */
129#ifdef __NR_brk
130 SC_ALLOW(brk),
131#endif
132#ifdef __NR_clock_gettime
97 SC_ALLOW(clock_gettime), 133 SC_ALLOW(clock_gettime),
98#ifdef __NR_time /* not defined on EABI ARM */
99 SC_ALLOW(time),
100#endif 134#endif
101 SC_ALLOW(read), 135#ifdef __NR_close
102 SC_ALLOW(write),
103 SC_ALLOW(close), 136 SC_ALLOW(close),
104#ifdef __NR_shutdown /* not defined on archs that go via socketcall(2) */
105 SC_ALLOW(shutdown),
106#endif 137#endif
107 SC_ALLOW(brk), 138#ifdef __NR_exit
108 SC_ALLOW(poll), 139 SC_ALLOW(exit),
109#ifdef __NR__newselect 140#endif
110 SC_ALLOW(_newselect), 141#ifdef __NR_exit_group
111#else 142 SC_ALLOW(exit_group),
112 SC_ALLOW(select), 143#endif
144#ifdef __NR_getpgid
145 SC_ALLOW(getpgid),
146#endif
147#ifdef __NR_getpid
148 SC_ALLOW(getpid),
113#endif 149#endif
150#ifdef __NR_gettimeofday
151 SC_ALLOW(gettimeofday),
152#endif
153#ifdef __NR_madvise
114 SC_ALLOW(madvise), 154 SC_ALLOW(madvise),
115#ifdef __NR_mmap2 /* EABI ARM only has mmap2() */
116 SC_ALLOW(mmap2),
117#endif 155#endif
118#ifdef __NR_mmap 156#ifdef __NR_mmap
119 SC_ALLOW(mmap), 157 SC_ALLOW(mmap),
120#endif 158#endif
121#ifdef __dietlibc__ 159#ifdef __NR_mmap2
160 SC_ALLOW(mmap2),
161#endif
162#ifdef __NR_mremap
122 SC_ALLOW(mremap), 163 SC_ALLOW(mremap),
123 SC_ALLOW(exit),
124#endif 164#endif
165#ifdef __NR_munmap
125 SC_ALLOW(munmap), 166 SC_ALLOW(munmap),
126 SC_ALLOW(exit_group), 167#endif
168#ifdef __NR__newselect
169 SC_ALLOW(_newselect),
170#endif
171#ifdef __NR_poll
172 SC_ALLOW(poll),
173#endif
174#ifdef __NR_pselect6
175 SC_ALLOW(pselect6),
176#endif
177#ifdef __NR_read
178 SC_ALLOW(read),
179#endif
127#ifdef __NR_rt_sigprocmask 180#ifdef __NR_rt_sigprocmask
128 SC_ALLOW(rt_sigprocmask), 181 SC_ALLOW(rt_sigprocmask),
129#else 182#endif
183#ifdef __NR_select
184 SC_ALLOW(select),
185#endif
186#ifdef __NR_shutdown
187 SC_ALLOW(shutdown),
188#endif
189#ifdef __NR_sigprocmask
130 SC_ALLOW(sigprocmask), 190 SC_ALLOW(sigprocmask),
131#endif 191#endif
192#ifdef __NR_time
193 SC_ALLOW(time),
194#endif
195#ifdef __NR_write
196 SC_ALLOW(write),
197#endif
198#ifdef __NR_socketcall
199 SC_ALLOW_ARG(socketcall, 0, SYS_SHUTDOWN),
200#endif
201
202 /* Default deny */
132 BPF_STMT(BPF_RET+BPF_K, SECCOMP_FILTER_FAIL), 203 BPF_STMT(BPF_RET+BPF_K, SECCOMP_FILTER_FAIL),
133}; 204};
134 205
diff --git a/sandbox-systrace.c b/sandbox-systrace.c
index f30e70575..03b0d40cc 100644
--- a/sandbox-systrace.c
+++ b/sandbox-systrace.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sandbox-systrace.c,v 1.14 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: sandbox-systrace.c,v 1.16 2015/06/29 22:35:12 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org> 3 * Copyright (c) 2011 Damien Miller <djm@mindrot.org>
4 * 4 *
@@ -50,8 +50,9 @@ struct sandbox_policy {
50 50
51/* Permitted syscalls in preauth. Unlisted syscalls get SYSTR_POLICY_KILL */ 51/* Permitted syscalls in preauth. Unlisted syscalls get SYSTR_POLICY_KILL */
52static const struct sandbox_policy preauth_policy[] = { 52static const struct sandbox_policy preauth_policy[] = {
53 { SYS_open, SYSTR_POLICY_NEVER }, 53 { SYS_clock_gettime, SYSTR_POLICY_PERMIT },
54 54 { SYS_close, SYSTR_POLICY_PERMIT },
55 { SYS_exit, SYSTR_POLICY_PERMIT },
55#ifdef SYS_getentropy 56#ifdef SYS_getentropy
56 /* OpenBSD 5.6 and newer use getentropy(2) to seed arc4random(3). */ 57 /* OpenBSD 5.6 and newer use getentropy(2) to seed arc4random(3). */
57 { SYS_getentropy, SYSTR_POLICY_PERMIT }, 58 { SYS_getentropy, SYSTR_POLICY_PERMIT },
@@ -59,23 +60,21 @@ static const struct sandbox_policy preauth_policy[] = {
59 /* Previous releases used sysctl(3)'s kern.arnd variable. */ 60 /* Previous releases used sysctl(3)'s kern.arnd variable. */
60 { SYS___sysctl, SYSTR_POLICY_PERMIT }, 61 { SYS___sysctl, SYSTR_POLICY_PERMIT },
61#endif 62#endif
62
63#ifdef SYS_sendsyslog
64 { SYS_sendsyslog, SYSTR_POLICY_PERMIT },
65#endif
66 { SYS_close, SYSTR_POLICY_PERMIT },
67 { SYS_exit, SYSTR_POLICY_PERMIT },
68 { SYS_getpid, SYSTR_POLICY_PERMIT }, 63 { SYS_getpid, SYSTR_POLICY_PERMIT },
64 { SYS_getpgid, SYSTR_POLICY_PERMIT },
69 { SYS_gettimeofday, SYSTR_POLICY_PERMIT }, 65 { SYS_gettimeofday, SYSTR_POLICY_PERMIT },
70 { SYS_clock_gettime, SYSTR_POLICY_PERMIT },
71 { SYS_madvise, SYSTR_POLICY_PERMIT }, 66 { SYS_madvise, SYSTR_POLICY_PERMIT },
72 { SYS_mmap, SYSTR_POLICY_PERMIT }, 67 { SYS_mmap, SYSTR_POLICY_PERMIT },
73 { SYS_mprotect, SYSTR_POLICY_PERMIT }, 68 { SYS_mprotect, SYSTR_POLICY_PERMIT },
74 { SYS_mquery, SYSTR_POLICY_PERMIT }, 69 { SYS_mquery, SYSTR_POLICY_PERMIT },
75 { SYS_poll, SYSTR_POLICY_PERMIT },
76 { SYS_munmap, SYSTR_POLICY_PERMIT }, 70 { SYS_munmap, SYSTR_POLICY_PERMIT },
71 { SYS_open, SYSTR_POLICY_NEVER },
72 { SYS_poll, SYSTR_POLICY_PERMIT },
77 { SYS_read, SYSTR_POLICY_PERMIT }, 73 { SYS_read, SYSTR_POLICY_PERMIT },
78 { SYS_select, SYSTR_POLICY_PERMIT }, 74 { SYS_select, SYSTR_POLICY_PERMIT },
75#ifdef SYS_sendsyslog
76 { SYS_sendsyslog, SYSTR_POLICY_PERMIT },
77#endif
79 { SYS_shutdown, SYSTR_POLICY_PERMIT }, 78 { SYS_shutdown, SYSTR_POLICY_PERMIT },
80 { SYS_sigprocmask, SYSTR_POLICY_PERMIT }, 79 { SYS_sigprocmask, SYSTR_POLICY_PERMIT },
81 { SYS_write, SYSTR_POLICY_PERMIT }, 80 { SYS_write, SYSTR_POLICY_PERMIT },
diff --git a/scp.c b/scp.c
index afa4a2fb0..e39294e9c 100644
--- a/scp.c
+++ b/scp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: scp.c,v 1.181 2015/01/16 06:40:12 deraadt Exp $ */ 1/* $OpenBSD: scp.c,v 1.182 2015/04/24 01:36:00 deraadt Exp $ */
2/* 2/*
3 * scp - secure remote copy. This is basically patched BSD rcp which 3 * scp - secure remote copy. This is basically patched BSD rcp which
4 * uses ssh to do the data transfer (instead of using rcmd). 4 * uses ssh to do the data transfer (instead of using rcmd).
@@ -1341,7 +1341,7 @@ allocbuf(BUF *bp, int fd, int blksize)
1341 if (bp->buf == NULL) 1341 if (bp->buf == NULL)
1342 bp->buf = xmalloc(size); 1342 bp->buf = xmalloc(size);
1343 else 1343 else
1344 bp->buf = xrealloc(bp->buf, 1, size); 1344 bp->buf = xreallocarray(bp->buf, 1, size);
1345 memset(bp->buf, 0, size); 1345 memset(bp->buf, 0, size);
1346 bp->cnt = size; 1346 bp->cnt = size;
1347 return (bp); 1347 return (bp);
diff --git a/servconf.c b/servconf.c
index bec53e00e..fe3e31157 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,4 @@
1 1/* $OpenBSD: servconf.c,v 1.274 2015/07/01 02:32:17 djm Exp $ */
2/* $OpenBSD: servconf.c,v 1.260 2015/02/02 01:57:44 deraadt Exp $ */
3/* 2/*
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
5 * All rights reserved 4 * All rights reserved
@@ -78,6 +77,8 @@ initialize_server_options(ServerOptions *options)
78 /* Standard Options */ 77 /* Standard Options */
79 options->num_ports = 0; 78 options->num_ports = 0;
80 options->ports_from_cmdline = 0; 79 options->ports_from_cmdline = 0;
80 options->queued_listen_addrs = NULL;
81 options->num_queued_listens = 0;
81 options->listen_addrs = NULL; 82 options->listen_addrs = NULL;
82 options->address_family = -1; 83 options->address_family = -1;
83 options->num_host_key_files = 0; 84 options->num_host_key_files = 0;
@@ -162,6 +163,8 @@ initialize_server_options(ServerOptions *options)
162 options->revoked_keys_file = NULL; 163 options->revoked_keys_file = NULL;
163 options->trusted_user_ca_keys = NULL; 164 options->trusted_user_ca_keys = NULL;
164 options->authorized_principals_file = NULL; 165 options->authorized_principals_file = NULL;
166 options->authorized_principals_command = NULL;
167 options->authorized_principals_command_user = NULL;
165 options->ip_qos_interactive = -1; 168 options->ip_qos_interactive = -1;
166 options->ip_qos_bulk = -1; 169 options->ip_qos_bulk = -1;
167 options->version_addendum = NULL; 170 options->version_addendum = NULL;
@@ -209,6 +212,8 @@ fill_default_server_options(ServerOptions *options)
209 /* No certificates by default */ 212 /* No certificates by default */
210 if (options->num_ports == 0) 213 if (options->num_ports == 0)
211 options->ports[options->num_ports++] = SSH_DEFAULT_PORT; 214 options->ports[options->num_ports++] = SSH_DEFAULT_PORT;
215 if (options->address_family == -1)
216 options->address_family = AF_UNSPEC;
212 if (options->listen_addrs == NULL) 217 if (options->listen_addrs == NULL)
213 add_listen_addr(options, NULL, 0); 218 add_listen_addr(options, NULL, 0);
214 if (options->pid_file == NULL) 219 if (options->pid_file == NULL)
@@ -361,6 +366,7 @@ fill_default_server_options(ServerOptions *options)
361 CLEAR_ON_NONE(options->banner); 366 CLEAR_ON_NONE(options->banner);
362 CLEAR_ON_NONE(options->trusted_user_ca_keys); 367 CLEAR_ON_NONE(options->trusted_user_ca_keys);
363 CLEAR_ON_NONE(options->revoked_keys_file); 368 CLEAR_ON_NONE(options->revoked_keys_file);
369 CLEAR_ON_NONE(options->authorized_principals_file);
364 for (i = 0; i < options->num_host_key_files; i++) 370 for (i = 0; i < options->num_host_key_files; i++)
365 CLEAR_ON_NONE(options->host_key_files[i]); 371 CLEAR_ON_NONE(options->host_key_files[i]);
366 for (i = 0; i < options->num_host_cert_files; i++) 372 for (i = 0; i < options->num_host_cert_files; i++)
@@ -410,6 +416,7 @@ typedef enum {
410 sUsePrivilegeSeparation, sAllowAgentForwarding, 416 sUsePrivilegeSeparation, sAllowAgentForwarding,
411 sHostCertificate, 417 sHostCertificate,
412 sRevokedKeys, sTrustedUserCAKeys, sAuthorizedPrincipalsFile, 418 sRevokedKeys, sTrustedUserCAKeys, sAuthorizedPrincipalsFile,
419 sAuthorizedPrincipalsCommand, sAuthorizedPrincipalsCommandUser,
413 sKexAlgorithms, sIPQoS, sVersionAddendum, 420 sKexAlgorithms, sIPQoS, sVersionAddendum,
414 sAuthorizedKeysCommand, sAuthorizedKeysCommandUser, 421 sAuthorizedKeysCommand, sAuthorizedKeysCommandUser,
415 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC, 422 sAuthenticationMethods, sHostKeyAgent, sPermitUserRC,
@@ -554,6 +561,8 @@ static struct {
554 { "ipqos", sIPQoS, SSHCFG_ALL }, 561 { "ipqos", sIPQoS, SSHCFG_ALL },
555 { "authorizedkeyscommand", sAuthorizedKeysCommand, SSHCFG_ALL }, 562 { "authorizedkeyscommand", sAuthorizedKeysCommand, SSHCFG_ALL },
556 { "authorizedkeyscommanduser", sAuthorizedKeysCommandUser, SSHCFG_ALL }, 563 { "authorizedkeyscommanduser", sAuthorizedKeysCommandUser, SSHCFG_ALL },
564 { "authorizedprincipalscommand", sAuthorizedPrincipalsCommand, SSHCFG_ALL },
565 { "authorizedprincipalscommanduser", sAuthorizedPrincipalsCommandUser, SSHCFG_ALL },
557 { "versionaddendum", sVersionAddendum, SSHCFG_GLOBAL }, 566 { "versionaddendum", sVersionAddendum, SSHCFG_GLOBAL },
558 { "authenticationmethods", sAuthenticationMethods, SSHCFG_ALL }, 567 { "authenticationmethods", sAuthenticationMethods, SSHCFG_ALL },
559 { "streamlocalbindmask", sStreamLocalBindMask, SSHCFG_ALL }, 568 { "streamlocalbindmask", sStreamLocalBindMask, SSHCFG_ALL },
@@ -618,10 +627,6 @@ add_listen_addr(ServerOptions *options, char *addr, int port)
618{ 627{
619 u_int i; 628 u_int i;
620 629
621 if (options->num_ports == 0)
622 options->ports[options->num_ports++] = SSH_DEFAULT_PORT;
623 if (options->address_family == -1)
624 options->address_family = AF_UNSPEC;
625 if (port == 0) 630 if (port == 0)
626 for (i = 0; i < options->num_ports; i++) 631 for (i = 0; i < options->num_ports; i++)
627 add_one_listen_addr(options, addr, options->ports[i]); 632 add_one_listen_addr(options, addr, options->ports[i]);
@@ -651,6 +656,51 @@ add_one_listen_addr(ServerOptions *options, char *addr, int port)
651 options->listen_addrs = aitop; 656 options->listen_addrs = aitop;
652} 657}
653 658
659/*
660 * Queue a ListenAddress to be processed once we have all of the Ports
661 * and AddressFamily options.
662 */
663static void
664queue_listen_addr(ServerOptions *options, char *addr, int port)
665{
666 options->queued_listen_addrs = xreallocarray(
667 options->queued_listen_addrs, options->num_queued_listens + 1,
668 sizeof(addr));
669 options->queued_listen_ports = xreallocarray(
670 options->queued_listen_ports, options->num_queued_listens + 1,
671 sizeof(port));
672 options->queued_listen_addrs[options->num_queued_listens] =
673 xstrdup(addr);
674 options->queued_listen_ports[options->num_queued_listens] = port;
675 options->num_queued_listens++;
676}
677
678/*
679 * Process queued (text) ListenAddress entries.
680 */
681static void
682process_queued_listen_addrs(ServerOptions *options)
683{
684 u_int i;
685
686 if (options->num_ports == 0)
687 options->ports[options->num_ports++] = SSH_DEFAULT_PORT;
688 if (options->address_family == -1)
689 options->address_family = AF_UNSPEC;
690
691 for (i = 0; i < options->num_queued_listens; i++) {
692 add_listen_addr(options, options->queued_listen_addrs[i],
693 options->queued_listen_ports[i]);
694 free(options->queued_listen_addrs[i]);
695 options->queued_listen_addrs[i] = NULL;
696 }
697 free(options->queued_listen_addrs);
698 options->queued_listen_addrs = NULL;
699 free(options->queued_listen_ports);
700 options->queued_listen_ports = NULL;
701 options->num_queued_listens = 0;
702}
703
654struct connection_info * 704struct connection_info *
655get_connection_info(int populate, int use_dns) 705get_connection_info(int populate, int use_dns)
656{ 706{
@@ -736,7 +786,6 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
736{ 786{
737 int result = 1, attributes = 0, port; 787 int result = 1, attributes = 0, port;
738 char *arg, *attrib, *cp = *condition; 788 char *arg, *attrib, *cp = *condition;
739 size_t len;
740 789
741 if (ci == NULL) 790 if (ci == NULL)
742 debug3("checking syntax for 'Match %s'", cp); 791 debug3("checking syntax for 'Match %s'", cp);
@@ -763,13 +812,12 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
763 error("Missing Match criteria for %s", attrib); 812 error("Missing Match criteria for %s", attrib);
764 return -1; 813 return -1;
765 } 814 }
766 len = strlen(arg);
767 if (strcasecmp(attrib, "user") == 0) { 815 if (strcasecmp(attrib, "user") == 0) {
768 if (ci == NULL || ci->user == NULL) { 816 if (ci == NULL || ci->user == NULL) {
769 result = 0; 817 result = 0;
770 continue; 818 continue;
771 } 819 }
772 if (match_pattern_list(ci->user, arg, len, 0) != 1) 820 if (match_pattern_list(ci->user, arg, 0) != 1)
773 result = 0; 821 result = 0;
774 else 822 else
775 debug("user %.100s matched 'User %.100s' at " 823 debug("user %.100s matched 'User %.100s' at "
@@ -790,7 +838,7 @@ match_cfg_line(char **condition, int line, struct connection_info *ci)
790 result = 0; 838 result = 0;
791 continue; 839 continue;
792 } 840 }
793 if (match_hostname(ci->host, arg, len) != 1) 841 if (match_hostname(ci->host, arg) != 1)
794 result = 0; 842 result = 0;
795 else 843 else
796 debug("connection from %.100s matched 'Host " 844 debug("connection from %.100s matched 'Host "
@@ -967,9 +1015,6 @@ process_server_config_line(ServerOptions *options, char *line,
967 /* ignore ports from configfile if cmdline specifies ports */ 1015 /* ignore ports from configfile if cmdline specifies ports */
968 if (options->ports_from_cmdline) 1016 if (options->ports_from_cmdline)
969 return 0; 1017 return 0;
970 if (options->listen_addrs != NULL)
971 fatal("%s line %d: ports must be specified before "
972 "ListenAddress.", filename, linenum);
973 if (options->num_ports >= MAX_PORTS) 1018 if (options->num_ports >= MAX_PORTS)
974 fatal("%s line %d: too many ports.", 1019 fatal("%s line %d: too many ports.",
975 filename, linenum); 1020 filename, linenum);
@@ -1005,7 +1050,7 @@ process_server_config_line(ServerOptions *options, char *line,
1005 if ((value = convtime(arg)) == -1) 1050 if ((value = convtime(arg)) == -1)
1006 fatal("%s line %d: invalid time value.", 1051 fatal("%s line %d: invalid time value.",
1007 filename, linenum); 1052 filename, linenum);
1008 if (*intptr == -1) 1053 if (*activep && *intptr == -1)
1009 *intptr = value; 1054 *intptr = value;
1010 break; 1055 break;
1011 1056
@@ -1021,7 +1066,7 @@ process_server_config_line(ServerOptions *options, char *line,
1021 /* check for bare IPv6 address: no "[]" and 2 or more ":" */ 1066 /* check for bare IPv6 address: no "[]" and 2 or more ":" */
1022 if (strchr(arg, '[') == NULL && (p = strchr(arg, ':')) != NULL 1067 if (strchr(arg, '[') == NULL && (p = strchr(arg, ':')) != NULL
1023 && strchr(p+1, ':') != NULL) { 1068 && strchr(p+1, ':') != NULL) {
1024 add_listen_addr(options, arg, 0); 1069 queue_listen_addr(options, arg, 0);
1025 break; 1070 break;
1026 } 1071 }
1027 p = hpdelim(&arg); 1072 p = hpdelim(&arg);
@@ -1034,16 +1079,13 @@ process_server_config_line(ServerOptions *options, char *line,
1034 else if ((port = a2port(arg)) <= 0) 1079 else if ((port = a2port(arg)) <= 0)
1035 fatal("%s line %d: bad port number", filename, linenum); 1080 fatal("%s line %d: bad port number", filename, linenum);
1036 1081
1037 add_listen_addr(options, p, port); 1082 queue_listen_addr(options, p, port);
1038 1083
1039 break; 1084 break;
1040 1085
1041 case sAddressFamily: 1086 case sAddressFamily:
1042 intptr = &options->address_family; 1087 intptr = &options->address_family;
1043 multistate_ptr = multistate_addressfamily; 1088 multistate_ptr = multistate_addressfamily;
1044 if (options->listen_addrs != NULL)
1045 fatal("%s line %d: address family must be specified "
1046 "before ListenAddress.", filename, linenum);
1047 parse_multistate: 1089 parse_multistate:
1048 arg = strdelim(&cp); 1090 arg = strdelim(&cp);
1049 if (!arg || *arg == '\0') 1091 if (!arg || *arg == '\0')
@@ -1483,7 +1525,7 @@ process_server_config_line(ServerOptions *options, char *line,
1483 len = strlen(p) + 1; 1525 len = strlen(p) + 1;
1484 while ((arg = strdelim(&cp)) != NULL && *arg != '\0') { 1526 while ((arg = strdelim(&cp)) != NULL && *arg != '\0') {
1485 len += 1 + strlen(arg); 1527 len += 1 + strlen(arg);
1486 p = xrealloc(p, 1, len); 1528 p = xreallocarray(p, 1, len);
1487 strlcat(p, " ", len); 1529 strlcat(p, " ", len);
1488 strlcat(p, arg, len); 1530 strlcat(p, arg, len);
1489 } 1531 }
@@ -1598,7 +1640,7 @@ process_server_config_line(ServerOptions *options, char *line,
1598 if (value == -1) 1640 if (value == -1)
1599 fatal("%s line %d: Bad yes/point-to-point/ethernet/" 1641 fatal("%s line %d: Bad yes/point-to-point/ethernet/"
1600 "no argument: %s", filename, linenum, arg); 1642 "no argument: %s", filename, linenum, arg);
1601 if (*intptr == -1) 1643 if (*activep && *intptr == -1)
1602 *intptr = value; 1644 *intptr = value;
1603 break; 1645 break;
1604 1646
@@ -1651,7 +1693,7 @@ process_server_config_line(ServerOptions *options, char *line,
1651 break; 1693 break;
1652 1694
1653 case sForceCommand: 1695 case sForceCommand:
1654 if (cp == NULL) 1696 if (cp == NULL || *cp == '\0')
1655 fatal("%.200s line %d: Missing argument.", filename, 1697 fatal("%.200s line %d: Missing argument.", filename,
1656 linenum); 1698 linenum);
1657 len = strspn(cp, WHITESPACE); 1699 len = strspn(cp, WHITESPACE);
@@ -1696,7 +1738,7 @@ process_server_config_line(ServerOptions *options, char *line,
1696 break; 1738 break;
1697 1739
1698 case sVersionAddendum: 1740 case sVersionAddendum:
1699 if (cp == NULL) 1741 if (cp == NULL || *cp == '\0')
1700 fatal("%.200s line %d: Missing argument.", filename, 1742 fatal("%.200s line %d: Missing argument.", filename,
1701 linenum); 1743 linenum);
1702 len = strspn(cp, WHITESPACE); 1744 len = strspn(cp, WHITESPACE);
@@ -1736,8 +1778,36 @@ process_server_config_line(ServerOptions *options, char *line,
1736 *charptr = xstrdup(arg); 1778 *charptr = xstrdup(arg);
1737 break; 1779 break;
1738 1780
1781 case sAuthorizedPrincipalsCommand:
1782 if (cp == NULL)
1783 fatal("%.200s line %d: Missing argument.", filename,
1784 linenum);
1785 len = strspn(cp, WHITESPACE);
1786 if (*activep &&
1787 options->authorized_principals_command == NULL) {
1788 if (cp[len] != '/' && strcasecmp(cp + len, "none") != 0)
1789 fatal("%.200s line %d: "
1790 "AuthorizedPrincipalsCommand must be "
1791 "an absolute path", filename, linenum);
1792 options->authorized_principals_command =
1793 xstrdup(cp + len);
1794 }
1795 return 0;
1796
1797 case sAuthorizedPrincipalsCommandUser:
1798 charptr = &options->authorized_principals_command_user;
1799
1800 arg = strdelim(&cp);
1801 if (!arg || *arg == '\0')
1802 fatal("%s line %d: missing "
1803 "AuthorizedPrincipalsCommandUser argument.",
1804 filename, linenum);
1805 if (*activep && *charptr == NULL)
1806 *charptr = xstrdup(arg);
1807 break;
1808
1739 case sAuthenticationMethods: 1809 case sAuthenticationMethods:
1740 if (*activep && options->num_auth_methods == 0) { 1810 if (options->num_auth_methods == 0) {
1741 while ((arg = strdelim(&cp)) && *arg != '\0') { 1811 while ((arg = strdelim(&cp)) && *arg != '\0') {
1742 if (options->num_auth_methods >= 1812 if (options->num_auth_methods >=
1743 MAX_AUTH_METHODS) 1813 MAX_AUTH_METHODS)
@@ -1748,6 +1818,8 @@ process_server_config_line(ServerOptions *options, char *line,
1748 fatal("%s line %d: invalid " 1818 fatal("%s line %d: invalid "
1749 "authentication method list.", 1819 "authentication method list.",
1750 filename, linenum); 1820 filename, linenum);
1821 if (!*activep)
1822 continue;
1751 options->auth_methods[ 1823 options->auth_methods[
1752 options->num_auth_methods++] = xstrdup(arg); 1824 options->num_auth_methods++] = xstrdup(arg);
1753 } 1825 }
@@ -1757,13 +1829,14 @@ process_server_config_line(ServerOptions *options, char *line,
1757 case sStreamLocalBindMask: 1829 case sStreamLocalBindMask:
1758 arg = strdelim(&cp); 1830 arg = strdelim(&cp);
1759 if (!arg || *arg == '\0') 1831 if (!arg || *arg == '\0')
1760 fatal("%s line %d: missing StreamLocalBindMask argument.", 1832 fatal("%s line %d: missing StreamLocalBindMask "
1761 filename, linenum); 1833 "argument.", filename, linenum);
1762 /* Parse mode in octal format */ 1834 /* Parse mode in octal format */
1763 value = strtol(arg, &p, 8); 1835 value = strtol(arg, &p, 8);
1764 if (arg == p || value < 0 || value > 0777) 1836 if (arg == p || value < 0 || value > 0777)
1765 fatal("%s line %d: Bad mask.", filename, linenum); 1837 fatal("%s line %d: Bad mask.", filename, linenum);
1766 options->fwd_opts.streamlocal_bind_mask = (mode_t)value; 1838 if (*activep)
1839 options->fwd_opts.streamlocal_bind_mask = (mode_t)value;
1767 break; 1840 break;
1768 1841
1769 case sStreamLocalBindUnlink: 1842 case sStreamLocalBindUnlink:
@@ -1994,6 +2067,7 @@ parse_server_config(ServerOptions *options, const char *filename, Buffer *conf,
1994 if (bad_options > 0) 2067 if (bad_options > 0)
1995 fatal("%s: terminating, %d bad configuration options", 2068 fatal("%s: terminating, %d bad configuration options",
1996 filename, bad_options); 2069 filename, bad_options);
2070 process_queued_listen_addrs(options);
1997} 2071}
1998 2072
1999static const char * 2073static const char *
@@ -2071,6 +2145,12 @@ dump_cfg_int(ServerOpCodes code, int val)
2071} 2145}
2072 2146
2073static void 2147static void
2148dump_cfg_oct(ServerOpCodes code, int val)
2149{
2150 printf("%s 0%o\n", lookup_opcode_name(code), val);
2151}
2152
2153static void
2074dump_cfg_fmtint(ServerOpCodes code, int val) 2154dump_cfg_fmtint(ServerOpCodes code, int val)
2075{ 2155{
2076 printf("%s %s\n", lookup_opcode_name(code), fmt_intarg(code, val)); 2156 printf("%s %s\n", lookup_opcode_name(code), fmt_intarg(code, val));
@@ -2099,6 +2179,8 @@ dump_cfg_strarray_oneline(ServerOpCodes code, u_int count, char **vals)
2099{ 2179{
2100 u_int i; 2180 u_int i;
2101 2181
2182 if (count <= 0)
2183 return;
2102 printf("%s", lookup_opcode_name(code)); 2184 printf("%s", lookup_opcode_name(code));
2103 for (i = 0; i < count; i++) 2185 for (i = 0; i < count; i++)
2104 printf(" %s", vals[i]); 2186 printf(" %s", vals[i]);
@@ -2112,6 +2194,7 @@ dump_config(ServerOptions *o)
2112 int ret; 2194 int ret;
2113 struct addrinfo *ai; 2195 struct addrinfo *ai;
2114 char addr[NI_MAXHOST], port[NI_MAXSERV], *s = NULL; 2196 char addr[NI_MAXHOST], port[NI_MAXSERV], *s = NULL;
2197 char *laddr1 = xstrdup(""), *laddr2 = NULL;
2115 2198
2116 /* these are usually at the top of the config */ 2199 /* these are usually at the top of the config */
2117 for (i = 0; i < o->num_ports; i++) 2200 for (i = 0; i < o->num_ports; i++)
@@ -2119,7 +2202,11 @@ dump_config(ServerOptions *o)
2119 dump_cfg_fmtint(sProtocol, o->protocol); 2202 dump_cfg_fmtint(sProtocol, o->protocol);
2120 dump_cfg_fmtint(sAddressFamily, o->address_family); 2203 dump_cfg_fmtint(sAddressFamily, o->address_family);
2121 2204
2122 /* ListenAddress must be after Port */ 2205 /*
2206 * ListenAddress must be after Port. add_one_listen_addr pushes
2207 * addresses onto a stack, so to maintain ordering we need to
2208 * print these in reverse order.
2209 */
2123 for (ai = o->listen_addrs; ai; ai = ai->ai_next) { 2210 for (ai = o->listen_addrs; ai; ai = ai->ai_next) {
2124 if ((ret = getnameinfo(ai->ai_addr, ai->ai_addrlen, addr, 2211 if ((ret = getnameinfo(ai->ai_addr, ai->ai_addrlen, addr,
2125 sizeof(addr), port, sizeof(port), 2212 sizeof(addr), port, sizeof(port),
@@ -2128,16 +2215,22 @@ dump_config(ServerOptions *o)
2128 (ret != EAI_SYSTEM) ? gai_strerror(ret) : 2215 (ret != EAI_SYSTEM) ? gai_strerror(ret) :
2129 strerror(errno)); 2216 strerror(errno));
2130 } else { 2217 } else {
2218 laddr2 = laddr1;
2131 if (ai->ai_family == AF_INET6) 2219 if (ai->ai_family == AF_INET6)
2132 printf("listenaddress [%s]:%s\n", addr, port); 2220 xasprintf(&laddr1, "listenaddress [%s]:%s\n%s",
2221 addr, port, laddr2);
2133 else 2222 else
2134 printf("listenaddress %s:%s\n", addr, port); 2223 xasprintf(&laddr1, "listenaddress %s:%s\n%s",
2224 addr, port, laddr2);
2225 free(laddr2);
2135 } 2226 }
2136 } 2227 }
2228 printf("%s", laddr1);
2229 free(laddr1);
2137 2230
2138 /* integer arguments */ 2231 /* integer arguments */
2139#ifdef USE_PAM 2232#ifdef USE_PAM
2140 dump_cfg_int(sUsePAM, o->use_pam); 2233 dump_cfg_fmtint(sUsePAM, o->use_pam);
2141#endif 2234#endif
2142 dump_cfg_int(sServerKeyBits, o->server_key_bits); 2235 dump_cfg_int(sServerKeyBits, o->server_key_bits);
2143 dump_cfg_int(sLoginGraceTime, o->login_grace_time); 2236 dump_cfg_int(sLoginGraceTime, o->login_grace_time);
@@ -2147,6 +2240,7 @@ dump_config(ServerOptions *o)
2147 dump_cfg_int(sMaxSessions, o->max_sessions); 2240 dump_cfg_int(sMaxSessions, o->max_sessions);
2148 dump_cfg_int(sClientAliveInterval, o->client_alive_interval); 2241 dump_cfg_int(sClientAliveInterval, o->client_alive_interval);
2149 dump_cfg_int(sClientAliveCountMax, o->client_alive_count_max); 2242 dump_cfg_int(sClientAliveCountMax, o->client_alive_count_max);
2243 dump_cfg_oct(sStreamLocalBindMask, o->fwd_opts.streamlocal_bind_mask);
2150 2244
2151 /* formatted integer arguments */ 2245 /* formatted integer arguments */
2152 dump_cfg_fmtint(sPermitRootLogin, o->permit_root_login); 2246 dump_cfg_fmtint(sPermitRootLogin, o->permit_root_login);
@@ -2193,6 +2287,7 @@ dump_config(ServerOptions *o)
2193 dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports); 2287 dump_cfg_fmtint(sGatewayPorts, o->fwd_opts.gateway_ports);
2194 dump_cfg_fmtint(sUseDNS, o->use_dns); 2288 dump_cfg_fmtint(sUseDNS, o->use_dns);
2195 dump_cfg_fmtint(sAllowTcpForwarding, o->allow_tcp_forwarding); 2289 dump_cfg_fmtint(sAllowTcpForwarding, o->allow_tcp_forwarding);
2290 dump_cfg_fmtint(sAllowAgentForwarding, o->allow_agent_forwarding);
2196 dump_cfg_fmtint(sAllowStreamLocalForwarding, o->allow_streamlocal_forwarding); 2291 dump_cfg_fmtint(sAllowStreamLocalForwarding, o->allow_streamlocal_forwarding);
2197 dump_cfg_fmtint(sUsePrivilegeSeparation, use_privsep); 2292 dump_cfg_fmtint(sUsePrivilegeSeparation, use_privsep);
2198 dump_cfg_fmtint(sFingerprintHash, o->fingerprint_hash); 2293 dump_cfg_fmtint(sFingerprintHash, o->fingerprint_hash);
@@ -2209,9 +2304,12 @@ dump_config(ServerOptions *o)
2209 dump_cfg_string(sRevokedKeys, o->revoked_keys_file); 2304 dump_cfg_string(sRevokedKeys, o->revoked_keys_file);
2210 dump_cfg_string(sAuthorizedPrincipalsFile, 2305 dump_cfg_string(sAuthorizedPrincipalsFile,
2211 o->authorized_principals_file); 2306 o->authorized_principals_file);
2212 dump_cfg_string(sVersionAddendum, o->version_addendum); 2307 dump_cfg_string(sVersionAddendum, *o->version_addendum == '\0'
2308 ? "none" : o->version_addendum);
2213 dump_cfg_string(sAuthorizedKeysCommand, o->authorized_keys_command); 2309 dump_cfg_string(sAuthorizedKeysCommand, o->authorized_keys_command);
2214 dump_cfg_string(sAuthorizedKeysCommandUser, o->authorized_keys_command_user); 2310 dump_cfg_string(sAuthorizedKeysCommandUser, o->authorized_keys_command_user);
2311 dump_cfg_string(sAuthorizedPrincipalsCommand, o->authorized_principals_command);
2312 dump_cfg_string(sAuthorizedPrincipalsCommandUser, o->authorized_principals_command_user);
2215 dump_cfg_string(sHostKeyAgent, o->host_key_agent); 2313 dump_cfg_string(sHostKeyAgent, o->host_key_agent);
2216 dump_cfg_string(sKexAlgorithms, 2314 dump_cfg_string(sKexAlgorithms,
2217 o->kex_algorithms ? o->kex_algorithms : KEX_SERVER_KEX); 2315 o->kex_algorithms ? o->kex_algorithms : KEX_SERVER_KEX);
@@ -2229,7 +2327,7 @@ dump_config(ServerOptions *o)
2229 o->authorized_keys_files); 2327 o->authorized_keys_files);
2230 dump_cfg_strarray(sHostKeyFile, o->num_host_key_files, 2328 dump_cfg_strarray(sHostKeyFile, o->num_host_key_files,
2231 o->host_key_files); 2329 o->host_key_files);
2232 dump_cfg_strarray(sHostKeyFile, o->num_host_cert_files, 2330 dump_cfg_strarray(sHostCertificate, o->num_host_cert_files,
2233 o->host_cert_files); 2331 o->host_cert_files);
2234 dump_cfg_strarray(sAllowUsers, o->num_allow_users, o->allow_users); 2332 dump_cfg_strarray(sAllowUsers, o->num_allow_users, o->allow_users);
2235 dump_cfg_strarray(sDenyUsers, o->num_deny_users, o->deny_users); 2333 dump_cfg_strarray(sDenyUsers, o->num_deny_users, o->deny_users);
diff --git a/servconf.h b/servconf.h
index ed0f17167..ba7b73947 100644
--- a/servconf.h
+++ b/servconf.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: servconf.h,v 1.116 2015/01/13 07:39:19 djm Exp $ */ 1/* $OpenBSD: servconf.h,v 1.119 2015/05/22 03:50:02 djm Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -58,7 +58,9 @@ typedef struct {
58 u_int num_ports; 58 u_int num_ports;
59 u_int ports_from_cmdline; 59 u_int ports_from_cmdline;
60 int ports[MAX_PORTS]; /* Port number to listen on. */ 60 int ports[MAX_PORTS]; /* Port number to listen on. */
61 char *listen_addr; /* Address on which the server listens. */ 61 u_int num_queued_listens;
62 char **queued_listen_addrs;
63 int *queued_listen_ports;
62 struct addrinfo *listen_addrs; /* Addresses on which the server listens. */ 64 struct addrinfo *listen_addrs; /* Addresses on which the server listens. */
63 int address_family; /* Address family used by the server. */ 65 int address_family; /* Address family used by the server. */
64 char *host_key_files[MAX_HOSTKEYS]; /* Files containing host keys. */ 66 char *host_key_files[MAX_HOSTKEYS]; /* Files containing host keys. */
@@ -117,7 +119,7 @@ typedef struct {
117 int gss_authentication; /* If true, permit GSSAPI authentication */ 119 int gss_authentication; /* If true, permit GSSAPI authentication */
118 int gss_keyex; /* If true, permit GSSAPI key exchange */ 120 int gss_keyex; /* If true, permit GSSAPI key exchange */
119 int gss_cleanup_creds; /* If true, destroy cred cache on logout */ 121 int gss_cleanup_creds; /* If true, destroy cred cache on logout */
120 int gss_strict_acceptor; /* If true, restrict the GSSAPI acceptor name */ 122 int gss_strict_acceptor; /* If true, restrict the GSSAPI acceptor name */
121 int gss_store_rekey; 123 int gss_store_rekey;
122 int password_authentication; /* If true, permit password 124 int password_authentication; /* If true, permit password
123 * authentication. */ 125 * authentication. */
@@ -179,9 +181,11 @@ typedef struct {
179 char *chroot_directory; 181 char *chroot_directory;
180 char *revoked_keys_file; 182 char *revoked_keys_file;
181 char *trusted_user_ca_keys; 183 char *trusted_user_ca_keys;
182 char *authorized_principals_file;
183 char *authorized_keys_command; 184 char *authorized_keys_command;
184 char *authorized_keys_command_user; 185 char *authorized_keys_command_user;
186 char *authorized_principals_file;
187 char *authorized_principals_command;
188 char *authorized_principals_command_user;
185 189
186 int64_t rekey_limit; 190 int64_t rekey_limit;
187 int rekey_interval; 191 int rekey_interval;
@@ -219,9 +223,11 @@ struct connection_info {
219 M_CP_STROPT(banner); \ 223 M_CP_STROPT(banner); \
220 M_CP_STROPT(trusted_user_ca_keys); \ 224 M_CP_STROPT(trusted_user_ca_keys); \
221 M_CP_STROPT(revoked_keys_file); \ 225 M_CP_STROPT(revoked_keys_file); \
222 M_CP_STROPT(authorized_principals_file); \
223 M_CP_STROPT(authorized_keys_command); \ 226 M_CP_STROPT(authorized_keys_command); \
224 M_CP_STROPT(authorized_keys_command_user); \ 227 M_CP_STROPT(authorized_keys_command_user); \
228 M_CP_STROPT(authorized_principals_file); \
229 M_CP_STROPT(authorized_principals_command); \
230 M_CP_STROPT(authorized_principals_command_user); \
225 M_CP_STROPT(hostbased_key_types); \ 231 M_CP_STROPT(hostbased_key_types); \
226 M_CP_STROPT(pubkey_key_types); \ 232 M_CP_STROPT(pubkey_key_types); \
227 M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \ 233 M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \
diff --git a/session.c b/session.c
index 785833f09..c6bd7286b 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: session.c,v 1.277 2015/01/16 06:40:12 deraadt Exp $ */ 1/* $OpenBSD: session.c,v 1.278 2015/04/24 01:36:00 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 3 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
4 * All rights reserved 4 * All rights reserved
@@ -998,7 +998,7 @@ child_set_env(char ***envp, u_int *envsizep, const char *name,
998 if (envsize >= 1000) 998 if (envsize >= 1000)
999 fatal("child_set_env: too many env vars"); 999 fatal("child_set_env: too many env vars");
1000 envsize += 50; 1000 envsize += 50;
1001 env = (*envp) = xrealloc(env, envsize, sizeof(char *)); 1001 env = (*envp) = xreallocarray(env, envsize, sizeof(char *));
1002 *envsizep = envsize; 1002 *envsizep = envsize;
1003 } 1003 }
1004 /* Need to set the NULL pointer at end of array beyond the new slot. */ 1004 /* Need to set the NULL pointer at end of array beyond the new slot. */
@@ -1923,7 +1923,7 @@ session_new(void)
1923 return NULL; 1923 return NULL;
1924 debug2("%s: allocate (allocated %d max %d)", 1924 debug2("%s: allocate (allocated %d max %d)",
1925 __func__, sessions_nalloc, options.max_sessions); 1925 __func__, sessions_nalloc, options.max_sessions);
1926 tmp = xrealloc(sessions, sessions_nalloc + 1, 1926 tmp = xreallocarray(sessions, sessions_nalloc + 1,
1927 sizeof(*sessions)); 1927 sizeof(*sessions));
1928 if (tmp == NULL) { 1928 if (tmp == NULL) {
1929 error("%s: cannot allocate %d sessions", 1929 error("%s: cannot allocate %d sessions",
@@ -2250,7 +2250,7 @@ session_env_req(Session *s)
2250 for (i = 0; i < options.num_accept_env; i++) { 2250 for (i = 0; i < options.num_accept_env; i++) {
2251 if (match_pattern(name, options.accept_env[i])) { 2251 if (match_pattern(name, options.accept_env[i])) {
2252 debug2("Setting env %d: %s=%s", s->num_env, name, val); 2252 debug2("Setting env %d: %s=%s", s->num_env, name, val);
2253 s->env = xrealloc(s->env, s->num_env + 1, 2253 s->env = xreallocarray(s->env, s->num_env + 1,
2254 sizeof(*s->env)); 2254 sizeof(*s->env));
2255 s->env[s->num_env].name = name; 2255 s->env[s->num_env].name = name;
2256 s->env[s->num_env].val = val; 2256 s->env[s->num_env].val = val;
diff --git a/sftp-client.c b/sftp-client.c
index 80f4805cb..5dbeb47c0 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-client.c,v 1.117 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: sftp-client.c,v 1.120 2015/05/28 04:50:53 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 3 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
4 * 4 *
@@ -408,6 +408,7 @@ do_init(int fd_in, int fd_out, u_int transfer_buflen, u_int num_requests,
408 error("Invalid packet back from SSH2_FXP_INIT (type %u)", 408 error("Invalid packet back from SSH2_FXP_INIT (type %u)",
409 type); 409 type);
410 sshbuf_free(msg); 410 sshbuf_free(msg);
411 free(ret);
411 return(NULL); 412 return(NULL);
412 } 413 }
413 if ((r = sshbuf_get_u32(msg, &ret->version)) != 0) 414 if ((r = sshbuf_get_u32(msg, &ret->version)) != 0)
@@ -621,7 +622,7 @@ do_lsreaddir(struct sftp_conn *conn, const char *path, int print_flag,
621 error("Server sent suspect path \"%s\" " 622 error("Server sent suspect path \"%s\" "
622 "during readdir of \"%s\"", filename, path); 623 "during readdir of \"%s\"", filename, path);
623 } else if (dir) { 624 } else if (dir) {
624 *dir = xrealloc(*dir, ents + 2, sizeof(**dir)); 625 *dir = xreallocarray(*dir, ents + 2, sizeof(**dir));
625 (*dir)[ents] = xcalloc(1, sizeof(***dir)); 626 (*dir)[ents] = xcalloc(1, sizeof(***dir));
626 (*dir)[ents]->filename = xstrdup(filename); 627 (*dir)[ents]->filename = xstrdup(filename);
627 (*dir)[ents]->longname = xstrdup(longname); 628 (*dir)[ents]->longname = xstrdup(longname);
@@ -1384,7 +1385,9 @@ do_download(struct sftp_conn *conn, const char *remote_path,
1384 "server reordered requests", local_path); 1385 "server reordered requests", local_path);
1385 } 1386 }
1386 debug("truncating at %llu", (unsigned long long)highwater); 1387 debug("truncating at %llu", (unsigned long long)highwater);
1387 ftruncate(local_fd, highwater); 1388 if (ftruncate(local_fd, highwater) == -1)
1389 error("ftruncate \"%s\": %s", local_path,
1390 strerror(errno));
1388 } 1391 }
1389 if (read_error) { 1392 if (read_error) {
1390 error("Couldn't read from remote file \"%s\" : %s", 1393 error("Couldn't read from remote file \"%s\" : %s",
diff --git a/sftp-client.h b/sftp-client.h
index 507d763ea..f814b07d6 100644
--- a/sftp-client.h
+++ b/sftp-client.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-client.h,v 1.26 2015/01/14 13:54:13 djm Exp $ */ 1/* $OpenBSD: sftp-client.h,v 1.27 2015/05/08 06:45:13 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org> 4 * Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
@@ -111,7 +111,7 @@ int do_download(struct sftp_conn *, const char *, const char *,
111 Attrib *, int, int, int); 111 Attrib *, int, int, int);
112 112
113/* 113/*
114 * Recursively download 'remote_directory' to 'local_directory'. Preserve 114 * Recursively download 'remote_directory' to 'local_directory'. Preserve
115 * times if 'pflag' is set 115 * times if 'pflag' is set
116 */ 116 */
117int download_dir(struct sftp_conn *, const char *, const char *, 117int download_dir(struct sftp_conn *, const char *, const char *,
@@ -124,7 +124,7 @@ int download_dir(struct sftp_conn *, const char *, const char *,
124int do_upload(struct sftp_conn *, const char *, const char *, int, int, int); 124int do_upload(struct sftp_conn *, const char *, const char *, int, int, int);
125 125
126/* 126/*
127 * Recursively upload 'local_directory' to 'remote_directory'. Preserve 127 * Recursively upload 'local_directory' to 'remote_directory'. Preserve
128 * times if 'pflag' is set 128 * times if 'pflag' is set
129 */ 129 */
130int upload_dir(struct sftp_conn *, const char *, const char *, int, int, int, 130int upload_dir(struct sftp_conn *, const char *, const char *, int, int, int,
diff --git a/sftp-server.c b/sftp-server.c
index 4f735cd93..d1831bf8d 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sftp-server.c,v 1.105 2015/01/20 23:14:00 deraadt Exp $ */ 1/* $OpenBSD: sftp-server.c,v 1.106 2015/04/24 01:36:01 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000-2004 Markus Friedl. All rights reserved.
4 * 4 *
@@ -40,7 +40,6 @@
40#include <stdlib.h> 40#include <stdlib.h>
41#include <stdio.h> 41#include <stdio.h>
42#include <string.h> 42#include <string.h>
43#include <pwd.h>
44#include <time.h> 43#include <time.h>
45#include <unistd.h> 44#include <unistd.h>
46#include <stdarg.h> 45#include <stdarg.h>
@@ -310,7 +309,7 @@ handle_new(int use, const char *name, int fd, int flags, DIR *dirp)
310 if (num_handles + 1 <= num_handles) 309 if (num_handles + 1 <= num_handles)
311 return -1; 310 return -1;
312 num_handles++; 311 num_handles++;
313 handles = xrealloc(handles, num_handles, sizeof(Handle)); 312 handles = xreallocarray(handles, num_handles, sizeof(Handle));
314 handle_unused(num_handles - 1); 313 handle_unused(num_handles - 1);
315 } 314 }
316 315
@@ -1063,7 +1062,7 @@ process_readdir(u_int32_t id)
1063 while ((dp = readdir(dirp)) != NULL) { 1062 while ((dp = readdir(dirp)) != NULL) {
1064 if (count >= nstats) { 1063 if (count >= nstats) {
1065 nstats *= 2; 1064 nstats *= 2;
1066 stats = xrealloc(stats, nstats, sizeof(Stat)); 1065 stats = xreallocarray(stats, nstats, sizeof(Stat));
1067 } 1066 }
1068/* XXX OVERFLOW ? */ 1067/* XXX OVERFLOW ? */
1069 snprintf(pathname, sizeof pathname, "%s%s%s", path, 1068 snprintf(pathname, sizeof pathname, "%s%s%s", path,
diff --git a/ssh-add.0 b/ssh-add.0
index 8ee39470a..66493f141 100644
--- a/ssh-add.0
+++ b/ssh-add.0
@@ -29,9 +29,9 @@ DESCRIPTION
29 29
30 -c Indicates that added identities should be subject to confirmation 30 -c Indicates that added identities should be subject to confirmation
31 before being used for authentication. Confirmation is performed 31 before being used for authentication. Confirmation is performed
32 by the SSH_ASKPASS program mentioned below. Successful 32 by ssh-askpass(1). Successful confirmation is signaled by a zero
33 confirmation is signaled by a zero exit status from the 33 exit status from ssh-askpass(1), rather than text entered into
34 SSH_ASKPASS program, rather than text entered into the requester. 34 the requester.
35 35
36 -D Deletes all identities from the agent. 36 -D Deletes all identities from the agent.
37 37
@@ -78,10 +78,11 @@ ENVIRONMENT
78 the current terminal if it was run from a terminal. If ssh-add 78 the current terminal if it was run from a terminal. If ssh-add
79 does not have a terminal associated with it but DISPLAY and 79 does not have a terminal associated with it but DISPLAY and
80 SSH_ASKPASS are set, it will execute the program specified by 80 SSH_ASKPASS are set, it will execute the program specified by
81 SSH_ASKPASS and open an X11 window to read the passphrase. This 81 SSH_ASKPASS (by default M-bM-^@M-^\ssh-askpassM-bM-^@M-^]) and open an X11 window to
82 is particularly useful when calling ssh-add from a .xsession or 82 read the passphrase. This is particularly useful when calling
83 related script. (Note that on some machines it may be necessary 83 ssh-add from a .xsession or related script. (Note that on some
84 to redirect the input from /dev/null to make this work.) 84 machines it may be necessary to redirect the input from /dev/null
85 to make this work.)
85 86
86 SSH_AUTH_SOCK 87 SSH_AUTH_SOCK
87 Identifies the path of a UNIX-domain socket used to communicate 88 Identifies the path of a UNIX-domain socket used to communicate
@@ -116,7 +117,7 @@ EXIT STATUS
116 ssh-add is unable to contact the authentication agent. 117 ssh-add is unable to contact the authentication agent.
117 118
118SEE ALSO 119SEE ALSO
119 ssh(1), ssh-agent(1), ssh-keygen(1), sshd(8) 120 ssh(1), ssh-agent(1), ssh-askpass(1), ssh-keygen(1), sshd(8)
120 121
121AUTHORS 122AUTHORS
122 OpenSSH is a derivative of the original and free ssh 1.2.12 release by 123 OpenSSH is a derivative of the original and free ssh 1.2.12 release by
@@ -125,4 +126,4 @@ AUTHORS
125 created OpenSSH. Markus Friedl contributed the support for SSH protocol 126 created OpenSSH. Markus Friedl contributed the support for SSH protocol
126 versions 1.5 and 2.0. 127 versions 1.5 and 2.0.
127 128
128OpenBSD 5.7 December 21, 2014 OpenBSD 5.7 129OpenBSD 5.7 March 30, 2015 OpenBSD 5.7
diff --git a/ssh-add.1 b/ssh-add.1
index 926456f0b..f02b595d5 100644
--- a/ssh-add.1
+++ b/ssh-add.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-add.1,v 1.61 2014/12/21 22:27:56 djm Exp $ 1.\" $OpenBSD: ssh-add.1,v 1.62 2015/03/30 18:28:37 jmc Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -35,7 +35,7 @@
35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 35.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37.\" 37.\"
38.Dd $Mdocdate: December 21 2014 $ 38.Dd $Mdocdate: March 30 2015 $
39.Dt SSH-ADD 1 39.Dt SSH-ADD 1
40.Os 40.Os
41.Sh NAME 41.Sh NAME
@@ -88,12 +88,11 @@ The options are as follows:
88.It Fl c 88.It Fl c
89Indicates that added identities should be subject to confirmation before 89Indicates that added identities should be subject to confirmation before
90being used for authentication. 90being used for authentication.
91Confirmation is performed by the 91Confirmation is performed by
92.Ev SSH_ASKPASS 92.Xr ssh-askpass 1 .
93program mentioned below. 93Successful confirmation is signaled by a zero exit status from
94Successful confirmation is signaled by a zero exit status from the 94.Xr ssh-askpass 1 ,
95.Ev SSH_ASKPASS 95rather than text entered into the requester.
96program, rather than text entered into the requester.
97.It Fl D 96.It Fl D
98Deletes all identities from the agent. 97Deletes all identities from the agent.
99.It Fl d 98.It Fl d
@@ -156,6 +155,8 @@ and
156.Ev SSH_ASKPASS 155.Ev SSH_ASKPASS
157are set, it will execute the program specified by 156are set, it will execute the program specified by
158.Ev SSH_ASKPASS 157.Ev SSH_ASKPASS
158(by default
159.Dq ssh-askpass )
159and open an X11 window to read the passphrase. 160and open an X11 window to read the passphrase.
160This is particularly useful when calling 161This is particularly useful when calling
161.Nm 162.Nm
@@ -197,6 +198,7 @@ is unable to contact the authentication agent.
197.Sh SEE ALSO 198.Sh SEE ALSO
198.Xr ssh 1 , 199.Xr ssh 1 ,
199.Xr ssh-agent 1 , 200.Xr ssh-agent 1 ,
201.Xr ssh-askpass 1 ,
200.Xr ssh-keygen 1 , 202.Xr ssh-keygen 1 ,
201.Xr sshd 8 203.Xr sshd 8
202.Sh AUTHORS 204.Sh AUTHORS
diff --git a/ssh-add.c b/ssh-add.c
index 98d46d3e5..9c8da5437 100644
--- a/ssh-add.c
+++ b/ssh-add.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-add.c,v 1.120 2015/02/21 21:46:57 halex Exp $ */ 1/* $OpenBSD: ssh-add.c,v 1.122 2015/03/26 12:32:38 naddy Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -79,7 +79,9 @@ static char *default_files[] = {
79#endif 79#endif
80#endif /* WITH_OPENSSL */ 80#endif /* WITH_OPENSSL */
81 _PATH_SSH_CLIENT_ID_ED25519, 81 _PATH_SSH_CLIENT_ID_ED25519,
82#ifdef WITH_SSH1
82 _PATH_SSH_CLIENT_IDENTITY, 83 _PATH_SSH_CLIENT_IDENTITY,
84#endif
83 NULL 85 NULL
84}; 86};
85 87
@@ -164,11 +166,10 @@ delete_all(int agent_fd)
164{ 166{
165 int ret = -1; 167 int ret = -1;
166 168
167 if (ssh_remove_all_identities(agent_fd, 1) == 0) 169 if (ssh_remove_all_identities(agent_fd, 2) == 0)
168 ret = 0; 170 ret = 0;
169 /* ignore error-code for ssh2 */ 171 /* ignore error-code for ssh1 */
170 /* XXX revisit */ 172 ssh_remove_all_identities(agent_fd, 1);
171 ssh_remove_all_identities(agent_fd, 2);
172 173
173 if (ret == 0) 174 if (ret == 0)
174 fprintf(stderr, "All identities removed.\n"); 175 fprintf(stderr, "All identities removed.\n");
@@ -364,11 +365,16 @@ static int
364list_identities(int agent_fd, int do_fp) 365list_identities(int agent_fd, int do_fp)
365{ 366{
366 char *fp; 367 char *fp;
367 int version, r, had_identities = 0; 368 int r, had_identities = 0;
368 struct ssh_identitylist *idlist; 369 struct ssh_identitylist *idlist;
369 size_t i; 370 size_t i;
371#ifdef WITH_SSH1
372 int version = 1;
373#else
374 int version = 2;
375#endif
370 376
371 for (version = 1; version <= 2; version++) { 377 for (; version <= 2; version++) {
372 if ((r = ssh_fetch_identitylist(agent_fd, version, 378 if ((r = ssh_fetch_identitylist(agent_fd, version,
373 &idlist)) != 0) { 379 &idlist)) != 0) {
374 if (r != SSH_ERR_AGENT_NO_IDENTITIES) 380 if (r != SSH_ERR_AGENT_NO_IDENTITIES)
diff --git a/ssh-agent.0 b/ssh-agent.0
index 30f4eb3bc..eb892811c 100644
--- a/ssh-agent.0
+++ b/ssh-agent.0
@@ -4,7 +4,7 @@ NAME
4 ssh-agent M-bM-^@M-^S authentication agent 4 ssh-agent M-bM-^@M-^S authentication agent
5 5
6SYNOPSIS 6SYNOPSIS
7 ssh-agent [-c | -s] [-d] [-a bind_address] [-E fingerprint_hash] 7 ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]
8 [-t life] [command [arg ...]] 8 [-t life] [command [arg ...]]
9 ssh-agent [-c | -s] -k 9 ssh-agent [-c | -s] -k
10 10
@@ -32,8 +32,11 @@ DESCRIPTION
32 -c Generate C-shell commands on stdout. This is the default if 32 -c Generate C-shell commands on stdout. This is the default if
33 SHELL looks like it's a csh style of shell. 33 SHELL looks like it's a csh style of shell.
34 34
35 -D Foreground mode. When this option is specified ssh-agent will
36 not fork.
37
35 -d Debug mode. When this option is specified ssh-agent will not 38 -d Debug mode. When this option is specified ssh-agent will not
36 fork. 39 fork and will write debug information to standard error.
37 40
38 -E fingerprint_hash 41 -E fingerprint_hash
39 Specifies the hash algorithm used when displaying key 42 Specifies the hash algorithm used when displaying key
@@ -106,4 +109,4 @@ AUTHORS
106 created OpenSSH. Markus Friedl contributed the support for SSH protocol 109 created OpenSSH. Markus Friedl contributed the support for SSH protocol
107 versions 1.5 and 2.0. 110 versions 1.5 and 2.0.
108 111
109OpenBSD 5.7 December 21, 2014 OpenBSD 5.7 112OpenBSD 5.7 April 24, 2015 OpenBSD 5.7
diff --git a/ssh-agent.1 b/ssh-agent.1
index 25de326b4..2a940d9ff 100644
--- a/ssh-agent.1
+++ b/ssh-agent.1
@@ -1,4 +1,4 @@
1.\" $OpenBSD: ssh-agent.1,v 1.57 2014/12/21 22:27:56 djm Exp $ 1.\" $OpenBSD: ssh-agent.1,v 1.59 2015/04/24 06:26:49 jmc Exp $
2.\" 2.\"
3.\" Author: Tatu Ylonen <ylo@cs.hut.fi> 3.\" Author: Tatu Ylonen <ylo@cs.hut.fi>
4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4.\" Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -34,7 +34,7 @@
34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 34.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36.\" 36.\"
37.Dd $Mdocdate: December 21 2014 $ 37.Dd $Mdocdate: April 24 2015 $
38.Dt SSH-AGENT 1 38.Dt SSH-AGENT 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -43,7 +43,7 @@
43.Sh SYNOPSIS 43.Sh SYNOPSIS
44.Nm ssh-agent 44.Nm ssh-agent
45.Op Fl c | s 45.Op Fl c | s
46.Op Fl d 46.Op Fl Dd
47.Op Fl a Ar bind_address 47.Op Fl a Ar bind_address
48.Op Fl E Ar fingerprint_hash 48.Op Fl E Ar fingerprint_hash
49.Op Fl t Ar life 49.Op Fl t Ar life
@@ -92,11 +92,16 @@ Generate C-shell commands on
92This is the default if 92This is the default if
93.Ev SHELL 93.Ev SHELL
94looks like it's a csh style of shell. 94looks like it's a csh style of shell.
95.It Fl D
96Foreground mode.
97When this option is specified
98.Nm
99will not fork.
95.It Fl d 100.It Fl d
96Debug mode. 101Debug mode.
97When this option is specified 102When this option is specified
98.Nm 103.Nm
99will not fork. 104will not fork and will write debug information to standard error.
100.It Fl E Ar fingerprint_hash 105.It Fl E Ar fingerprint_hash
101Specifies the hash algorithm used when displaying key fingerprints. 106Specifies the hash algorithm used when displaying key fingerprints.
102Valid options are: 107Valid options are:
diff --git a/ssh-agent.c b/ssh-agent.c
index aeda656ac..34b19b754 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-agent.c,v 1.199 2015/03/04 21:12:59 djm Exp $ */ 1/* $OpenBSD: ssh-agent.c,v 1.203 2015/05/15 05:44:21 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -68,6 +68,9 @@
68#include <time.h> 68#include <time.h>
69#include <string.h> 69#include <string.h>
70#include <unistd.h> 70#include <unistd.h>
71#ifdef HAVE_UTIL_H
72# include <util.h>
73#endif
71 74
72#include "key.h" /* XXX for typedef */ 75#include "key.h" /* XXX for typedef */
73#include "buffer.h" /* XXX for typedef */ 76#include "buffer.h" /* XXX for typedef */
@@ -140,8 +143,12 @@ char socket_name[PATH_MAX];
140char socket_dir[PATH_MAX]; 143char socket_dir[PATH_MAX];
141 144
142/* locking */ 145/* locking */
146#define LOCK_SIZE 32
147#define LOCK_SALT_SIZE 16
148#define LOCK_ROUNDS 1
143int locked = 0; 149int locked = 0;
144char *lock_passwd = NULL; 150char lock_passwd[LOCK_SIZE];
151char lock_salt[LOCK_SALT_SIZE];
145 152
146extern char *__progname; 153extern char *__progname;
147 154
@@ -660,23 +667,45 @@ send:
660static void 667static void
661process_lock_agent(SocketEntry *e, int lock) 668process_lock_agent(SocketEntry *e, int lock)
662{ 669{
663 int r, success = 0; 670 int r, success = 0, delay;
664 char *passwd; 671 char *passwd, passwdhash[LOCK_SIZE];
672 static u_int fail_count = 0;
673 size_t pwlen;
665 674
666 if ((r = sshbuf_get_cstring(e->request, &passwd, NULL)) != 0) 675 if ((r = sshbuf_get_cstring(e->request, &passwd, &pwlen)) != 0)
667 fatal("%s: buffer error: %s", __func__, ssh_err(r)); 676 fatal("%s: buffer error: %s", __func__, ssh_err(r));
668 if (locked && !lock && strcmp(passwd, lock_passwd) == 0) { 677 if (pwlen == 0) {
669 locked = 0; 678 debug("empty password not supported");
670 explicit_bzero(lock_passwd, strlen(lock_passwd)); 679 } else if (locked && !lock) {
671 free(lock_passwd); 680 if (bcrypt_pbkdf(passwd, pwlen, lock_salt, sizeof(lock_salt),
672 lock_passwd = NULL; 681 passwdhash, sizeof(passwdhash), LOCK_ROUNDS) < 0)
673 success = 1; 682 fatal("bcrypt_pbkdf");
683 if (timingsafe_bcmp(passwdhash, lock_passwd, LOCK_SIZE) == 0) {
684 debug("agent unlocked");
685 locked = 0;
686 fail_count = 0;
687 explicit_bzero(lock_passwd, sizeof(lock_passwd));
688 success = 1;
689 } else {
690 /* delay in 0.1s increments up to 10s */
691 if (fail_count < 100)
692 fail_count++;
693 delay = 100000 * fail_count;
694 debug("unlock failed, delaying %0.1lf seconds",
695 (double)delay/1000000);
696 usleep(delay);
697 }
698 explicit_bzero(passwdhash, sizeof(passwdhash));
674 } else if (!locked && lock) { 699 } else if (!locked && lock) {
700 debug("agent locked");
675 locked = 1; 701 locked = 1;
676 lock_passwd = xstrdup(passwd); 702 arc4random_buf(lock_salt, sizeof(lock_salt));
703 if (bcrypt_pbkdf(passwd, pwlen, lock_salt, sizeof(lock_salt),
704 lock_passwd, sizeof(lock_passwd), LOCK_ROUNDS) < 0)
705 fatal("bcrypt_pbkdf");
677 success = 1; 706 success = 1;
678 } 707 }
679 explicit_bzero(passwd, strlen(passwd)); 708 explicit_bzero(passwd, pwlen);
680 free(passwd); 709 free(passwd);
681 send_status(e, success); 710 send_status(e, success);
682} 711}
@@ -929,7 +958,7 @@ new_socket(sock_type type, int fd)
929 } 958 }
930 old_alloc = sockets_alloc; 959 old_alloc = sockets_alloc;
931 new_alloc = sockets_alloc + 10; 960 new_alloc = sockets_alloc + 10;
932 sockets = xrealloc(sockets, new_alloc, sizeof(sockets[0])); 961 sockets = xreallocarray(sockets, new_alloc, sizeof(sockets[0]));
933 for (i = old_alloc; i < new_alloc; i++) 962 for (i = old_alloc; i < new_alloc; i++)
934 sockets[i].type = AUTH_UNUSED; 963 sockets[i].type = AUTH_UNUSED;
935 sockets_alloc = new_alloc; 964 sockets_alloc = new_alloc;
@@ -1137,7 +1166,7 @@ static void
1137usage(void) 1166usage(void)
1138{ 1167{
1139 fprintf(stderr, 1168 fprintf(stderr,
1140 "usage: ssh-agent [-c | -s] [-d] [-a bind_address] [-E fingerprint_hash]\n" 1169 "usage: ssh-agent [-c | -s] [-Dd] [-a bind_address] [-E fingerprint_hash]\n"
1141 " [-t life] [command [arg ...]]\n" 1170 " [-t life] [command [arg ...]]\n"
1142 " ssh-agent [-c | -s] -k\n"); 1171 " ssh-agent [-c | -s] -k\n");
1143 exit(1); 1172 exit(1);
@@ -1146,7 +1175,7 @@ usage(void)
1146int 1175int
1147main(int ac, char **av) 1176main(int ac, char **av)
1148{ 1177{
1149 int c_flag = 0, d_flag = 0, k_flag = 0, s_flag = 0; 1178 int c_flag = 0, d_flag = 0, D_flag = 0, k_flag = 0, s_flag = 0;
1150 int sock, fd, ch, result, saved_errno; 1179 int sock, fd, ch, result, saved_errno;
1151 u_int nalloc; 1180 u_int nalloc;
1152 char *shell, *format, *pidstr, *agentsocket = NULL; 1181 char *shell, *format, *pidstr, *agentsocket = NULL;
@@ -1181,7 +1210,7 @@ main(int ac, char **av)
1181 __progname = ssh_get_progname(av[0]); 1210 __progname = ssh_get_progname(av[0]);
1182 seed_rng(); 1211 seed_rng();
1183 1212
1184 while ((ch = getopt(ac, av, "cdksE:a:t:")) != -1) { 1213 while ((ch = getopt(ac, av, "cDdksE:a:t:")) != -1) {
1185 switch (ch) { 1214 switch (ch) {
1186 case 'E': 1215 case 'E':
1187 fingerprint_hash = ssh_digest_alg_by_name(optarg); 1216 fingerprint_hash = ssh_digest_alg_by_name(optarg);
@@ -1202,10 +1231,15 @@ main(int ac, char **av)
1202 s_flag++; 1231 s_flag++;
1203 break; 1232 break;
1204 case 'd': 1233 case 'd':
1205 if (d_flag) 1234 if (d_flag || D_flag)
1206 usage(); 1235 usage();
1207 d_flag++; 1236 d_flag++;
1208 break; 1237 break;
1238 case 'D':
1239 if (d_flag || D_flag)
1240 usage();
1241 D_flag++;
1242 break;
1209 case 'a': 1243 case 'a':
1210 agentsocket = optarg; 1244 agentsocket = optarg;
1211 break; 1245 break;
@@ -1222,7 +1256,7 @@ main(int ac, char **av)
1222 ac -= optind; 1256 ac -= optind;
1223 av += optind; 1257 av += optind;
1224 1258
1225 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag)) 1259 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || D_flag))
1226 usage(); 1260 usage();
1227 1261
1228 if (ac == 0 && !c_flag && !s_flag) { 1262 if (ac == 0 && !c_flag && !s_flag) {
@@ -1291,8 +1325,10 @@ main(int ac, char **av)
1291 * Fork, and have the parent execute the command, if any, or present 1325 * Fork, and have the parent execute the command, if any, or present
1292 * the socket data. The child continues as the authentication agent. 1326 * the socket data. The child continues as the authentication agent.
1293 */ 1327 */
1294 if (d_flag) { 1328 if (D_flag || d_flag) {
1295 log_init(__progname, SYSLOG_LEVEL_DEBUG1, SYSLOG_FACILITY_AUTH, 1); 1329 log_init(__progname,
1330 d_flag ? SYSLOG_LEVEL_DEBUG3 : SYSLOG_LEVEL_INFO,
1331 SYSLOG_FACILITY_AUTH, 1);
1296 format = c_flag ? "setenv %s %s;\n" : "%s=%s; export %s;\n"; 1332 format = c_flag ? "setenv %s %s;\n" : "%s=%s; export %s;\n";
1297 printf(format, SSH_AUTHSOCKET_ENV_NAME, socket_name, 1333 printf(format, SSH_AUTHSOCKET_ENV_NAME, socket_name,
1298 SSH_AUTHSOCKET_ENV_NAME); 1334 SSH_AUTHSOCKET_ENV_NAME);
@@ -1364,7 +1400,7 @@ skip:
1364 parent_alive_interval = 10; 1400 parent_alive_interval = 10;
1365 idtab_init(); 1401 idtab_init();
1366 signal(SIGPIPE, SIG_IGN); 1402 signal(SIGPIPE, SIG_IGN);
1367 signal(SIGINT, d_flag ? cleanup_handler : SIG_IGN); 1403 signal(SIGINT, (d_flag | D_flag) ? cleanup_handler : SIG_IGN);
1368 signal(SIGHUP, cleanup_handler); 1404 signal(SIGHUP, cleanup_handler);
1369 signal(SIGTERM, cleanup_handler); 1405 signal(SIGTERM, cleanup_handler);
1370 nalloc = 0; 1406 nalloc = 0;
diff --git a/ssh-keygen.c b/ssh-keygen.c
index a3c2362a2..8259d87e7 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keygen.c,v 1.266 2015/02/26 20:45:47 djm Exp $ */ 1/* $OpenBSD: ssh-keygen.c,v 1.274 2015/05/28 07:37:31 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1994 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -58,6 +58,12 @@
58#include "krl.h" 58#include "krl.h"
59#include "digest.h" 59#include "digest.h"
60 60
61#ifdef WITH_OPENSSL
62# define DEFAULT_KEY_TYPE_NAME "rsa"
63#else
64# define DEFAULT_KEY_TYPE_NAME "ed25519"
65#endif
66
61/* Number of bits in the RSA/DSA key. This value can be set on the command line. */ 67/* Number of bits in the RSA/DSA key. This value can be set on the command line. */
62#define DEFAULT_BITS 2048 68#define DEFAULT_BITS 2048
63#define DEFAULT_BITS_DSA 1024 69#define DEFAULT_BITS_DSA 1024
@@ -174,23 +180,22 @@ extern char *__progname;
174 180
175char hostname[NI_MAXHOST]; 181char hostname[NI_MAXHOST];
176 182
183#ifdef WITH_OPENSSL
177/* moduli.c */ 184/* moduli.c */
178int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *); 185int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *);
179int prime_test(FILE *, FILE *, u_int32_t, u_int32_t, char *, unsigned long, 186int prime_test(FILE *, FILE *, u_int32_t, u_int32_t, char *, unsigned long,
180 unsigned long); 187 unsigned long);
188#endif
181 189
182static void 190static void
183type_bits_valid(int type, const char *name, u_int32_t *bitsp) 191type_bits_valid(int type, const char *name, u_int32_t *bitsp)
184{ 192{
185#ifdef WITH_OPENSSL 193#ifdef WITH_OPENSSL
186 u_int maxbits; 194 u_int maxbits, nid;
187 int nid;
188#endif 195#endif
189 196
190 if (type == KEY_UNSPEC) { 197 if (type == KEY_UNSPEC)
191 fprintf(stderr, "unknown key type %s\n", key_type_name); 198 fatal("unknown key type %s", key_type_name);
192 exit(1);
193 }
194 if (*bitsp == 0) { 199 if (*bitsp == 0) {
195#ifdef WITH_OPENSSL 200#ifdef WITH_OPENSSL
196 if (type == KEY_DSA) 201 if (type == KEY_DSA)
@@ -208,10 +213,8 @@ type_bits_valid(int type, const char *name, u_int32_t *bitsp)
208#ifdef WITH_OPENSSL 213#ifdef WITH_OPENSSL
209 maxbits = (type == KEY_DSA) ? 214 maxbits = (type == KEY_DSA) ?
210 OPENSSL_DSA_MAX_MODULUS_BITS : OPENSSL_RSA_MAX_MODULUS_BITS; 215 OPENSSL_DSA_MAX_MODULUS_BITS : OPENSSL_RSA_MAX_MODULUS_BITS;
211 if (*bitsp > maxbits) { 216 if (*bitsp > maxbits)
212 fprintf(stderr, "key bits exceeds maximum %d\n", maxbits); 217 fatal("key bits exceeds maximum %d", maxbits);
213 exit(1);
214 }
215 if (type == KEY_DSA && *bitsp != 1024) 218 if (type == KEY_DSA && *bitsp != 1024)
216 fatal("DSA keys must be 1024 bits"); 219 fatal("DSA keys must be 1024 bits");
217 else if (type != KEY_ECDSA && type != KEY_ED25519 && *bitsp < 768) 220 else if (type != KEY_ECDSA && type != KEY_ED25519 && *bitsp < 768)
@@ -256,13 +259,13 @@ ask_filename(struct passwd *pw, const char *prompt)
256 name = _PATH_SSH_CLIENT_ID_ED25519; 259 name = _PATH_SSH_CLIENT_ID_ED25519;
257 break; 260 break;
258 default: 261 default:
259 fprintf(stderr, "bad key type\n"); 262 fatal("bad key type");
260 exit(1);
261 break;
262 } 263 }
263 } 264 }
264 snprintf(identity_file, sizeof(identity_file), "%s/%s", pw->pw_dir, name); 265 snprintf(identity_file, sizeof(identity_file),
265 fprintf(stderr, "%s (%s): ", prompt, identity_file); 266 "%s/%s", pw->pw_dir, name);
267 printf("%s (%s): ", prompt, identity_file);
268 fflush(stdout);
266 if (fgets(buf, sizeof(buf), stdin) == NULL) 269 if (fgets(buf, sizeof(buf), stdin) == NULL)
267 exit(1); 270 exit(1);
268 buf[strcspn(buf, "\n")] = '\0'; 271 buf[strcspn(buf, "\n")] = '\0';
@@ -308,14 +311,10 @@ do_convert_to_ssh2(struct passwd *pw, struct sshkey *k)
308 char comment[61]; 311 char comment[61];
309 int r; 312 int r;
310 313
311 if (k->type == KEY_RSA1) { 314 if (k->type == KEY_RSA1)
312 fprintf(stderr, "version 1 keys are not supported\n"); 315 fatal("version 1 keys are not supported");
313 exit(1); 316 if ((r = sshkey_to_blob(k, &blob, &len)) != 0)
314 } 317 fatal("key_to_blob failed: %s", ssh_err(r));
315 if ((r = sshkey_to_blob(k, &blob, &len)) != 0) {
316 fprintf(stderr, "key_to_blob failed: %s\n", ssh_err(r));
317 exit(1);
318 }
319 /* Comment + surrounds must fit into 72 chars (RFC 4716 sec 3.3) */ 318 /* Comment + surrounds must fit into 72 chars (RFC 4716 sec 3.3) */
320 snprintf(comment, sizeof(comment), 319 snprintf(comment, sizeof(comment),
321 "%u-bit %s, converted by %s@%s from OpenSSH", 320 "%u-bit %s, converted by %s@%s from OpenSSH",
@@ -544,17 +543,13 @@ get_line(FILE *fp, char *line, size_t len)
544 543
545 line[0] = '\0'; 544 line[0] = '\0';
546 while ((c = fgetc(fp)) != EOF) { 545 while ((c = fgetc(fp)) != EOF) {
547 if (pos >= len - 1) { 546 if (pos >= len - 1)
548 fprintf(stderr, "input line too long.\n"); 547 fatal("input line too long.");
549 exit(1);
550 }
551 switch (c) { 548 switch (c) {
552 case '\r': 549 case '\r':
553 c = fgetc(fp); 550 c = fgetc(fp);
554 if (c != EOF && c != '\n' && ungetc(c, fp) == EOF) { 551 if (c != EOF && c != '\n' && ungetc(c, fp) == EOF)
555 fprintf(stderr, "unget: %s\n", strerror(errno)); 552 fatal("unget: %s", strerror(errno));
556 exit(1);
557 }
558 return pos; 553 return pos;
559 case '\n': 554 case '\n':
560 return pos; 555 return pos;
@@ -606,16 +601,12 @@ do_convert_from_ssh2(struct passwd *pw, struct sshkey **k, int *private)
606 (encoded[len-3] == '=')) 601 (encoded[len-3] == '='))
607 encoded[len-3] = '\0'; 602 encoded[len-3] = '\0';
608 blen = uudecode(encoded, blob, sizeof(blob)); 603 blen = uudecode(encoded, blob, sizeof(blob));
609 if (blen < 0) { 604 if (blen < 0)
610 fprintf(stderr, "uudecode failed.\n"); 605 fatal("uudecode failed.");
611 exit(1);
612 }
613 if (*private) 606 if (*private)
614 *k = do_convert_private_ssh2_from_blob(blob, blen); 607 *k = do_convert_private_ssh2_from_blob(blob, blen);
615 else if ((r = sshkey_from_blob(blob, blen, k)) != 0) { 608 else if ((r = sshkey_from_blob(blob, blen, k)) != 0)
616 fprintf(stderr, "decode blob failed: %s\n", ssh_err(r)); 609 fatal("decode blob failed: %s", ssh_err(r));
617 exit(1);
618 }
619 fclose(fp); 610 fclose(fp);
620} 611}
621 612
@@ -749,10 +740,8 @@ do_convert_from(struct passwd *pw)
749 } 740 }
750 } 741 }
751 742
752 if (!ok) { 743 if (!ok)
753 fprintf(stderr, "key write failed\n"); 744 fatal("key write failed");
754 exit(1);
755 }
756 sshkey_free(k); 745 sshkey_free(k);
757 exit(0); 746 exit(0);
758} 747}
@@ -767,13 +756,11 @@ do_print_public(struct passwd *pw)
767 756
768 if (!have_identity) 757 if (!have_identity)
769 ask_filename(pw, "Enter file in which the key is"); 758 ask_filename(pw, "Enter file in which the key is");
770 if (stat(identity_file, &st) < 0) { 759 if (stat(identity_file, &st) < 0)
771 perror(identity_file); 760 fatal("%s: %s", identity_file, strerror(errno));
772 exit(1);
773 }
774 prv = load_identity(identity_file); 761 prv = load_identity(identity_file);
775 if ((r = sshkey_write(prv, stdout)) != 0) 762 if ((r = sshkey_write(prv, stdout)) != 0)
776 fprintf(stderr, "key_write failed: %s", ssh_err(r)); 763 error("key_write failed: %s", ssh_err(r));
777 sshkey_free(prv); 764 sshkey_free(prv);
778 fprintf(stdout, "\n"); 765 fprintf(stdout, "\n");
779 exit(0); 766 exit(0);
@@ -838,10 +825,8 @@ do_fingerprint(struct passwd *pw)
838 rep = print_bubblebabble ? SSH_FP_BUBBLEBABBLE : SSH_FP_DEFAULT; 825 rep = print_bubblebabble ? SSH_FP_BUBBLEBABBLE : SSH_FP_DEFAULT;
839 if (!have_identity) 826 if (!have_identity)
840 ask_filename(pw, "Enter file in which the key is"); 827 ask_filename(pw, "Enter file in which the key is");
841 if (stat(identity_file, &st) < 0) { 828 if (stat(identity_file, &st) < 0)
842 perror(identity_file); 829 fatal("%s: %s", identity_file, strerror(errno));
843 exit(1);
844 }
845 if ((r = sshkey_load_public(identity_file, &public, &comment)) != 0) 830 if ((r = sshkey_load_public(identity_file, &public, &comment)) != 0)
846 debug2("Error loading public key \"%s\": %s", 831 debug2("Error loading public key \"%s\": %s",
847 identity_file, ssh_err(r)); 832 identity_file, ssh_err(r));
@@ -933,10 +918,8 @@ do_fingerprint(struct passwd *pw)
933 } 918 }
934 fclose(f); 919 fclose(f);
935 920
936 if (invalid) { 921 if (invalid)
937 printf("%s is not a public key file.\n", identity_file); 922 fatal("%s is not a public key file.", identity_file);
938 exit(1);
939 }
940 exit(0); 923 exit(0);
941} 924}
942 925
@@ -948,12 +931,16 @@ do_gen_all_hostkeys(struct passwd *pw)
948 char *key_type_display; 931 char *key_type_display;
949 char *path; 932 char *path;
950 } key_types[] = { 933 } key_types[] = {
934#ifdef WITH_OPENSSL
935#ifdef WITH_SSH1
951 { "rsa1", "RSA1", _PATH_HOST_KEY_FILE }, 936 { "rsa1", "RSA1", _PATH_HOST_KEY_FILE },
937#endif /* WITH_SSH1 */
952 { "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE }, 938 { "rsa", "RSA" ,_PATH_HOST_RSA_KEY_FILE },
953 { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE }, 939 { "dsa", "DSA", _PATH_HOST_DSA_KEY_FILE },
954#ifdef OPENSSL_HAS_ECC 940#ifdef OPENSSL_HAS_ECC
955 { "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE }, 941 { "ecdsa", "ECDSA",_PATH_HOST_ECDSA_KEY_FILE },
956#endif 942#endif /* OPENSSL_HAS_ECC */
943#endif /* WITH_OPENSSL */
957 { "ed25519", "ED25519",_PATH_HOST_ED25519_KEY_FILE }, 944 { "ed25519", "ED25519",_PATH_HOST_ED25519_KEY_FILE },
958 { NULL, NULL, NULL } 945 { NULL, NULL, NULL }
959 }; 946 };
@@ -969,7 +956,7 @@ do_gen_all_hostkeys(struct passwd *pw)
969 if (stat(key_types[i].path, &st) == 0) 956 if (stat(key_types[i].path, &st) == 0)
970 continue; 957 continue;
971 if (errno != ENOENT) { 958 if (errno != ENOENT) {
972 printf("Could not stat %s: %s", key_types[i].path, 959 error("Could not stat %s: %s", key_types[i].path,
973 strerror(errno)); 960 strerror(errno));
974 first = 0; 961 first = 0;
975 continue; 962 continue;
@@ -986,8 +973,7 @@ do_gen_all_hostkeys(struct passwd *pw)
986 bits = 0; 973 bits = 0;
987 type_bits_valid(type, NULL, &bits); 974 type_bits_valid(type, NULL, &bits);
988 if ((r = sshkey_generate(type, bits, &private)) != 0) { 975 if ((r = sshkey_generate(type, bits, &private)) != 0) {
989 fprintf(stderr, "key_generate failed: %s\n", 976 error("key_generate failed: %s", ssh_err(r));
990 ssh_err(r));
991 first = 0; 977 first = 0;
992 continue; 978 continue;
993 } 979 }
@@ -997,8 +983,8 @@ do_gen_all_hostkeys(struct passwd *pw)
997 hostname); 983 hostname);
998 if ((r = sshkey_save_private(private, identity_file, "", 984 if ((r = sshkey_save_private(private, identity_file, "",
999 comment, use_new_format, new_format_cipher, rounds)) != 0) { 985 comment, use_new_format, new_format_cipher, rounds)) != 0) {
1000 printf("Saving key \"%s\" failed: %s\n", identity_file, 986 error("Saving key \"%s\" failed: %s",
1001 ssh_err(r)); 987 identity_file, ssh_err(r));
1002 sshkey_free(private); 988 sshkey_free(private);
1003 sshkey_free(public); 989 sshkey_free(public);
1004 first = 0; 990 first = 0;
@@ -1008,7 +994,7 @@ do_gen_all_hostkeys(struct passwd *pw)
1008 strlcat(identity_file, ".pub", sizeof(identity_file)); 994 strlcat(identity_file, ".pub", sizeof(identity_file));
1009 fd = open(identity_file, O_WRONLY | O_CREAT | O_TRUNC, 0644); 995 fd = open(identity_file, O_WRONLY | O_CREAT | O_TRUNC, 0644);
1010 if (fd == -1) { 996 if (fd == -1) {
1011 printf("Could not save your public key in %s\n", 997 error("Could not save your public key in %s",
1012 identity_file); 998 identity_file);
1013 sshkey_free(public); 999 sshkey_free(public);
1014 first = 0; 1000 first = 0;
@@ -1016,14 +1002,14 @@ do_gen_all_hostkeys(struct passwd *pw)
1016 } 1002 }
1017 f = fdopen(fd, "w"); 1003 f = fdopen(fd, "w");
1018 if (f == NULL) { 1004 if (f == NULL) {
1019 printf("fdopen %s failed\n", identity_file); 1005 error("fdopen %s failed", identity_file);
1020 close(fd); 1006 close(fd);
1021 sshkey_free(public); 1007 sshkey_free(public);
1022 first = 0; 1008 first = 0;
1023 continue; 1009 continue;
1024 } 1010 }
1025 if ((r = sshkey_write(public, f)) != 0) { 1011 if ((r = sshkey_write(public, f)) != 0) {
1026 fprintf(stderr, "write key failed: %s\n", ssh_err(r)); 1012 error("write key failed: %s", ssh_err(r));
1027 fclose(f); 1013 fclose(f);
1028 sshkey_free(public); 1014 sshkey_free(public);
1029 first = 0; 1015 first = 0;
@@ -1064,8 +1050,8 @@ known_hosts_hash(struct hostkey_foreach_line *l, void *_ctx)
1064 has_wild || l->marker != MRK_NONE) { 1050 has_wild || l->marker != MRK_NONE) {
1065 fprintf(ctx->out, "%s\n", l->line); 1051 fprintf(ctx->out, "%s\n", l->line);
1066 if (has_wild && !find_host) { 1052 if (has_wild && !find_host) {
1067 fprintf(stderr, "%s:%ld: ignoring host name " 1053 logit("%s:%ld: ignoring host name "
1068 "with wildcard: %.64s\n", l->path, 1054 "with wildcard: %.64s", l->path,
1069 l->linenum, l->hosts); 1055 l->linenum, l->hosts);
1070 } 1056 }
1071 return 0; 1057 return 0;
@@ -1086,7 +1072,7 @@ known_hosts_hash(struct hostkey_foreach_line *l, void *_ctx)
1086 case HKF_STATUS_INVALID: 1072 case HKF_STATUS_INVALID:
1087 /* Retain invalid lines, but mark file as invalid. */ 1073 /* Retain invalid lines, but mark file as invalid. */
1088 ctx->invalid = 1; 1074 ctx->invalid = 1;
1089 fprintf(stderr, "%s:%ld: invalid line\n", l->path, l->linenum); 1075 logit("%s:%ld: invalid line", l->path, l->linenum);
1090 /* FALLTHROUGH */ 1076 /* FALLTHROUGH */
1091 default: 1077 default:
1092 fprintf(ctx->out, "%s\n", l->line); 1078 fprintf(ctx->out, "%s\n", l->line);
@@ -1100,6 +1086,12 @@ static int
1100known_hosts_find_delete(struct hostkey_foreach_line *l, void *_ctx) 1086known_hosts_find_delete(struct hostkey_foreach_line *l, void *_ctx)
1101{ 1087{
1102 struct known_hosts_ctx *ctx = (struct known_hosts_ctx *)_ctx; 1088 struct known_hosts_ctx *ctx = (struct known_hosts_ctx *)_ctx;
1089 enum sshkey_fp_rep rep;
1090 int fptype;
1091 char *fp;
1092
1093 fptype = print_bubblebabble ? SSH_DIGEST_SHA1 : fingerprint_hash;
1094 rep = print_bubblebabble ? SSH_FP_BUBBLEBABBLE : SSH_FP_DEFAULT;
1103 1095
1104 if (l->status == HKF_STATUS_MATCHED) { 1096 if (l->status == HKF_STATUS_MATCHED) {
1105 if (delete_host) { 1097 if (delete_host) {
@@ -1128,7 +1120,12 @@ known_hosts_find_delete(struct hostkey_foreach_line *l, void *_ctx)
1128 } 1120 }
1129 if (hash_hosts) 1121 if (hash_hosts)
1130 known_hosts_hash(l, ctx); 1122 known_hosts_hash(l, ctx);
1131 else 1123 else if (print_fingerprint) {
1124 fp = sshkey_fingerprint(l->key, fptype, rep);
1125 printf("%s %s %s %s\n", ctx->host,
1126 sshkey_type(l->key), fp, l->comment);
1127 free(fp);
1128 } else
1132 fprintf(ctx->out, "%s\n", l->line); 1129 fprintf(ctx->out, "%s\n", l->line);
1133 return 0; 1130 return 0;
1134 } 1131 }
@@ -1136,8 +1133,7 @@ known_hosts_find_delete(struct hostkey_foreach_line *l, void *_ctx)
1136 /* Retain non-matching hosts when deleting */ 1133 /* Retain non-matching hosts when deleting */
1137 if (l->status == HKF_STATUS_INVALID) { 1134 if (l->status == HKF_STATUS_INVALID) {
1138 ctx->invalid = 1; 1135 ctx->invalid = 1;
1139 fprintf(stderr, "%s:%ld: invalid line\n", 1136 logit("%s:%ld: invalid line", l->path, l->linenum);
1140 l->path, l->linenum);
1141 } 1137 }
1142 fprintf(ctx->out, "%s\n", l->line); 1138 fprintf(ctx->out, "%s\n", l->line);
1143 } 1139 }
@@ -1150,6 +1146,7 @@ do_known_hosts(struct passwd *pw, const char *name)
1150 char *cp, tmp[PATH_MAX], old[PATH_MAX]; 1146 char *cp, tmp[PATH_MAX], old[PATH_MAX];
1151 int r, fd, oerrno, inplace = 0; 1147 int r, fd, oerrno, inplace = 0;
1152 struct known_hosts_ctx ctx; 1148 struct known_hosts_ctx ctx;
1149 u_int foreach_options;
1153 1150
1154 if (!have_identity) { 1151 if (!have_identity) {
1155 cp = tilde_expand_filename(_PATH_SSH_USER_HOSTFILE, pw->pw_uid); 1152 cp = tilde_expand_filename(_PATH_SSH_USER_HOSTFILE, pw->pw_uid);
@@ -1186,26 +1183,26 @@ do_known_hosts(struct passwd *pw, const char *name)
1186 } 1183 }
1187 1184
1188 /* XXX support identity_file == "-" for stdin */ 1185 /* XXX support identity_file == "-" for stdin */
1186 foreach_options = find_host ? HKF_WANT_MATCH : 0;
1187 foreach_options |= print_fingerprint ? HKF_WANT_PARSE_KEY : 0;
1189 if ((r = hostkeys_foreach(identity_file, 1188 if ((r = hostkeys_foreach(identity_file,
1190 hash_hosts ? known_hosts_hash : known_hosts_find_delete, &ctx, 1189 hash_hosts ? known_hosts_hash : known_hosts_find_delete, &ctx,
1191 name, NULL, find_host ? HKF_WANT_MATCH : 0)) != 0) 1190 name, NULL, foreach_options)) != 0)
1192 fatal("%s: hostkeys_foreach failed: %s", __func__, ssh_err(r)); 1191 fatal("%s: hostkeys_foreach failed: %s", __func__, ssh_err(r));
1193 1192
1194 if (inplace) 1193 if (inplace)
1195 fclose(ctx.out); 1194 fclose(ctx.out);
1196 1195
1197 if (ctx.invalid) { 1196 if (ctx.invalid) {
1198 fprintf(stderr, "%s is not a valid known_hosts file.\n", 1197 error("%s is not a valid known_hosts file.", identity_file);
1199 identity_file);
1200 if (inplace) { 1198 if (inplace) {
1201 fprintf(stderr, "Not replacing existing known_hosts " 1199 error("Not replacing existing known_hosts "
1202 "file because of errors\n"); 1200 "file because of errors");
1203 unlink(tmp); 1201 unlink(tmp);
1204 } 1202 }
1205 exit(1); 1203 exit(1);
1206 } else if (delete_host && !ctx.found_key) { 1204 } else if (delete_host && !ctx.found_key) {
1207 fprintf(stderr, "Host %s not found in %s\n", 1205 logit("Host %s not found in %s", name, identity_file);
1208 name, identity_file);
1209 unlink(tmp); 1206 unlink(tmp);
1210 } else if (inplace) { 1207 } else if (inplace) {
1211 /* Backup existing file */ 1208 /* Backup existing file */
@@ -1223,13 +1220,12 @@ do_known_hosts(struct passwd *pw, const char *name)
1223 exit(1); 1220 exit(1);
1224 } 1221 }
1225 1222
1226 fprintf(stderr, "%s updated.\n", identity_file); 1223 printf("%s updated.\n", identity_file);
1227 fprintf(stderr, "Original contents retained as %s\n", old); 1224 printf("Original contents retained as %s\n", old);
1228 if (ctx.has_unhashed) { 1225 if (ctx.has_unhashed) {
1229 fprintf(stderr, "WARNING: %s contains unhashed " 1226 logit("WARNING: %s contains unhashed entries", old);
1230 "entries\n", old); 1227 logit("Delete this file to ensure privacy "
1231 fprintf(stderr, "Delete this file to ensure privacy " 1228 "of hostnames");
1232 "of hostnames\n");
1233 } 1229 }
1234 } 1230 }
1235 1231
@@ -1251,10 +1247,8 @@ do_change_passphrase(struct passwd *pw)
1251 1247
1252 if (!have_identity) 1248 if (!have_identity)
1253 ask_filename(pw, "Enter file in which the key is"); 1249 ask_filename(pw, "Enter file in which the key is");
1254 if (stat(identity_file, &st) < 0) { 1250 if (stat(identity_file, &st) < 0)
1255 perror(identity_file); 1251 fatal("%s: %s", identity_file, strerror(errno));
1256 exit(1);
1257 }
1258 /* Try to load the file with empty passphrase. */ 1252 /* Try to load the file with empty passphrase. */
1259 r = sshkey_load_private(identity_file, "", &private, &comment); 1253 r = sshkey_load_private(identity_file, "", &private, &comment);
1260 if (r == SSH_ERR_KEY_WRONG_PASSPHRASE) { 1254 if (r == SSH_ERR_KEY_WRONG_PASSPHRASE) {
@@ -1272,9 +1266,7 @@ do_change_passphrase(struct passwd *pw)
1272 goto badkey; 1266 goto badkey;
1273 } else if (r != 0) { 1267 } else if (r != 0) {
1274 badkey: 1268 badkey:
1275 fprintf(stderr, "Failed to load key \"%s\": %s\n", 1269 fatal("Failed to load key %s: %s", identity_file, ssh_err(r));
1276 identity_file, ssh_err(r));
1277 exit(1);
1278 } 1270 }
1279 if (comment) 1271 if (comment)
1280 printf("Key has comment '%s'\n", comment); 1272 printf("Key has comment '%s'\n", comment);
@@ -1307,7 +1299,7 @@ do_change_passphrase(struct passwd *pw)
1307 /* Save the file using the new passphrase. */ 1299 /* Save the file using the new passphrase. */
1308 if ((r = sshkey_save_private(private, identity_file, passphrase1, 1300 if ((r = sshkey_save_private(private, identity_file, passphrase1,
1309 comment, use_new_format, new_format_cipher, rounds)) != 0) { 1301 comment, use_new_format, new_format_cipher, rounds)) != 0) {
1310 printf("Saving key \"%s\" failed: %s.\n", 1302 error("Saving key \"%s\" failed: %s.",
1311 identity_file, ssh_err(r)); 1303 identity_file, ssh_err(r));
1312 explicit_bzero(passphrase1, strlen(passphrase1)); 1304 explicit_bzero(passphrase1, strlen(passphrase1));
1313 free(passphrase1); 1305 free(passphrase1);
@@ -1341,14 +1333,11 @@ do_print_resource_record(struct passwd *pw, char *fname, char *hname)
1341 if (stat(fname, &st) < 0) { 1333 if (stat(fname, &st) < 0) {
1342 if (errno == ENOENT) 1334 if (errno == ENOENT)
1343 return 0; 1335 return 0;
1344 perror(fname); 1336 fatal("%s: %s", fname, strerror(errno));
1345 exit(1);
1346 } 1337 }
1347 if ((r = sshkey_load_public(fname, &public, &comment)) != 0) { 1338 if ((r = sshkey_load_public(fname, &public, &comment)) != 0)
1348 printf("Failed to read v2 public key from \"%s\": %s.\n", 1339 fatal("Failed to read v2 public key from \"%s\": %s.",
1349 fname, ssh_err(r)); 1340 fname, ssh_err(r));
1350 exit(1);
1351 }
1352 export_dns_rr(hname, public, stdout, print_generic); 1341 export_dns_rr(hname, public, stdout, print_generic);
1353 sshkey_free(public); 1342 sshkey_free(public);
1354 free(comment); 1343 free(comment);
@@ -1370,18 +1359,15 @@ do_change_comment(struct passwd *pw)
1370 1359
1371 if (!have_identity) 1360 if (!have_identity)
1372 ask_filename(pw, "Enter file in which the key is"); 1361 ask_filename(pw, "Enter file in which the key is");
1373 if (stat(identity_file, &st) < 0) { 1362 if (stat(identity_file, &st) < 0)
1374 perror(identity_file); 1363 fatal("%s: %s", identity_file, strerror(errno));
1375 exit(1);
1376 }
1377 if ((r = sshkey_load_private(identity_file, "", 1364 if ((r = sshkey_load_private(identity_file, "",
1378 &private, &comment)) == 0) 1365 &private, &comment)) == 0)
1379 passphrase = xstrdup(""); 1366 passphrase = xstrdup("");
1380 else if (r != SSH_ERR_KEY_WRONG_PASSPHRASE) { 1367 else if (r != SSH_ERR_KEY_WRONG_PASSPHRASE)
1381 printf("Cannot load private key \"%s\": %s.\n", 1368 fatal("Cannot load private key \"%s\": %s.",
1382 identity_file, ssh_err(r)); 1369 identity_file, ssh_err(r));
1383 exit(1); 1370 else {
1384 } else {
1385 if (identity_passphrase) 1371 if (identity_passphrase)
1386 passphrase = xstrdup(identity_passphrase); 1372 passphrase = xstrdup(identity_passphrase);
1387 else if (identity_new_passphrase) 1373 else if (identity_new_passphrase)
@@ -1394,13 +1380,14 @@ do_change_comment(struct passwd *pw)
1394 &private, &comment)) != 0) { 1380 &private, &comment)) != 0) {
1395 explicit_bzero(passphrase, strlen(passphrase)); 1381 explicit_bzero(passphrase, strlen(passphrase));
1396 free(passphrase); 1382 free(passphrase);
1397 printf("Cannot load private key \"%s\": %s.\n", 1383 fatal("Cannot load private key \"%s\": %s.",
1398 identity_file, ssh_err(r)); 1384 identity_file, ssh_err(r));
1399 exit(1);
1400 } 1385 }
1401 } 1386 }
1387 /* XXX what about new-format keys? */
1402 if (private->type != KEY_RSA1) { 1388 if (private->type != KEY_RSA1) {
1403 fprintf(stderr, "Comments are only supported for RSA1 keys.\n"); 1389 error("Comments are only supported for RSA1 keys.");
1390 explicit_bzero(passphrase, strlen(passphrase));
1404 sshkey_free(private); 1391 sshkey_free(private);
1405 exit(1); 1392 exit(1);
1406 } 1393 }
@@ -1422,7 +1409,7 @@ do_change_comment(struct passwd *pw)
1422 /* Save the file using the new passphrase. */ 1409 /* Save the file using the new passphrase. */
1423 if ((r = sshkey_save_private(private, identity_file, passphrase, 1410 if ((r = sshkey_save_private(private, identity_file, passphrase,
1424 new_comment, use_new_format, new_format_cipher, rounds)) != 0) { 1411 new_comment, use_new_format, new_format_cipher, rounds)) != 0) {
1425 printf("Saving key \"%s\" failed: %s\n", 1412 error("Saving key \"%s\" failed: %s",
1426 identity_file, ssh_err(r)); 1413 identity_file, ssh_err(r));
1427 explicit_bzero(passphrase, strlen(passphrase)); 1414 explicit_bzero(passphrase, strlen(passphrase));
1428 free(passphrase); 1415 free(passphrase);
@@ -1438,17 +1425,13 @@ do_change_comment(struct passwd *pw)
1438 1425
1439 strlcat(identity_file, ".pub", sizeof(identity_file)); 1426 strlcat(identity_file, ".pub", sizeof(identity_file));
1440 fd = open(identity_file, O_WRONLY | O_CREAT | O_TRUNC, 0644); 1427 fd = open(identity_file, O_WRONLY | O_CREAT | O_TRUNC, 0644);
1441 if (fd == -1) { 1428 if (fd == -1)
1442 printf("Could not save your public key in %s\n", identity_file); 1429 fatal("Could not save your public key in %s", identity_file);
1443 exit(1);
1444 }
1445 f = fdopen(fd, "w"); 1430 f = fdopen(fd, "w");
1446 if (f == NULL) { 1431 if (f == NULL)
1447 printf("fdopen %s failed\n", identity_file); 1432 fatal("fdopen %s failed: %s", identity_file, strerror(errno));
1448 exit(1);
1449 }
1450 if ((r = sshkey_write(public, f)) != 0) 1433 if ((r = sshkey_write(public, f)) != 0)
1451 fprintf(stderr, "write key failed: %s\n", ssh_err(r)); 1434 fatal("write key failed: %s", ssh_err(r));
1452 sshkey_free(public); 1435 sshkey_free(public);
1453 fprintf(f, " %s\n", new_comment); 1436 fprintf(f, " %s\n", new_comment);
1454 fclose(f); 1437 fclose(f);
@@ -1608,8 +1591,7 @@ do_ca_sign(struct passwd *pw, int argc, char **argv)
1608 break; 1591 break;
1609 /* FALLTHROUGH */ 1592 /* FALLTHROUGH */
1610 default: 1593 default:
1611 fprintf(stderr, "unknown key type %s\n", key_type_name); 1594 fatal("unknown key type %s", key_type_name);
1612 exit(1);
1613 } 1595 }
1614 } 1596 }
1615 1597
@@ -1631,7 +1613,7 @@ do_ca_sign(struct passwd *pw, int argc, char **argv)
1631 otmp = tmp = xstrdup(cert_principals); 1613 otmp = tmp = xstrdup(cert_principals);
1632 plist = NULL; 1614 plist = NULL;
1633 for (; (cp = strsep(&tmp, ",")) != NULL; n++) { 1615 for (; (cp = strsep(&tmp, ",")) != NULL; n++) {
1634 plist = xrealloc(plist, n + 1, sizeof(*plist)); 1616 plist = xreallocarray(plist, n + 1, sizeof(*plist));
1635 if (*(plist[n] = xstrdup(cp)) == '\0') 1617 if (*(plist[n] = xstrdup(cp)) == '\0')
1636 fatal("Empty principal name"); 1618 fatal("Empty principal name");
1637 } 1619 }
@@ -2216,9 +2198,11 @@ usage(void)
2216 " ssh-keygen -H [-f known_hosts_file]\n" 2198 " ssh-keygen -H [-f known_hosts_file]\n"
2217 " ssh-keygen -R hostname [-f known_hosts_file]\n" 2199 " ssh-keygen -R hostname [-f known_hosts_file]\n"
2218 " ssh-keygen -r hostname [-f input_keyfile] [-g]\n" 2200 " ssh-keygen -r hostname [-f input_keyfile] [-g]\n"
2201#ifdef WITH_OPENSSL
2219 " ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]\n" 2202 " ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]\n"
2220 " ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]\n" 2203 " ssh-keygen -T output_file -f input_file [-v] [-a rounds] [-J num_lines]\n"
2221 " [-j start_line] [-K checkpt] [-W generator]\n" 2204 " [-j start_line] [-K checkpt] [-W generator]\n"
2205#endif
2222 " ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]\n" 2206 " ssh-keygen -s ca_key -I certificate_identity [-h] [-n principals]\n"
2223 " [-O option] [-V validity_interval] [-z serial_number] file ...\n" 2207 " [-O option] [-V validity_interval] [-z serial_number] file ...\n"
2224 " ssh-keygen -L [-f input_keyfile]\n" 2208 " ssh-keygen -L [-f input_keyfile]\n"
@@ -2236,19 +2220,22 @@ int
2236main(int argc, char **argv) 2220main(int argc, char **argv)
2237{ 2221{
2238 char dotsshdir[PATH_MAX], comment[1024], *passphrase1, *passphrase2; 2222 char dotsshdir[PATH_MAX], comment[1024], *passphrase1, *passphrase2;
2239 char *checkpoint = NULL; 2223 char *rr_hostname = NULL, *ep, *fp, *ra;
2240 char out_file[PATH_MAX], *rr_hostname = NULL, *ep, *fp, *ra;
2241 struct sshkey *private, *public; 2224 struct sshkey *private, *public;
2242 struct passwd *pw; 2225 struct passwd *pw;
2243 struct stat st; 2226 struct stat st;
2244 int r, opt, type, fd; 2227 int r, opt, type, fd;
2228 int gen_all_hostkeys = 0, gen_krl = 0, update_krl = 0, check_krl = 0;
2229 FILE *f;
2230 const char *errstr;
2231#ifdef WITH_OPENSSL
2232 /* Moduli generation/screening */
2233 char out_file[PATH_MAX], *checkpoint = NULL;
2245 u_int32_t memory = 0, generator_wanted = 0; 2234 u_int32_t memory = 0, generator_wanted = 0;
2246 int do_gen_candidates = 0, do_screen_candidates = 0; 2235 int do_gen_candidates = 0, do_screen_candidates = 0;
2247 int gen_all_hostkeys = 0, gen_krl = 0, update_krl = 0, check_krl = 0;
2248 unsigned long start_lineno = 0, lines_to_process = 0; 2236 unsigned long start_lineno = 0, lines_to_process = 0;
2249 BIGNUM *start = NULL; 2237 BIGNUM *start = NULL;
2250 FILE *f; 2238#endif
2251 const char *errstr;
2252 2239
2253 extern int optind; 2240 extern int optind;
2254 extern char *optarg; 2241 extern char *optarg;
@@ -2267,14 +2254,10 @@ main(int argc, char **argv)
2267 2254
2268 /* we need this for the home * directory. */ 2255 /* we need this for the home * directory. */
2269 pw = getpwuid(getuid()); 2256 pw = getpwuid(getuid());
2270 if (!pw) { 2257 if (!pw)
2271 printf("No user exists for uid %lu\n", (u_long)getuid()); 2258 fatal("No user exists for uid %lu", (u_long)getuid());
2272 exit(1); 2259 if (gethostname(hostname, sizeof(hostname)) < 0)
2273 } 2260 fatal("gethostname: %s", strerror(errno));
2274 if (gethostname(hostname, sizeof(hostname)) < 0) {
2275 perror("gethostname");
2276 exit(1);
2277 }
2278 2261
2279 /* Remaining characters: UYdw */ 2262 /* Remaining characters: UYdw */
2280 while ((opt = getopt(argc, argv, "ABHLQXceghiklopquvxy" 2263 while ((opt = getopt(argc, argv, "ABHLQXceghiklopquvxy"
@@ -2305,12 +2288,6 @@ main(int argc, char **argv)
2305 case 'I': 2288 case 'I':
2306 cert_key_id = optarg; 2289 cert_key_id = optarg;
2307 break; 2290 break;
2308 case 'J':
2309 lines_to_process = strtoul(optarg, NULL, 10);
2310 break;
2311 case 'j':
2312 start_lineno = strtoul(optarg, NULL, 10);
2313 break;
2314 case 'R': 2291 case 'R':
2315 delete_host = 1; 2292 delete_host = 1;
2316 rr_hostname = optarg; 2293 rr_hostname = optarg;
@@ -2352,8 +2329,8 @@ main(int argc, char **argv)
2352 change_comment = 1; 2329 change_comment = 1;
2353 break; 2330 break;
2354 case 'f': 2331 case 'f':
2355 if (strlcpy(identity_file, optarg, sizeof(identity_file)) >= 2332 if (strlcpy(identity_file, optarg,
2356 sizeof(identity_file)) 2333 sizeof(identity_file)) >= sizeof(identity_file))
2357 fatal("Identity filename too long"); 2334 fatal("Identity filename too long");
2358 have_identity = 1; 2335 have_identity = 1;
2359 break; 2336 break;
@@ -2425,20 +2402,31 @@ main(int argc, char **argv)
2425 case 'r': 2402 case 'r':
2426 rr_hostname = optarg; 2403 rr_hostname = optarg;
2427 break; 2404 break;
2428 case 'W':
2429 generator_wanted = (u_int32_t)strtonum(optarg, 1,
2430 UINT_MAX, &errstr);
2431 if (errstr)
2432 fatal("Desired generator has bad value: %s (%s)",
2433 optarg, errstr);
2434 break;
2435 case 'a': 2405 case 'a':
2436 rounds = (int)strtonum(optarg, 1, INT_MAX, &errstr); 2406 rounds = (int)strtonum(optarg, 1, INT_MAX, &errstr);
2437 if (errstr) 2407 if (errstr)
2438 fatal("Invalid number: %s (%s)", 2408 fatal("Invalid number: %s (%s)",
2439 optarg, errstr); 2409 optarg, errstr);
2440 break; 2410 break;
2411 case 'V':
2412 parse_cert_times(optarg);
2413 break;
2414 case 'z':
2415 errno = 0;
2416 cert_serial = strtoull(optarg, &ep, 10);
2417 if (*optarg < '0' || *optarg > '9' || *ep != '\0' ||
2418 (errno == ERANGE && cert_serial == ULLONG_MAX))
2419 fatal("Invalid serial number \"%s\"", optarg);
2420 break;
2441#ifdef WITH_OPENSSL 2421#ifdef WITH_OPENSSL
2422 /* Moduli generation/screening */
2423 case 'W':
2424 generator_wanted = (u_int32_t)strtonum(optarg, 1,
2425 UINT_MAX, &errstr);
2426 if (errstr)
2427 fatal("Desired generator has bad value: %s (%s)",
2428 optarg, errstr);
2429 break;
2442 case 'M': 2430 case 'M':
2443 memory = (u_int32_t)strtonum(optarg, 1, UINT_MAX, &errstr); 2431 memory = (u_int32_t)strtonum(optarg, 1, UINT_MAX, &errstr);
2444 if (errstr) 2432 if (errstr)
@@ -2467,16 +2455,6 @@ main(int argc, char **argv)
2467 fatal("Invalid start point."); 2455 fatal("Invalid start point.");
2468 break; 2456 break;
2469#endif /* WITH_OPENSSL */ 2457#endif /* WITH_OPENSSL */
2470 case 'V':
2471 parse_cert_times(optarg);
2472 break;
2473 case 'z':
2474 errno = 0;
2475 cert_serial = strtoull(optarg, &ep, 10);
2476 if (*optarg < '0' || *optarg > '9' || *ep != '\0' ||
2477 (errno == ERANGE && cert_serial == ULLONG_MAX))
2478 fatal("Invalid serial number \"%s\"", optarg);
2479 break;
2480 case '?': 2458 case '?':
2481 default: 2459 default:
2482 usage(); 2460 usage();
@@ -2491,19 +2469,19 @@ main(int argc, char **argv)
2491 2469
2492 if (ca_key_path != NULL) { 2470 if (ca_key_path != NULL) {
2493 if (argc < 1 && !gen_krl) { 2471 if (argc < 1 && !gen_krl) {
2494 printf("Too few arguments.\n"); 2472 error("Too few arguments.");
2495 usage(); 2473 usage();
2496 } 2474 }
2497 } else if (argc > 0 && !gen_krl && !check_krl) { 2475 } else if (argc > 0 && !gen_krl && !check_krl) {
2498 printf("Too many arguments.\n"); 2476 error("Too many arguments.");
2499 usage(); 2477 usage();
2500 } 2478 }
2501 if (change_passphrase && change_comment) { 2479 if (change_passphrase && change_comment) {
2502 printf("Can only have one of -p and -c.\n"); 2480 error("Can only have one of -p and -c.");
2503 usage(); 2481 usage();
2504 } 2482 }
2505 if (print_fingerprint && (delete_host || hash_hosts)) { 2483 if (print_fingerprint && (delete_host || hash_hosts)) {
2506 printf("Cannot use -l with -H or -R.\n"); 2484 error("Cannot use -l with -H or -R.");
2507 usage(); 2485 usage();
2508 } 2486 }
2509 if (gen_krl) { 2487 if (gen_krl) {
@@ -2545,10 +2523,8 @@ main(int argc, char **argv)
2545 if (have_identity) { 2523 if (have_identity) {
2546 n = do_print_resource_record(pw, 2524 n = do_print_resource_record(pw,
2547 identity_file, rr_hostname); 2525 identity_file, rr_hostname);
2548 if (n == 0) { 2526 if (n == 0)
2549 perror(identity_file); 2527 fatal("%s: %s", identity_file, strerror(errno));
2550 exit(1);
2551 }
2552 exit(0); 2528 exit(0);
2553 } else { 2529 } else {
2554 2530
@@ -2566,6 +2542,7 @@ main(int argc, char **argv)
2566 } 2542 }
2567 } 2543 }
2568 2544
2545#ifdef WITH_OPENSSL
2569 if (do_gen_candidates) { 2546 if (do_gen_candidates) {
2570 FILE *out = fopen(out_file, "w"); 2547 FILE *out = fopen(out_file, "w");
2571 2548
@@ -2605,6 +2582,7 @@ main(int argc, char **argv)
2605 fatal("modulus screening failed"); 2582 fatal("modulus screening failed");
2606 return (0); 2583 return (0);
2607 } 2584 }
2585#endif
2608 2586
2609 if (gen_all_hostkeys) { 2587 if (gen_all_hostkeys) {
2610 do_gen_all_hostkeys(pw); 2588 do_gen_all_hostkeys(pw);
@@ -2612,7 +2590,7 @@ main(int argc, char **argv)
2612 } 2590 }
2613 2591
2614 if (key_type_name == NULL) 2592 if (key_type_name == NULL)
2615 key_type_name = "rsa"; 2593 key_type_name = DEFAULT_KEY_TYPE_NAME;
2616 2594
2617 type = sshkey_type_from_name(key_type_name); 2595 type = sshkey_type_from_name(key_type_name);
2618 type_bits_valid(type, key_type_name, &bits); 2596 type_bits_valid(type, key_type_name, &bits);
@@ -2620,14 +2598,10 @@ main(int argc, char **argv)
2620 if (!quiet) 2598 if (!quiet)
2621 printf("Generating public/private %s key pair.\n", 2599 printf("Generating public/private %s key pair.\n",
2622 key_type_name); 2600 key_type_name);
2623 if ((r = sshkey_generate(type, bits, &private)) != 0) { 2601 if ((r = sshkey_generate(type, bits, &private)) != 0)
2624 fprintf(stderr, "key_generate failed\n"); 2602 fatal("key_generate failed");
2625 exit(1); 2603 if ((r = sshkey_from_private(private, &public)) != 0)
2626 } 2604 fatal("key_from_private failed: %s\n", ssh_err(r));
2627 if ((r = sshkey_from_private(private, &public)) != 0) {
2628 fprintf(stderr, "key_from_private failed: %s\n", ssh_err(r));
2629 exit(1);
2630 }
2631 2605
2632 if (!have_identity) 2606 if (!have_identity)
2633 ask_filename(pw, "Enter file in which to save the key"); 2607 ask_filename(pw, "Enter file in which to save the key");
@@ -2697,7 +2671,7 @@ passphrase_again:
2697 /* Save the key with the given passphrase and comment. */ 2671 /* Save the key with the given passphrase and comment. */
2698 if ((r = sshkey_save_private(private, identity_file, passphrase1, 2672 if ((r = sshkey_save_private(private, identity_file, passphrase1,
2699 comment, use_new_format, new_format_cipher, rounds)) != 0) { 2673 comment, use_new_format, new_format_cipher, rounds)) != 0) {
2700 printf("Saving key \"%s\" failed: %s\n", 2674 error("Saving key \"%s\" failed: %s",
2701 identity_file, ssh_err(r)); 2675 identity_file, ssh_err(r));
2702 explicit_bzero(passphrase1, strlen(passphrase1)); 2676 explicit_bzero(passphrase1, strlen(passphrase1));
2703 free(passphrase1); 2677 free(passphrase1);
@@ -2714,18 +2688,13 @@ passphrase_again:
2714 printf("Your identification has been saved in %s.\n", identity_file); 2688 printf("Your identification has been saved in %s.\n", identity_file);
2715 2689
2716 strlcat(identity_file, ".pub", sizeof(identity_file)); 2690 strlcat(identity_file, ".pub", sizeof(identity_file));
2717 fd = open(identity_file, O_WRONLY | O_CREAT | O_TRUNC, 0644); 2691 if ((fd = open(identity_file, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1)
2718 if (fd == -1) { 2692 fatal("Unable to save public key to %s: %s",
2719 printf("Could not save your public key in %s\n", identity_file); 2693 identity_file, strerror(errno));
2720 exit(1); 2694 if ((f = fdopen(fd, "w")) == NULL)
2721 } 2695 fatal("fdopen %s failed: %s", identity_file, strerror(errno));
2722 f = fdopen(fd, "w");
2723 if (f == NULL) {
2724 printf("fdopen %s failed\n", identity_file);
2725 exit(1);
2726 }
2727 if ((r = sshkey_write(public, f)) != 0) 2696 if ((r = sshkey_write(public, f)) != 0)
2728 fprintf(stderr, "write key failed: %s\n", ssh_err(r)); 2697 error("write key failed: %s", ssh_err(r));
2729 fprintf(f, " %s\n", comment); 2698 fprintf(f, " %s\n", comment);
2730 fclose(f); 2699 fclose(f);
2731 2700
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index c5fb3b524..57d88429b 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keyscan.c,v 1.99 2015/01/30 10:44:49 djm Exp $ */ 1/* $OpenBSD: ssh-keyscan.c,v 1.101 2015/04/10 00:08:55 djm Exp $ */
2/* 2/*
3 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. 3 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
4 * 4 *
@@ -94,7 +94,7 @@ typedef struct Connection {
94 int c_len; /* Total bytes which must be read. */ 94 int c_len; /* Total bytes which must be read. */
95 int c_off; /* Length of data read so far. */ 95 int c_off; /* Length of data read so far. */
96 int c_keytype; /* Only one of KT_RSA1, KT_DSA, or KT_RSA */ 96 int c_keytype; /* Only one of KT_RSA1, KT_DSA, or KT_RSA */
97 int c_done; /* SSH2 done */ 97 sig_atomic_t c_done; /* SSH2 done */
98 char *c_namebase; /* Address to free for c_name and c_namelist */ 98 char *c_namebase; /* Address to free for c_name and c_namelist */
99 char *c_name; /* Hostname of connection for errors */ 99 char *c_name; /* Hostname of connection for errors */
100 char *c_namelist; /* Pointer to other possible addresses */ 100 char *c_namelist; /* Pointer to other possible addresses */
@@ -299,15 +299,18 @@ static void
299keyprint(con *c, struct sshkey *key) 299keyprint(con *c, struct sshkey *key)
300{ 300{
301 char *host = c->c_output_name ? c->c_output_name : c->c_name; 301 char *host = c->c_output_name ? c->c_output_name : c->c_name;
302 char *hostport = NULL;
302 303
303 if (!key) 304 if (!key)
304 return; 305 return;
305 if (hash_hosts && (host = host_hash(host, NULL, 0)) == NULL) 306 if (hash_hosts && (host = host_hash(host, NULL, 0)) == NULL)
306 fatal("host_hash failed"); 307 fatal("host_hash failed");
307 308
308 fprintf(stdout, "%s ", host); 309 hostport = put_host_port(host, ssh_port);
310 fprintf(stdout, "%s ", hostport);
309 sshkey_write(key, stdout); 311 sshkey_write(key, stdout);
310 fputs("\n", stdout); 312 fputs("\n", stdout);
313 free(hostport);
311} 314}
312 315
313static int 316static int
@@ -488,7 +491,7 @@ congreet(int s)
488 confree(s); 491 confree(s);
489 return; 492 return;
490 } 493 }
491 fprintf(stderr, "# %s %s\n", c->c_name, chop(buf)); 494 fprintf(stderr, "# %s:%d %s\n", c->c_name, ssh_port, chop(buf));
492 n = snprintf(buf, sizeof buf, "SSH-%d.%d-OpenSSH-keyscan\r\n", 495 n = snprintf(buf, sizeof buf, "SSH-%d.%d-OpenSSH-keyscan\r\n",
493 c->c_keytype == KT_RSA1? PROTOCOL_MAJOR_1 : PROTOCOL_MAJOR_2, 496 c->c_keytype == KT_RSA1? PROTOCOL_MAJOR_1 : PROTOCOL_MAJOR_2,
494 c->c_keytype == KT_RSA1? PROTOCOL_MINOR_1 : PROTOCOL_MINOR_2); 497 c->c_keytype == KT_RSA1? PROTOCOL_MINOR_1 : PROTOCOL_MINOR_2);
diff --git a/ssh-keysign.c b/ssh-keysign.c
index bcf897a05..56882027e 100644
--- a/ssh-keysign.c
+++ b/ssh-keysign.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-keysign.c,v 1.47 2015/01/28 22:36:00 djm Exp $ */ 1/* $OpenBSD: ssh-keysign.c,v 1.48 2015/03/24 20:09:11 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -157,7 +157,7 @@ valid_request(struct passwd *pw, char *host, struct sshkey **ret,
157 157
158 if (fail && key != NULL) 158 if (fail && key != NULL)
159 sshkey_free(key); 159 sshkey_free(key);
160 else 160 else if (ret != NULL)
161 *ret = key; 161 *ret = key;
162 162
163 return (fail ? -1 : 0); 163 return (fail ? -1 : 0);
diff --git a/ssh-pkcs11.c b/ssh-pkcs11.c
index c3a112fa1..e074175bb 100644
--- a/ssh-pkcs11.c
+++ b/ssh-pkcs11.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-pkcs11.c,v 1.17 2015/02/03 08:07:20 deraadt Exp $ */ 1/* $OpenBSD: ssh-pkcs11.c,v 1.19 2015/05/27 05:15:02 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2010 Markus Friedl. All rights reserved. 3 * Copyright (c) 2010 Markus Friedl. All rights reserved.
4 * 4 *
@@ -237,7 +237,7 @@ pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa,
237 {CKA_ID, NULL, 0}, 237 {CKA_ID, NULL, 0},
238 {CKA_SIGN, NULL, sizeof(true_val) } 238 {CKA_SIGN, NULL, sizeof(true_val) }
239 }; 239 };
240 char *pin, prompt[1024]; 240 char *pin = NULL, prompt[1024];
241 int rval = -1; 241 int rval = -1;
242 242
243 key_filter[0].pValue = &private_key_class; 243 key_filter[0].pValue = &private_key_class;
@@ -255,22 +255,30 @@ pkcs11_rsa_private_encrypt(int flen, const u_char *from, u_char *to, RSA *rsa,
255 si = &k11->provider->slotinfo[k11->slotidx]; 255 si = &k11->provider->slotinfo[k11->slotidx];
256 if ((si->token.flags & CKF_LOGIN_REQUIRED) && !si->logged_in) { 256 if ((si->token.flags & CKF_LOGIN_REQUIRED) && !si->logged_in) {
257 if (!pkcs11_interactive) { 257 if (!pkcs11_interactive) {
258 error("need pin"); 258 error("need pin entry%s", (si->token.flags &
259 CKF_PROTECTED_AUTHENTICATION_PATH) ?
260 " on reader keypad" : "");
259 return (-1); 261 return (-1);
260 } 262 }
261 snprintf(prompt, sizeof(prompt), "Enter PIN for '%s': ", 263 if (si->token.flags & CKF_PROTECTED_AUTHENTICATION_PATH)
262 si->token.label); 264 verbose("Deferring PIN entry to reader keypad.");
263 pin = read_passphrase(prompt, RP_ALLOW_EOF); 265 else {
264 if (pin == NULL) 266 snprintf(prompt, sizeof(prompt),
265 return (-1); /* bail out */ 267 "Enter PIN for '%s': ", si->token.label);
266 rv = f->C_Login(si->session, CKU_USER, 268 pin = read_passphrase(prompt, RP_ALLOW_EOF);
267 (u_char *)pin, strlen(pin)); 269 if (pin == NULL)
268 if (rv != CKR_OK && rv != CKR_USER_ALREADY_LOGGED_IN) { 270 return (-1); /* bail out */
271 }
272 rv = f->C_Login(si->session, CKU_USER, (u_char *)pin,
273 (pin != NULL) ? strlen(pin) : 0);
274 if (pin != NULL) {
275 explicit_bzero(pin, strlen(pin));
269 free(pin); 276 free(pin);
277 }
278 if (rv != CKR_OK && rv != CKR_USER_ALREADY_LOGGED_IN) {
270 error("C_Login failed: %lu", rv); 279 error("C_Login failed: %lu", rv);
271 return (-1); 280 return (-1);
272 } 281 }
273 free(pin);
274 si->logged_in = 1; 282 si->logged_in = 1;
275 } 283 }
276 key_filter[1].pValue = k11->keyid; 284 key_filter[1].pValue = k11->keyid;
@@ -527,7 +535,7 @@ pkcs11_fetch_keys_filter(struct pkcs11_provider *p, CK_ULONG slotidx,
527 sshkey_free(key); 535 sshkey_free(key);
528 } else { 536 } else {
529 /* expand key array and add key */ 537 /* expand key array and add key */
530 *keysp = xrealloc(*keysp, *nkeys + 1, 538 *keysp = xreallocarray(*keysp, *nkeys + 1,
531 sizeof(struct sshkey *)); 539 sizeof(struct sshkey *));
532 (*keysp)[*nkeys] = key; 540 (*keysp)[*nkeys] = key;
533 *nkeys = *nkeys + 1; 541 *nkeys = *nkeys + 1;
diff --git a/ssh-rsa.c b/ssh-rsa.c
index aef798da6..cdc18a416 100644
--- a/ssh-rsa.c
+++ b/ssh-rsa.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-rsa.c,v 1.52 2014/06/24 01:13:21 djm Exp $ */ 1/* $OpenBSD: ssh-rsa.c,v 1.53 2015/06/15 01:32:50 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org> 3 * Copyright (c) 2000, 2003 Markus Friedl <markus@openbsd.org>
4 * 4 *
@@ -113,7 +113,7 @@ ssh_rsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp,
113 } 113 }
114 if (b != NULL) 114 if (b != NULL)
115 sshbuf_free(b); 115 sshbuf_free(b);
116 return 0; 116 return ret;
117} 117}
118 118
119int 119int
diff --git a/ssh.0 b/ssh.0
index 5e5f3b5e9..5aaeb8d13 100644
--- a/ssh.0
+++ b/ssh.0
@@ -354,9 +354,9 @@ DESCRIPTION
354 applications (eg. sftp(1)). The subsystem is specified as the 354 applications (eg. sftp(1)). The subsystem is specified as the
355 remote command. 355 remote command.
356 356
357 -T Disable pseudo-tty allocation. 357 -T Disable pseudo-terminal allocation.
358 358
359 -t Force pseudo-tty allocation. This can be used to execute 359 -t Force pseudo-terminal allocation. This can be used to execute
360 arbitrary screen-based programs on a remote machine, which can be 360 arbitrary screen-based programs on a remote machine, which can be
361 very useful, e.g. when implementing menu services. Multiple -t 361 very useful, e.g. when implementing menu services. Multiple -t
362 options force tty allocation, even if ssh has no local tty. 362 options force tty allocation, even if ssh has no local tty.
@@ -510,17 +510,22 @@ AUTHENTICATION
510 whose host key is not known or has changed. 510 whose host key is not known or has changed.
511 511
512 When the user's identity has been accepted by the server, the server 512 When the user's identity has been accepted by the server, the server
513 either executes the given command, or logs into the machine and gives the 513 either executes the given command in a non-interactive session or, if no
514 user a normal shell on the remote machine. All communication with the 514 command has been specified, logs into the machine and gives the user a
515 normal shell as an interactive session. All communication with the
515 remote command or shell will be automatically encrypted. 516 remote command or shell will be automatically encrypted.
516 517
517 If a pseudo-terminal has been allocated (normal login session), the user 518 If an interactive session is requested ssh by default will only request a
518 may use the escape characters noted below. 519 pseudo-terminal (pty) for interactive sessions when the client has one.
520 The flags -T and -t can be used to override this behaviour.
519 521
520 If no pseudo-tty has been allocated, the session is transparent and can 522 If a pseudo-terminal has been allocated the user may use the escape
521 be used to reliably transfer binary data. On most systems, setting the 523 characters noted below.
522 escape character to M-bM-^@M-^\noneM-bM-^@M-^] will also make the session transparent even if 524
523 a tty is used. 525 If no pseudo-terminal has been allocated, the session is transparent and
526 can be used to reliably transfer binary data. On most systems, setting
527 the escape character to M-bM-^@M-^\noneM-bM-^@M-^] will also make the session transparent
528 even if a tty is used.
524 529
525 The session terminates when the command or shell on the remote machine 530 The session terminates when the command or shell on the remote machine
526 exits and all X11 and TCP connections have been closed. 531 exits and all X11 and TCP connections have been closed.
@@ -638,16 +643,20 @@ VERIFYING HOST KEYS
638 $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key 643 $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
639 644
640 If the fingerprint is already known, it can be matched and the key can be 645 If the fingerprint is already known, it can be matched and the key can be
641 accepted or rejected. Because of the difficulty of comparing host keys 646 accepted or rejected. If only legacy (MD5) fingerprints for the server
642 just by looking at fingerprint strings, there is also support to compare 647 are available, the ssh-keygen(1) -E option may be used to downgrade the
643 host keys visually, using random art. By setting the VisualHostKey 648 fingerprint algorithm to match.
644 option to M-bM-^@M-^\yesM-bM-^@M-^], a small ASCII graphic gets displayed on every login to a 649
645 server, no matter if the session itself is interactive or not. By 650 Because of the difficulty of comparing host keys just by looking at
646 learning the pattern a known server produces, a user can easily find out 651 fingerprint strings, there is also support to compare host keys visually,
647 that the host key has changed when a completely different pattern is 652 using random art. By setting the VisualHostKey option to M-bM-^@M-^\yesM-bM-^@M-^], a small
648 displayed. Because these patterns are not unambiguous however, a pattern 653 ASCII graphic gets displayed on every login to a server, no matter if the
649 that looks similar to the pattern remembered only gives a good 654 session itself is interactive or not. By learning the pattern a known
650 probability that the host key is the same, not guaranteed proof. 655 server produces, a user can easily find out that the host key has changed
656 when a completely different pattern is displayed. Because these patterns
657 are not unambiguous however, a pattern that looks similar to the pattern
658 remembered only gives a good probability that the host key is the same,
659 not guaranteed proof.
651 660
652 To get a listing of the fingerprints along with their random art for all 661 To get a listing of the fingerprints along with their random art for all
653 known hosts, the following command line can be used: 662 known hosts, the following command line can be used:
@@ -948,4 +957,4 @@ AUTHORS
948 created OpenSSH. Markus Friedl contributed the support for SSH protocol 957 created OpenSSH. Markus Friedl contributed the support for SSH protocol
949 versions 1.5 and 2.0. 958 versions 1.5 and 2.0.
950 959
951OpenBSD 5.7 March 3, 2015 OpenBSD 5.7 960OpenBSD 5.7 May 22, 2015 OpenBSD 5.7
diff --git a/ssh.1 b/ssh.1
index c8892fed4..217886319 100644
--- a/ssh.1
+++ b/ssh.1
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh.1,v 1.356 2015/03/03 06:48:58 djm Exp $ 36.\" $OpenBSD: ssh.1,v 1.358 2015/05/22 05:28:45 djm Exp $
37.Dd $Mdocdate: March 3 2015 $ 37.Dd $Mdocdate: May 22 2015 $
38.Dt SSH 1 38.Dt SSH 1
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -584,9 +584,9 @@ of SSH as a secure transport for other applications (eg.\&
584.Xr sftp 1 ) . 584.Xr sftp 1 ) .
585The subsystem is specified as the remote command. 585The subsystem is specified as the remote command.
586.It Fl T 586.It Fl T
587Disable pseudo-tty allocation. 587Disable pseudo-terminal allocation.
588.It Fl t 588.It Fl t
589Force pseudo-tty allocation. 589Force pseudo-terminal allocation.
590This can be used to execute arbitrary 590This can be used to execute arbitrary
591screen-based programs on a remote machine, which can be very useful, 591screen-based programs on a remote machine, which can be very useful,
592e.g. when implementing menu services. 592e.g. when implementing menu services.
@@ -880,15 +880,26 @@ option can be used to control logins to machines whose
880host key is not known or has changed. 880host key is not known or has changed.
881.Pp 881.Pp
882When the user's identity has been accepted by the server, the server 882When the user's identity has been accepted by the server, the server
883either executes the given command, or logs into the machine and gives 883either executes the given command in a non-interactive session or,
884the user a normal shell on the remote machine. 884if no command has been specified, logs into the machine and gives
885the user a normal shell as an interactive session.
885All communication with 886All communication with
886the remote command or shell will be automatically encrypted. 887the remote command or shell will be automatically encrypted.
887.Pp 888.Pp
888If a pseudo-terminal has been allocated (normal login session), the 889If an interactive session is requested
890.Nm
891by default will only request a pseudo-terminal (pty) for interactive
892sessions when the client has one.
893The flags
894.Fl T
895and
896.Fl t
897can be used to override this behaviour.
898.Pp
899If a pseudo-terminal has been allocated the
889user may use the escape characters noted below. 900user may use the escape characters noted below.
890.Pp 901.Pp
891If no pseudo-tty has been allocated, 902If no pseudo-terminal has been allocated,
892the session is transparent and can be used to reliably transfer binary data. 903the session is transparent and can be used to reliably transfer binary data.
893On most systems, setting the escape character to 904On most systems, setting the escape character to
894.Dq none 905.Dq none
@@ -1099,6 +1110,11 @@ Fingerprints can be determined using
1099.Pp 1110.Pp
1100If the fingerprint is already known, it can be matched 1111If the fingerprint is already known, it can be matched
1101and the key can be accepted or rejected. 1112and the key can be accepted or rejected.
1113If only legacy (MD5) fingerprints for the server are available, the
1114.Xr ssh-keygen 1
1115.Fl E
1116option may be used to downgrade the fingerprint algorithm to match.
1117.Pp
1102Because of the difficulty of comparing host keys 1118Because of the difficulty of comparing host keys
1103just by looking at fingerprint strings, 1119just by looking at fingerprint strings,
1104there is also support to compare host keys visually, 1120there is also support to compare host keys visually,
diff --git a/ssh.c b/ssh.c
index e8be6fe47..d99f7ef6c 100644
--- a/ssh.c
+++ b/ssh.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh.c,v 1.416 2015/03/03 06:48:58 djm Exp $ */ 1/* $OpenBSD: ssh.c,v 1.418 2015/05/04 06:10:48 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -356,10 +356,8 @@ check_follow_cname(char **namep, const char *cname)
356 debug3("%s: check \"%s\" CNAME \"%s\"", __func__, *namep, cname); 356 debug3("%s: check \"%s\" CNAME \"%s\"", __func__, *namep, cname);
357 for (i = 0; i < options.num_permitted_cnames; i++) { 357 for (i = 0; i < options.num_permitted_cnames; i++) {
358 rule = options.permitted_cnames + i; 358 rule = options.permitted_cnames + i;
359 if (match_pattern_list(*namep, rule->source_list, 359 if (match_pattern_list(*namep, rule->source_list, 1) != 1 ||
360 strlen(rule->source_list), 1) != 1 || 360 match_pattern_list(cname, rule->target_list, 1) != 1)
361 match_pattern_list(cname, rule->target_list,
362 strlen(rule->target_list), 1) != 1)
363 continue; 361 continue;
364 verbose("Canonicalized DNS aliased hostname " 362 verbose("Canonicalized DNS aliased hostname "
365 "\"%s\" => \"%s\"", *namep, cname); 363 "\"%s\" => \"%s\"", *namep, cname);
@@ -1673,6 +1671,8 @@ ssh_session(void)
1673 } 1671 }
1674 /* Request X11 forwarding if enabled and DISPLAY is set. */ 1672 /* Request X11 forwarding if enabled and DISPLAY is set. */
1675 display = getenv("DISPLAY"); 1673 display = getenv("DISPLAY");
1674 if (display == NULL && options.forward_x11)
1675 debug("X11 forwarding requested but DISPLAY not set");
1676 if (options.forward_x11 && display != NULL) { 1676 if (options.forward_x11 && display != NULL) {
1677 char *proto, *data; 1677 char *proto, *data;
1678 /* Get reasonable local authentication information. */ 1678 /* Get reasonable local authentication information. */
@@ -1774,6 +1774,8 @@ ssh_session2_setup(int id, int success, void *arg)
1774 return; /* No need for error message, channels code sens one */ 1774 return; /* No need for error message, channels code sens one */
1775 1775
1776 display = getenv("DISPLAY"); 1776 display = getenv("DISPLAY");
1777 if (display == NULL && options.forward_x11)
1778 debug("X11 forwarding requested but DISPLAY not set");
1777 if (options.forward_x11 && display != NULL) { 1779 if (options.forward_x11 && display != NULL) {
1778 char *proto, *data; 1780 char *proto, *data;
1779 /* Get reasonable local authentication information. */ 1781 /* Get reasonable local authentication information. */
diff --git a/ssh_config.0 b/ssh_config.0
index 3bdd75237..b0a614b8a 100644
--- a/ssh_config.0
+++ b/ssh_config.0
@@ -67,7 +67,7 @@ DESCRIPTION
67 require an argument. Criteria may be negated by prepending an 67 require an argument. Criteria may be negated by prepending an
68 exclamation mark (M-bM-^@M-^X!M-bM-^@M-^Y). 68 exclamation mark (M-bM-^@M-^X!M-bM-^@M-^Y).
69 69
70 The canonical keywork matches only when the configuration file is 70 The canonical keyword matches only when the configuration file is
71 being re-parsed after hostname canonicalization (see the 71 being re-parsed after hostname canonicalization (see the
72 CanonicalizeHostname option.) This may be useful to specify 72 CanonicalizeHostname option.) This may be useful to specify
73 conditions that work with canonical host names only. The exec 73 conditions that work with canonical host names only. The exec
@@ -165,9 +165,11 @@ DESCRIPTION
165 CheckHostIP 165 CheckHostIP
166 If this flag is set to M-bM-^@M-^\yesM-bM-^@M-^], ssh(1) will additionally check the 166 If this flag is set to M-bM-^@M-^\yesM-bM-^@M-^], ssh(1) will additionally check the
167 host IP address in the known_hosts file. This allows ssh to 167 host IP address in the known_hosts file. This allows ssh to
168 detect if a host key changed due to DNS spoofing. If the option 168 detect if a host key changed due to DNS spoofing and will add
169 is set to M-bM-^@M-^\noM-bM-^@M-^], the check will not be executed. The default is 169 addresses of destination hosts to ~/.ssh/known_hosts in the
170 M-bM-^@M-^\yesM-bM-^@M-^]. 170 process, regardless of the setting of StrictHostKeyChecking. If
171 the option is set to M-bM-^@M-^\noM-bM-^@M-^], the check will not be executed. The
172 default is M-bM-^@M-^\yesM-bM-^@M-^].
171 173
172 Cipher Specifies the cipher to use for encrypting the session in 174 Cipher Specifies the cipher to use for encrypting the session in
173 protocol version 1. Currently, M-bM-^@M-^\blowfishM-bM-^@M-^], M-bM-^@M-^\3desM-bM-^@M-^], and M-bM-^@M-^\desM-bM-^@M-^] are 175 protocol version 1. Currently, M-bM-^@M-^\blowfishM-bM-^@M-^], M-bM-^@M-^\3desM-bM-^@M-^], and M-bM-^@M-^\desM-bM-^@M-^] are
@@ -252,9 +254,8 @@ DESCRIPTION
252 or is not listening. 254 or is not listening.
253 255
254 Setting this to M-bM-^@M-^\askM-bM-^@M-^] will cause ssh to listen for control 256 Setting this to M-bM-^@M-^\askM-bM-^@M-^] will cause ssh to listen for control
255 connections, but require confirmation using the SSH_ASKPASS 257 connections, but require confirmation using ssh-askpass(1). If
256 program before they are accepted (see ssh-add(1) for details). 258 the ControlPath cannot be opened, ssh will continue without
257 If the ControlPath cannot be opened, ssh will continue without
258 connecting to a master instance. 259 connecting to a master instance.
259 260
260 X11 and ssh-agent(1) forwarding is supported over these 261 X11 and ssh-agent(1) forwarding is supported over these
@@ -552,8 +553,8 @@ DESCRIPTION
552 curve25519-sha256@libssh.org, 553 curve25519-sha256@libssh.org,
553 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, 554 ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
554 diffie-hellman-group-exchange-sha256, 555 diffie-hellman-group-exchange-sha256,
555 diffie-hellman-group14-sha1,
556 diffie-hellman-group-exchange-sha1, 556 diffie-hellman-group-exchange-sha1,
557 diffie-hellman-group14-sha1,
557 diffie-hellman-group1-sha1 558 diffie-hellman-group1-sha1
558 559
559 The list of available key exchange algorithms may also be 560 The list of available key exchange algorithms may also be
@@ -768,12 +769,15 @@ DESCRIPTION
768 Specifies what variables from the local environ(7) should be sent 769 Specifies what variables from the local environ(7) should be sent
769 to the server. Note that environment passing is only supported 770 to the server. Note that environment passing is only supported
770 for protocol 2. The server must also support it, and the server 771 for protocol 2. The server must also support it, and the server
771 must be configured to accept these environment variables. Refer 772 must be configured to accept these environment variables. Note
772 to AcceptEnv in sshd_config(5) for how to configure the server. 773 that the TERM environment variable is always sent whenever a
773 Variables are specified by name, which may contain wildcard 774 pseudo-terminal is requested as it is required by the protocol.
774 characters. Multiple environment variables may be separated by 775 Refer to AcceptEnv in sshd_config(5) for how to configure the
775 whitespace or spread across multiple SendEnv directives. The 776 server. Variables are specified by name, which may contain
776 default is not to send any environment variables. 777 wildcard characters. Multiple environment variables may be
778 separated by whitespace or spread across multiple SendEnv
779 directives. The default is not to send any environment
780 variables.
777 781
778 See PATTERNS for more information on patterns. 782 See PATTERNS for more information on patterns.
779 783
@@ -978,4 +982,4 @@ AUTHORS
978 created OpenSSH. Markus Friedl contributed the support for SSH protocol 982 created OpenSSH. Markus Friedl contributed the support for SSH protocol
979 versions 1.5 and 2.0. 983 versions 1.5 and 2.0.
980 984
981OpenBSD 5.7 February 20, 2015 OpenBSD 5.7 985OpenBSD 5.7 June 2, 2015 OpenBSD 5.7
diff --git a/ssh_config.5 b/ssh_config.5
index da8e54428..844d1a0f5 100644
--- a/ssh_config.5
+++ b/ssh_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: ssh_config.5,v 1.205 2015/02/20 22:17:21 djm Exp $ 36.\" $OpenBSD: ssh_config.5,v 1.211 2015/06/02 09:10:40 djm Exp $
37.Dd $Mdocdate: February 20 2015 $ 37.Dd $Mdocdate: June 2 2015 $
38.Dt SSH_CONFIG 5 38.Dt SSH_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -182,7 +182,7 @@ Criteria may be negated by prepending an exclamation mark
182.Pp 182.Pp
183The 183The
184.Cm canonical 184.Cm canonical
185keywork matches only when the configuration file is being re-parsed 185keyword matches only when the configuration file is being re-parsed
186after hostname canonicalization (see the 186after hostname canonicalization (see the
187.Cm CanonicalizeHostname 187.Cm CanonicalizeHostname
188option.) 188option.)
@@ -360,7 +360,11 @@ If this flag is set to
360will additionally check the host IP address in the 360will additionally check the host IP address in the
361.Pa known_hosts 361.Pa known_hosts
362file. 362file.
363This allows ssh to detect if a host key changed due to DNS spoofing. 363This allows ssh to detect if a host key changed due to DNS spoofing
364and will add addresses of destination hosts to
365.Pa ~/.ssh/known_hosts
366in the process, regardless of the setting of
367.Cm StrictHostKeyChecking .
364If the option is set to 368If the option is set to
365.Dq no , 369.Dq no ,
366the check will not be executed. 370the check will not be executed.
@@ -504,11 +508,8 @@ if the control socket does not exist, or is not listening.
504Setting this to 508Setting this to
505.Dq ask 509.Dq ask
506will cause ssh 510will cause ssh
507to listen for control connections, but require confirmation using the 511to listen for control connections, but require confirmation using
508.Ev SSH_ASKPASS 512.Xr ssh-askpass 1 .
509program before they are accepted (see
510.Xr ssh-add 1
511for details).
512If the 513If the
513.Cm ControlPath 514.Cm ControlPath
514cannot be opened, 515cannot be opened,
@@ -1034,8 +1035,8 @@ The default is:
1034curve25519-sha256@libssh.org, 1035curve25519-sha256@libssh.org,
1035ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, 1036ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
1036diffie-hellman-group-exchange-sha256, 1037diffie-hellman-group-exchange-sha256,
1037diffie-hellman-group14-sha1,
1038diffie-hellman-group-exchange-sha1, 1038diffie-hellman-group-exchange-sha1,
1039diffie-hellman-group14-sha1,
1039diffie-hellman-group1-sha1 1040diffie-hellman-group1-sha1
1040.Ed 1041.Ed
1041.Pp 1042.Pp
@@ -1392,6 +1393,10 @@ should be sent to the server.
1392Note that environment passing is only supported for protocol 2. 1393Note that environment passing is only supported for protocol 2.
1393The server must also support it, and the server must be configured to 1394The server must also support it, and the server must be configured to
1394accept these environment variables. 1395accept these environment variables.
1396Note that the
1397.Ev TERM
1398environment variable is always sent whenever a
1399pseudo-terminal is requested as it is required by the protocol.
1395Refer to 1400Refer to
1396.Cm AcceptEnv 1401.Cm AcceptEnv
1397in 1402in
diff --git a/sshbuf-misc.c b/sshbuf-misc.c
index f1c2d03c9..d022065f9 100644
--- a/sshbuf-misc.c
+++ b/sshbuf-misc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshbuf-misc.c,v 1.3 2015/02/05 12:59:57 millert Exp $ */ 1/* $OpenBSD: sshbuf-misc.c,v 1.4 2015/03/24 20:03:44 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2011 Damien Miller 3 * Copyright (c) 2011 Damien Miller
4 * 4 *
@@ -42,7 +42,7 @@ sshbuf_dump_data(const void *s, size_t len, FILE *f)
42 const u_char *p = (const u_char *)s; 42 const u_char *p = (const u_char *)s;
43 43
44 for (i = 0; i < len; i += 16) { 44 for (i = 0; i < len; i += 16) {
45 fprintf(f, "%.4zd: ", i); 45 fprintf(f, "%.4zu: ", i);
46 for (j = i; j < i + 16; j++) { 46 for (j = i; j < i + 16; j++) {
47 if (j < len) 47 if (j < len)
48 fprintf(f, "%02x ", p[j]); 48 fprintf(f, "%02x ", p[j]);
diff --git a/sshconnect.c b/sshconnect.c
index a6c9e20ed..988f4efe6 100644
--- a/sshconnect.c
+++ b/sshconnect.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect.c,v 1.259 2015/01/28 22:36:00 djm Exp $ */ 1/* $OpenBSD: sshconnect.c,v 1.262 2015/05/28 05:41:29 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -912,7 +912,7 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port,
912 host_key, options.hash_known_hosts)) 912 host_key, options.hash_known_hosts))
913 logit("Failed to add the %s host key for IP " 913 logit("Failed to add the %s host key for IP "
914 "address '%.128s' to the list of known " 914 "address '%.128s' to the list of known "
915 "hosts (%.30s).", type, ip, 915 "hosts (%.500s).", type, ip,
916 user_hostfiles[0]); 916 user_hostfiles[0]);
917 else 917 else
918 logit("Warning: Permanently added the %s host " 918 logit("Warning: Permanently added the %s host "
@@ -1355,6 +1355,7 @@ ssh_login(Sensitive *sensitive, const char *orighost,
1355 1355
1356 /* key exchange */ 1356 /* key exchange */
1357 /* authenticate user */ 1357 /* authenticate user */
1358 debug("Authenticating to %s:%d as '%s'", host, port, server_user);
1358 if (compat20) { 1359 if (compat20) {
1359 ssh_kex2(host, hostaddr, port); 1360 ssh_kex2(host, hostaddr, port);
1360 ssh_userauth2(local_user, server_user, host, sensitive); 1361 ssh_userauth2(local_user, server_user, host, sensitive);
@@ -1363,7 +1364,7 @@ ssh_login(Sensitive *sensitive, const char *orighost,
1363 ssh_kex(host, hostaddr); 1364 ssh_kex(host, hostaddr);
1364 ssh_userauth1(local_user, server_user, host, sensitive); 1365 ssh_userauth1(local_user, server_user, host, sensitive);
1365#else 1366#else
1366 fatal("ssh1 is not unsupported"); 1367 fatal("ssh1 is not supported");
1367#endif 1368#endif
1368 } 1369 }
1369 free(local_user); 1370 free(local_user);
diff --git a/sshconnect2.c b/sshconnect2.c
index faa8ec589..44c89e691 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshconnect2.c,v 1.223 2015/01/30 11:43:14 djm Exp $ */ 1/* $OpenBSD: sshconnect2.c,v 1.224 2015/05/04 06:10:48 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Damien Miller. All rights reserved. 4 * Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -1726,8 +1726,7 @@ userauth_hostbased(Authctxt *authctxt)
1726 continue; 1726 continue;
1727 if (match_pattern_list( 1727 if (match_pattern_list(
1728 sshkey_ssh_name(authctxt->sensitive->keys[i]), 1728 sshkey_ssh_name(authctxt->sensitive->keys[i]),
1729 authctxt->active_ktype, 1729 authctxt->active_ktype, 0) != 1)
1730 strlen(authctxt->active_ktype), 0) != 1)
1731 continue; 1730 continue;
1732 /* we take and free the key */ 1731 /* we take and free the key */
1733 private = authctxt->sensitive->keys[i]; 1732 private = authctxt->sensitive->keys[i];
diff --git a/sshd.0 b/sshd.0
index 442cd572f..33a9392f9 100644
--- a/sshd.0
+++ b/sshd.0
@@ -233,7 +233,9 @@ LOGIN PROCESS
233 authentication protocol and cookie in standard input. See 233 authentication protocol and cookie in standard input. See
234 SSHRC, below. 234 SSHRC, below.
235 235
236 9. Runs user's shell or command. 236 9. Runs user's shell or command. All commands are run under the
237 user's login shell as specified in the system password
238 database.
237 239
238SSHRC 240SSHRC
239 If the file ~/.ssh/rc exists, sh(1) runs it after reading the environment 241 If the file ~/.ssh/rc exists, sh(1) runs it after reading the environment
@@ -631,4 +633,4 @@ AUTHORS
631 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 633 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
632 for privilege separation. 634 for privilege separation.
633 635
634OpenBSD 5.7 November 15, 2014 OpenBSD 5.7 636OpenBSD 5.7 May 1, 2015 OpenBSD 5.7
diff --git a/sshd.8 b/sshd.8
index e1980174d..42f1520b4 100644
--- a/sshd.8
+++ b/sshd.8
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd.8,v 1.278 2014/11/15 14:41:03 bentley Exp $ 36.\" $OpenBSD: sshd.8,v 1.279 2015/05/01 07:11:47 djm Exp $
37.Dd $Mdocdate: November 15 2014 $ 37.Dd $Mdocdate: May 1 2015 $
38.Dt SSHD 8 38.Dt SSHD 8
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -427,6 +427,8 @@ See
427below. 427below.
428.It 428.It
429Runs user's shell or command. 429Runs user's shell or command.
430All commands are run under the user's login shell as specified in the
431system password database.
430.El 432.El
431.Sh SSHRC 433.Sh SSHRC
432If the file 434If the file
diff --git a/sshd.c b/sshd.c
index f8db3ae60..cc8ecaff4 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshd.c,v 1.444 2015/02/20 22:17:21 djm Exp $ */ 1/* $OpenBSD: sshd.c,v 1.450 2015/05/24 23:39:16 djm Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -940,6 +940,10 @@ notify_hostkeys(struct ssh *ssh)
940 int i, nkeys, r; 940 int i, nkeys, r;
941 char *fp; 941 char *fp;
942 942
943 /* Some clients cannot cope with the hostkeys message, skip those. */
944 if (datafellows & SSH_BUG_HOSTKEYS)
945 return;
946
943 if ((buf = sshbuf_new()) == NULL) 947 if ((buf = sshbuf_new()) == NULL)
944 fatal("%s: sshbuf_new", __func__); 948 fatal("%s: sshbuf_new", __func__);
945 for (i = nkeys = 0; i < options.num_host_key_files; i++) { 949 for (i = nkeys = 0; i < options.num_host_key_files; i++) {
@@ -1104,8 +1108,6 @@ recv_rexec_state(int fd, Buffer *conf)
1104 sensitive_data.server_key->rsa) != 0) 1108 sensitive_data.server_key->rsa) != 0)
1105 fatal("%s: rsa_generate_additional_parameters " 1109 fatal("%s: rsa_generate_additional_parameters "
1106 "error", __func__); 1110 "error", __func__);
1107#else
1108 fatal("ssh1 not supported");
1109#endif 1111#endif
1110 } 1112 }
1111 1113
@@ -1465,7 +1467,7 @@ main(int ac, char **av)
1465 int sock_in = -1, sock_out = -1, newsock = -1; 1467 int sock_in = -1, sock_out = -1, newsock = -1;
1466 const char *remote_ip; 1468 const char *remote_ip;
1467 int remote_port; 1469 int remote_port;
1468 char *fp, *line, *logfile = NULL; 1470 char *fp, *line, *laddr, *logfile = NULL;
1469 int config_s[2] = { -1 , -1 }; 1471 int config_s[2] = { -1 , -1 };
1470 u_int n; 1472 u_int n;
1471 u_int64_t ibytes, obytes; 1473 u_int64_t ibytes, obytes;
@@ -1505,7 +1507,8 @@ main(int ac, char **av)
1505 initialize_server_options(&options); 1507 initialize_server_options(&options);
1506 1508
1507 /* Parse command-line arguments. */ 1509 /* Parse command-line arguments. */
1508 while ((opt = getopt(ac, av, "f:p:b:k:h:g:u:o:C:dDeE:iqrtQRT46")) != -1) { 1510 while ((opt = getopt(ac, av,
1511 "C:E:b:c:f:g:h:k:o:p:u:46DQRTdeiqrt")) != -1) {
1509 switch (opt) { 1512 switch (opt) {
1510 case '4': 1513 case '4':
1511 options.address_family = AF_INET; 1514 options.address_family = AF_INET;
@@ -1687,7 +1690,7 @@ main(int ac, char **av)
1687 buffer_init(&cfg); 1690 buffer_init(&cfg);
1688 if (rexeced_flag) 1691 if (rexeced_flag)
1689 recv_rexec_state(REEXEC_CONFIG_PASS_FD, &cfg); 1692 recv_rexec_state(REEXEC_CONFIG_PASS_FD, &cfg);
1690 else 1693 else if (strcasecmp(config_file_name, "none") != 0)
1691 load_server_config(config_file_name, &cfg); 1694 load_server_config(config_file_name, &cfg);
1692 1695
1693 parse_server_config(&options, rexeced_flag ? "rexec" : config_file_name, 1696 parse_server_config(&options, rexeced_flag ? "rexec" : config_file_name,
@@ -1708,6 +1711,11 @@ main(int ac, char **av)
1708 strcasecmp(options.authorized_keys_command, "none") != 0)) 1711 strcasecmp(options.authorized_keys_command, "none") != 0))
1709 fatal("AuthorizedKeysCommand set without " 1712 fatal("AuthorizedKeysCommand set without "
1710 "AuthorizedKeysCommandUser"); 1713 "AuthorizedKeysCommandUser");
1714 if (options.authorized_principals_command_user == NULL &&
1715 (options.authorized_principals_command != NULL &&
1716 strcasecmp(options.authorized_principals_command, "none") != 0))
1717 fatal("AuthorizedPrincipalsCommand set without "
1718 "AuthorizedPrincipalsCommandUser");
1711 1719
1712 /* 1720 /*
1713 * Check whether there is any path through configured auth methods. 1721 * Check whether there is any path through configured auth methods.
@@ -2171,9 +2179,10 @@ main(int ac, char **av)
2171#endif /* LIBWRAP */ 2179#endif /* LIBWRAP */
2172 2180
2173 /* Log the connection. */ 2181 /* Log the connection. */
2182 laddr = get_local_ipaddr(sock_in);
2174 verbose("Connection from %s port %d on %s port %d", 2183 verbose("Connection from %s port %d on %s port %d",
2175 remote_ip, remote_port, 2184 remote_ip, remote_port, laddr, get_local_port());
2176 get_local_ipaddr(sock_in), get_local_port()); 2185 free(laddr);
2177 2186
2178#ifdef USE_SECURITY_SESSION_API 2187#ifdef USE_SECURITY_SESSION_API
2179 /* 2188 /*
diff --git a/sshd_config b/sshd_config
index 339123329..23a338fa3 100644
--- a/sshd_config
+++ b/sshd_config
@@ -1,4 +1,4 @@
1# $OpenBSD: sshd_config,v 1.94 2015/02/02 01:57:44 deraadt Exp $ 1# $OpenBSD: sshd_config,v 1.95 2015/04/27 21:42:48 djm Exp $
2 2
3# This is the sshd server system-wide configuration file. See 3# This is the sshd server system-wide configuration file. See
4# sshd_config(5) for more information. 4# sshd_config(5) for more information.
@@ -42,7 +42,7 @@
42 42
43#LoginGraceTime 2m 43#LoginGraceTime 2m
44# See /usr/share/doc/openssh-server/README.Debian.gz. 44# See /usr/share/doc/openssh-server/README.Debian.gz.
45#PermitRootLogin yes 45#PermitRootLogin without-password
46#StrictModes yes 46#StrictModes yes
47#MaxAuthTries 6 47#MaxAuthTries 6
48#MaxSessions 10 48#MaxSessions 10
diff --git a/sshd_config.0 b/sshd_config.0
index be48e1364..641041852 100644
--- a/sshd_config.0
+++ b/sshd_config.0
@@ -20,14 +20,16 @@ DESCRIPTION
20 Specifies what environment variables sent by the client will be 20 Specifies what environment variables sent by the client will be
21 copied into the session's environ(7). See SendEnv in 21 copied into the session's environ(7). See SendEnv in
22 ssh_config(5) for how to configure the client. Note that 22 ssh_config(5) for how to configure the client. Note that
23 environment passing is only supported for protocol 2. Variables 23 environment passing is only supported for protocol 2, and that
24 are specified by name, which may contain the wildcard characters 24 the TERM environment variable is always sent whenever the client
25 M-bM-^@M-^X*M-bM-^@M-^Y and M-bM-^@M-^X?M-bM-^@M-^Y. Multiple environment variables may be separated by 25 requests a pseudo-terminal as it is required by the protocol.
26 whitespace or spread across multiple AcceptEnv directives. Be 26 Variables are specified by name, which may contain the wildcard
27 warned that some environment variables could be used to bypass 27 characters M-bM-^@M-^X*M-bM-^@M-^Y and M-bM-^@M-^X?M-bM-^@M-^Y. Multiple environment variables may be
28 restricted user environments. For this reason, care should be 28 separated by whitespace or spread across multiple AcceptEnv
29 taken in the use of this directive. The default is not to accept 29 directives. Be warned that some environment variables could be
30 any environment variables. 30 used to bypass restricted user environments. For this reason,
31 care should be taken in the use of this directive. The default
32 is not to accept any environment variables.
31 33
32 AddressFamily 34 AddressFamily
33 Specifies which address family should be used by sshd(8). Valid 35 Specifies which address family should be used by sshd(8). Valid
@@ -122,15 +124,25 @@ DESCRIPTION
122 124
123 AuthorizedKeysCommand 125 AuthorizedKeysCommand
124 Specifies a program to be used to look up the user's public keys. 126 Specifies a program to be used to look up the user's public keys.
125 The program must be owned by root and not writable by group or 127 The program must be owned by root, not writable by group or
126 others. It will be invoked with a single argument of the 128 others and specified by an absolute path.
127 username being authenticated, and should produce on standard 129
128 output zero or more lines of authorized_keys output (see 130 Arguments to AuthorizedKeysCommand may be provided using the
129 AUTHORIZED_KEYS in sshd(8)). If a key supplied by 131 following tokens, which will be expanded at runtime: %% is
130 AuthorizedKeysCommand does not successfully authenticate and 132 replaced by a literal '%', %u is replaced by the username being
131 authorize the user then public key authentication continues using 133 authenticated, %h is replaced by the home directory of the user
132 the usual AuthorizedKeysFile files. By default, no 134 being authenticated, %t is replaced with the key type offered for
133 AuthorizedKeysCommand is run. 135 authentication, %f is replaced with the fingerprint of the key,
136 and %k is replaced with the key being offered for authentication.
137 If no arguments are specified then the username of the target
138 user will be supplied.
139
140 The program should produce on standard output zero or more lines
141 of authorized_keys output (see AUTHORIZED_KEYS in sshd(8)). If a
142 key supplied by AuthorizedKeysCommand does not successfully
143 authenticate and authorize the user then public key
144 authentication continues using the usual AuthorizedKeysFile
145 files. By default, no AuthorizedKeysCommand is run.
134 146
135 AuthorizedKeysCommandUser 147 AuthorizedKeysCommandUser
136 Specifies the user under whose account the AuthorizedKeysCommand 148 Specifies the user under whose account the AuthorizedKeysCommand
@@ -153,6 +165,33 @@ DESCRIPTION
153 listed, separated by whitespace. The default is 165 listed, separated by whitespace. The default is
154 M-bM-^@M-^\.ssh/authorized_keys .ssh/authorized_keys2M-bM-^@M-^]. 166 M-bM-^@M-^\.ssh/authorized_keys .ssh/authorized_keys2M-bM-^@M-^].
155 167
168 AuthorizedPrincipalsCommand
169 Specifies a program to be used to generate the list of allowed
170 certificate principals as per AuthorizedPrincipalsFile. The
171 program must be owned by root, not writable by group or others
172 and specified by an absolute path.
173
174 Arguments to AuthorizedPrincipalsCommand may be provided using
175 the following tokens, which will be expanded at runtime: %% is
176 replaced by a literal '%', %u is replaced by the username being
177 authenticated and %h is replaced by the home directory of the
178 user being authenticated.
179
180 The program should produce on standard output zero or more lines
181 of AuthorizedPrincipalsFile output. If either
182 AuthorizedPrincipalsCommand or AuthorizedPrincipalsFile is
183 specified, then certificates offered by the client for
184 authentication must contain a principal that is listed. By
185 default, no AuthorizedPrincipalsCommand is run.
186
187 AuthorizedPrincipalsCommandUser
188 Specifies the user under whose account the
189 AuthorizedPrincipalsCommand is run. It is recommended to use a
190 dedicated user that has no other role on the host than running
191 authorized principals commands. If AuthorizedPrincipalsCommand
192 is specified but AuthorizedPrincipalsCommandUser is not, then
193 sshd(8) will refuse to start.
194
156 AuthorizedPrincipalsFile 195 AuthorizedPrincipalsFile
157 Specifies a file that lists principal names that are accepted for 196 Specifies a file that lists principal names that are accepted for
158 certificate authentication. When using certificates signed by a 197 certificate authentication. When using certificates signed by a
@@ -344,6 +383,15 @@ DESCRIPTION
344 cache on logout. The default is M-bM-^@M-^\yesM-bM-^@M-^]. Note that this option 383 cache on logout. The default is M-bM-^@M-^\yesM-bM-^@M-^]. Note that this option
345 applies to protocol version 2 only. 384 applies to protocol version 2 only.
346 385
386 GSSAPIStrictAcceptorCheck
387 Determines whether to be strict about the identity of the GSSAPI
388 acceptor a client authenticates against. If set to M-bM-^@M-^\yesM-bM-^@M-^] then
389 the client must authenticate against the host service on the
390 current hostname. If set to M-bM-^@M-^\noM-bM-^@M-^] then the client may
391 authenticate against any service key stored in the machine's
392 default store. This facility is provided to assist with
393 operation on multi homed machines. The default is M-bM-^@M-^\yesM-bM-^@M-^].
394
347 HostbasedAcceptedKeyTypes 395 HostbasedAcceptedKeyTypes
348 Specifies the key types that will be accepted for hostbased 396 Specifies the key types that will be accepted for hostbased
349 authentication as a comma-separated pattern list. The default 397 authentication as a comma-separated pattern list. The default
@@ -484,10 +532,8 @@ DESCRIPTION
484 ListenAddress [host|IPv6_addr]:port 532 ListenAddress [host|IPv6_addr]:port
485 533
486 If port is not specified, sshd will listen on the address and all 534 If port is not specified, sshd will listen on the address and all
487 prior Port options specified. The default is to listen on all 535 Port options specified. The default is to listen on all local
488 local addresses. Multiple ListenAddress options are permitted. 536 addresses. Multiple ListenAddress options are permitted.
489 Additionally, any Port options must precede this option for non-
490 port qualified addresses.
491 537
492 LoginGraceTime 538 LoginGraceTime
493 The server disconnects after this time if the user has not 539 The server disconnects after this time if the user has not
@@ -628,7 +674,7 @@ DESCRIPTION
628 PermitRootLogin 674 PermitRootLogin
629 Specifies whether root can log in using ssh(1). The argument 675 Specifies whether root can log in using ssh(1). The argument
630 must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\without-passwordM-bM-^@M-^], M-bM-^@M-^\forced-commands-onlyM-bM-^@M-^], or 676 must be M-bM-^@M-^\yesM-bM-^@M-^], M-bM-^@M-^\without-passwordM-bM-^@M-^], M-bM-^@M-^\forced-commands-onlyM-bM-^@M-^], or
631 M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\yesM-bM-^@M-^]. 677 M-bM-^@M-^\noM-bM-^@M-^]. The default is M-bM-^@M-^\noM-bM-^@M-^].
632 678
633 If this option is set to M-bM-^@M-^\without-passwordM-bM-^@M-^], password 679 If this option is set to M-bM-^@M-^\without-passwordM-bM-^@M-^], password
634 authentication is disabled for root. 680 authentication is disabled for root.
@@ -667,7 +713,8 @@ DESCRIPTION
667 713
668 PidFile 714 PidFile
669 Specifies the file that contains the process ID of the SSH 715 Specifies the file that contains the process ID of the SSH
670 daemon. The default is /var/run/sshd.pid. 716 daemon, or M-bM-^@M-^\noneM-bM-^@M-^] to not write one. The default is
717 /var/run/sshd.pid.
671 718
672 Port Specifies the port number that sshd(8) listens on. The default 719 Port Specifies the port number that sshd(8) listens on. The default
673 is 22. Multiple options of this type are permitted. See also 720 is 22. Multiple options of this type are permitted. See also
@@ -718,13 +765,14 @@ DESCRIPTION
718 applies to protocol version 2 only. 765 applies to protocol version 2 only.
719 766
720 RevokedKeys 767 RevokedKeys
721 Specifies revoked public keys. Keys listed in this file will be 768 Specifies revoked public keys file, or M-bM-^@M-^\noneM-bM-^@M-^] to not use one.
722 refused for public key authentication. Note that if this file is 769 Keys listed in this file will be refused for public key
723 not readable, then public key authentication will be refused for 770 authentication. Note that if this file is not readable, then
724 all users. Keys may be specified as a text file, listing one 771 public key authentication will be refused for all users. Keys
725 public key per line, or as an OpenSSH Key Revocation List (KRL) 772 may be specified as a text file, listing one public key per line,
726 as generated by ssh-keygen(1). For more information on KRLs, see 773 or as an OpenSSH Key Revocation List (KRL) as generated by
727 the KEY REVOCATION LISTS section in ssh-keygen(1). 774 ssh-keygen(1). For more information on KRLs, see the KEY
775 REVOCATION LISTS section in ssh-keygen(1).
728 776
729 RhostsRSAAuthentication 777 RhostsRSAAuthentication
730 Specifies whether rhosts or /etc/hosts.equiv authentication 778 Specifies whether rhosts or /etc/hosts.equiv authentication
@@ -810,14 +858,15 @@ DESCRIPTION
810 TrustedUserCAKeys 858 TrustedUserCAKeys
811 Specifies a file containing public keys of certificate 859 Specifies a file containing public keys of certificate
812 authorities that are trusted to sign user certificates for 860 authorities that are trusted to sign user certificates for
813 authentication. Keys are listed one per line; empty lines and 861 authentication, or M-bM-^@M-^\noneM-bM-^@M-^] to not use one. Keys are listed one
814 comments starting with M-bM-^@M-^X#M-bM-^@M-^Y are allowed. If a certificate is 862 per line; empty lines and comments starting with M-bM-^@M-^X#M-bM-^@M-^Y are allowed.
815 presented for authentication and has its signing CA key listed in 863 If a certificate is presented for authentication and has its
816 this file, then it may be used for authentication for any user 864 signing CA key listed in this file, then it may be used for
817 listed in the certificate's principals list. Note that 865 authentication for any user listed in the certificate's
818 certificates that lack a list of principals will not be permitted 866 principals list. Note that certificates that lack a list of
819 for authentication using TrustedUserCAKeys. For more details on 867 principals will not be permitted for authentication using
820 certificates, see the CERTIFICATES section in ssh-keygen(1). 868 TrustedUserCAKeys. For more details on certificates, see the
869 CERTIFICATES section in ssh-keygen(1).
821 870
822 UseDNS Specifies whether sshd(8) should look up the remote host name and 871 UseDNS Specifies whether sshd(8) should look up the remote host name and
823 check that the resolved host name for the remote IP address maps 872 check that the resolved host name for the remote IP address maps
@@ -901,8 +950,8 @@ DESCRIPTION
901 default is M-bM-^@M-^\yesM-bM-^@M-^]. 950 default is M-bM-^@M-^\yesM-bM-^@M-^].
902 951
903 XAuthLocation 952 XAuthLocation
904 Specifies the full pathname of the xauth(1) program. The default 953 Specifies the full pathname of the xauth(1) program, or M-bM-^@M-^\noneM-bM-^@M-^] to
905 is /usr/X11R6/bin/xauth. 954 not use one. The default is /usr/X11R6/bin/xauth.
906 955
907TIME FORMATS 956TIME FORMATS
908 sshd(8) command-line arguments and configuration file options that 957 sshd(8) command-line arguments and configuration file options that
@@ -943,4 +992,4 @@ AUTHORS
943 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support 992 versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
944 for privilege separation. 993 for privilege separation.
945 994
946OpenBSD 5.7 February 20, 2015 OpenBSD 5.7 995OpenBSD 5.7 June 5, 2015 OpenBSD 5.7
diff --git a/sshd_config.5 b/sshd_config.5
index db1f2fd69..eb6bff85f 100644
--- a/sshd_config.5
+++ b/sshd_config.5
@@ -33,8 +33,8 @@
33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35.\" 35.\"
36.\" $OpenBSD: sshd_config.5,v 1.194 2015/02/20 23:46:01 djm Exp $ 36.\" $OpenBSD: sshd_config.5,v 1.204 2015/06/05 03:44:14 djm Exp $
37.Dd $Mdocdate: February 20 2015 $ 37.Dd $Mdocdate: June 5 2015 $
38.Dt SSHD_CONFIG 5 38.Dt SSHD_CONFIG 5
39.Os 39.Os
40.Sh NAME 40.Sh NAME
@@ -95,7 +95,11 @@ See
95in 95in
96.Xr ssh_config 5 96.Xr ssh_config 5
97for how to configure the client. 97for how to configure the client.
98Note that environment passing is only supported for protocol 2. 98Note that environment passing is only supported for protocol 2, and
99that the
100.Ev TERM
101environment variable is always sent whenever the client
102requests a pseudo-terminal as it is required by the protocol.
99Variables are specified by name, which may contain the wildcard characters 103Variables are specified by name, which may contain the wildcard characters
100.Ql * 104.Ql *
101and 105and
@@ -255,9 +259,21 @@ The default is not to require multiple authentication; successful completion
255of a single authentication method is sufficient. 259of a single authentication method is sufficient.
256.It Cm AuthorizedKeysCommand 260.It Cm AuthorizedKeysCommand
257Specifies a program to be used to look up the user's public keys. 261Specifies a program to be used to look up the user's public keys.
258The program must be owned by root and not writable by group or others. 262The program must be owned by root, not writable by group or others and
259It will be invoked with a single argument of the username 263specified by an absolute path.
260being authenticated, and should produce on standard output zero or 264.Pp
265Arguments to
266.Cm AuthorizedKeysCommand
267may be provided using the following tokens, which will be expanded
268at runtime: %% is replaced by a literal '%', %u is replaced by the
269username being authenticated, %h is replaced by the home directory
270of the user being authenticated, %t is replaced with the key type
271offered for authentication, %f is replaced with the fingerprint of
272the key, and %k is replaced with the key being offered for authentication.
273If no arguments are specified then the username of the target user
274will be supplied.
275.Pp
276The program should produce on standard output zero or
261more lines of authorized_keys output (see AUTHORIZED_KEYS in 277more lines of authorized_keys output (see AUTHORIZED_KEYS in
262.Xr sshd 8 ) . 278.Xr sshd 8 ) .
263If a key supplied by AuthorizedKeysCommand does not successfully authenticate 279If a key supplied by AuthorizedKeysCommand does not successfully authenticate
@@ -296,6 +312,42 @@ directory.
296Multiple files may be listed, separated by whitespace. 312Multiple files may be listed, separated by whitespace.
297The default is 313The default is
298.Dq .ssh/authorized_keys .ssh/authorized_keys2 . 314.Dq .ssh/authorized_keys .ssh/authorized_keys2 .
315.It Cm AuthorizedPrincipalsCommand
316Specifies a program to be used to generate the list of allowed
317certificate principals as per
318.Cm AuthorizedPrincipalsFile .
319The program must be owned by root, not writable by group or others and
320specified by an absolute path.
321.Pp
322Arguments to
323.Cm AuthorizedPrincipalsCommand
324may be provided using the following tokens, which will be expanded
325at runtime: %% is replaced by a literal '%', %u is replaced by the
326username being authenticated and %h is replaced by the home directory
327of the user being authenticated.
328.Pp
329The program should produce on standard output zero or
330more lines of
331.Cm AuthorizedPrincipalsFile
332output.
333If either
334.Cm AuthorizedPrincipalsCommand
335or
336.Cm AuthorizedPrincipalsFile
337is specified, then certificates offered by the client for authentication
338must contain a principal that is listed.
339By default, no AuthorizedPrincipalsCommand is run.
340.It Cm AuthorizedPrincipalsCommandUser
341Specifies the user under whose account the AuthorizedPrincipalsCommand is run.
342It is recommended to use a dedicated user that has no other role on the host
343than running authorized principals commands.
344If
345.Cm AuthorizedPrincipalsCommand
346is specified but
347.Cm AuthorizedPrincipalsCommandUser
348is not, then
349.Xr sshd 8
350will refuse to start.
299.It Cm AuthorizedPrincipalsFile 351.It Cm AuthorizedPrincipalsFile
300Specifies a file that lists principal names that are accepted for 352Specifies a file that lists principal names that are accepted for
301certificate authentication. 353certificate authentication.
@@ -606,22 +658,20 @@ The default is
606.Dq yes . 658.Dq yes .
607Note that this option applies to protocol version 2 only. 659Note that this option applies to protocol version 2 only.
608.It Cm GSSAPIStrictAcceptorCheck 660.It Cm GSSAPIStrictAcceptorCheck
609Determines whether to be strict about the identity of the GSSAPI acceptor 661Determines whether to be strict about the identity of the GSSAPI acceptor
610a client authenticates against. If 662a client authenticates against.
663If set to
611.Dq yes 664.Dq yes
612then the client must authenticate against the 665then the client must authenticate against the
613.Pa host 666.Pa host
614service on the current hostname. If 667service on the current hostname.
668If set to
615.Dq no 669.Dq no
616then the client may authenticate against any service key stored in the 670then the client may authenticate against any service key stored in the
617machine's default store. This facility is provided to assist with operation 671machine's default store.
618on multi homed machines. 672This facility is provided to assist with operation on multi homed machines.
619The default is 673The default is
620.Dq yes . 674.Dq yes .
621Note that this option applies only to protocol version 2 GSSAPI connections,
622and setting it to
623.Dq no
624may only work with recent Kerberos GSSAPI libraries.
625.It Cm GSSAPIStoreCredentialsOnRekey 675.It Cm GSSAPIStoreCredentialsOnRekey
626Controls whether the user's GSSAPI credentials should be updated following a 676Controls whether the user's GSSAPI credentials should be updated following a
627successful connection rekeying. This option can be used to accepted renewed 677successful connection rekeying. This option can be used to accepted renewed
@@ -883,16 +933,13 @@ The following forms may be used:
883If 933If
884.Ar port 934.Ar port
885is not specified, 935is not specified,
886sshd will listen on the address and all prior 936sshd will listen on the address and all
887.Cm Port 937.Cm Port
888options specified. 938options specified.
889The default is to listen on all local addresses. 939The default is to listen on all local addresses.
890Multiple 940Multiple
891.Cm ListenAddress 941.Cm ListenAddress
892options are permitted. 942options are permitted.
893Additionally, any
894.Cm Port
895options must precede this option for non-port qualified addresses.
896.It Cm LoginGraceTime 943.It Cm LoginGraceTime
897The server disconnects after this time if the user has not 944The server disconnects after this time if the user has not
898successfully logged in. 945successfully logged in.
@@ -1150,7 +1197,7 @@ The argument must be
1150or 1197or
1151.Dq no . 1198.Dq no .
1152The default is 1199The default is
1153.Dq yes . 1200.Dq no .
1154.Pp 1201.Pp
1155If this option is set to 1202If this option is set to
1156.Dq without-password , 1203.Dq without-password ,
@@ -1220,7 +1267,9 @@ The default is
1220.Dq yes . 1267.Dq yes .
1221.It Cm PidFile 1268.It Cm PidFile
1222Specifies the file that contains the process ID of the 1269Specifies the file that contains the process ID of the
1223SSH daemon. 1270SSH daemon, or
1271.Dq none
1272to not write one.
1224The default is 1273The default is
1225.Pa /var/run/sshd.pid . 1274.Pa /var/run/sshd.pid .
1226.It Cm Port 1275.It Cm Port
@@ -1310,7 +1359,9 @@ which means that rekeying is performed after the cipher's default amount
1310of data has been sent or received and no time based rekeying is done. 1359of data has been sent or received and no time based rekeying is done.
1311This option applies to protocol version 2 only. 1360This option applies to protocol version 2 only.
1312.It Cm RevokedKeys 1361.It Cm RevokedKeys
1313Specifies revoked public keys. 1362Specifies revoked public keys file, or
1363.Dq none
1364to not use one.
1314Keys listed in this file will be refused for public key authentication. 1365Keys listed in this file will be refused for public key authentication.
1315Note that if this file is not readable, then public key authentication will 1366Note that if this file is not readable, then public key authentication will
1316be refused for all users. 1367be refused for all users.
@@ -1426,7 +1477,9 @@ This option was formerly called
1426.Cm KeepAlive . 1477.Cm KeepAlive .
1427.It Cm TrustedUserCAKeys 1478.It Cm TrustedUserCAKeys
1428Specifies a file containing public keys of certificate authorities that are 1479Specifies a file containing public keys of certificate authorities that are
1429trusted to sign user certificates for authentication. 1480trusted to sign user certificates for authentication, or
1481.Dq none
1482to not use one.
1430Keys are listed one per line; empty lines and comments starting with 1483Keys are listed one per line; empty lines and comments starting with
1431.Ql # 1484.Ql #
1432are allowed. 1485are allowed.
@@ -1579,7 +1632,9 @@ The default is
1579.It Cm XAuthLocation 1632.It Cm XAuthLocation
1580Specifies the full pathname of the 1633Specifies the full pathname of the
1581.Xr xauth 1 1634.Xr xauth 1
1582program. 1635program, or
1636.Dq none
1637to not use one.
1583The default is 1638The default is
1584.Pa /usr/X11R6/bin/xauth . 1639.Pa /usr/X11R6/bin/xauth .
1585.El 1640.El
diff --git a/sshkey.c b/sshkey.c
index cd5992ecb..2c87d8099 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.c,v 1.15 2015/03/06 01:40:56 djm Exp $ */ 1/* $OpenBSD: sshkey.c,v 1.19 2015/05/21 04:55:51 djm Exp $ */
2/* 2/*
3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved. 4 * Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -252,7 +252,7 @@ sshkey_names_valid2(const char *names, int allow_wildcard)
252 if (kt->type == KEY_RSA1) 252 if (kt->type == KEY_RSA1)
253 continue; 253 continue;
254 if (match_pattern_list(kt->name, 254 if (match_pattern_list(kt->name,
255 p, strlen(p), 0) != 0) 255 p, 0) != 0)
256 break; 256 break;
257 } 257 }
258 if (kt->type != -1) 258 if (kt->type != -1)
@@ -762,6 +762,12 @@ to_blob_buf(const struct sshkey *key, struct sshbuf *b, int force_plain)
762 if (key == NULL) 762 if (key == NULL)
763 return SSH_ERR_INVALID_ARGUMENT; 763 return SSH_ERR_INVALID_ARGUMENT;
764 764
765 if (sshkey_is_cert(key)) {
766 if (key->cert == NULL)
767 return SSH_ERR_EXPECTED_CERT;
768 if (sshbuf_len(key->cert->certblob) == 0)
769 return SSH_ERR_KEY_LACKS_CERTBLOB;
770 }
765 type = force_plain ? sshkey_type_plain(key->type) : key->type; 771 type = force_plain ? sshkey_type_plain(key->type) : key->type;
766 typename = sshkey_ssh_name_from_type_nid(type, key->ecdsa_nid); 772 typename = sshkey_ssh_name_from_type_nid(type, key->ecdsa_nid);
767 773
@@ -1410,98 +1416,116 @@ sshkey_read(struct sshkey *ret, char **cpp)
1410} 1416}
1411 1417
1412int 1418int
1413sshkey_write(const struct sshkey *key, FILE *f) 1419sshkey_to_base64(const struct sshkey *key, char **b64p)
1414{ 1420{
1415 int ret = SSH_ERR_INTERNAL_ERROR; 1421 int r = SSH_ERR_INTERNAL_ERROR;
1416 struct sshbuf *b = NULL, *bb = NULL; 1422 struct sshbuf *b = NULL;
1417 char *uu = NULL; 1423 char *uu = NULL;
1424
1425 if (b64p != NULL)
1426 *b64p = NULL;
1427 if ((b = sshbuf_new()) == NULL)
1428 return SSH_ERR_ALLOC_FAIL;
1429 if ((r = sshkey_putb(key, b)) != 0)
1430 goto out;
1431 if ((uu = sshbuf_dtob64(b)) == NULL) {
1432 r = SSH_ERR_ALLOC_FAIL;
1433 goto out;
1434 }
1435 /* Success */
1436 if (b64p != NULL) {
1437 *b64p = uu;
1438 uu = NULL;
1439 }
1440 r = 0;
1441 out:
1442 sshbuf_free(b);
1443 free(uu);
1444 return r;
1445}
1446
1447static int
1448sshkey_format_rsa1(const struct sshkey *key, struct sshbuf *b)
1449{
1450 int r = SSH_ERR_INTERNAL_ERROR;
1418#ifdef WITH_SSH1 1451#ifdef WITH_SSH1
1419 u_int bits = 0; 1452 u_int bits = 0;
1420 char *dec_e = NULL, *dec_n = NULL; 1453 char *dec_e = NULL, *dec_n = NULL;
1421#endif /* WITH_SSH1 */
1422 1454
1423 if (sshkey_is_cert(key)) { 1455 if (key->rsa == NULL || key->rsa->e == NULL ||
1424 if (key->cert == NULL) 1456 key->rsa->n == NULL) {
1425 return SSH_ERR_EXPECTED_CERT; 1457 r = SSH_ERR_INVALID_ARGUMENT;
1426 if (sshbuf_len(key->cert->certblob) == 0) 1458 goto out;
1427 return SSH_ERR_KEY_LACKS_CERTBLOB;
1428 } 1459 }
1429 if ((b = sshbuf_new()) == NULL) 1460 if ((dec_e = BN_bn2dec(key->rsa->e)) == NULL ||
1430 return SSH_ERR_ALLOC_FAIL; 1461 (dec_n = BN_bn2dec(key->rsa->n)) == NULL) {
1431 switch (key->type) { 1462 r = SSH_ERR_ALLOC_FAIL;
1432#ifdef WITH_SSH1 1463 goto out;
1433 case KEY_RSA1: 1464 }
1434 if (key->rsa == NULL || key->rsa->e == NULL || 1465 /* size of modulus 'n' */
1435 key->rsa->n == NULL) { 1466 if ((bits = BN_num_bits(key->rsa->n)) <= 0) {
1436 ret = SSH_ERR_INVALID_ARGUMENT; 1467 r = SSH_ERR_INVALID_ARGUMENT;
1437 goto out; 1468 goto out;
1438 } 1469 }
1439 if ((dec_e = BN_bn2dec(key->rsa->e)) == NULL || 1470 if ((r = sshbuf_putf(b, "%u %s %s", bits, dec_e, dec_n)) != 0)
1440 (dec_n = BN_bn2dec(key->rsa->n)) == NULL) { 1471 goto out;
1441 ret = SSH_ERR_ALLOC_FAIL; 1472
1442 goto out; 1473 /* Success */
1443 } 1474 r = 0;
1444 /* size of modulus 'n' */ 1475 out:
1445 if ((bits = BN_num_bits(key->rsa->n)) <= 0) { 1476 if (dec_e != NULL)
1446 ret = SSH_ERR_INVALID_ARGUMENT; 1477 OPENSSL_free(dec_e);
1447 goto out; 1478 if (dec_n != NULL)
1448 } 1479 OPENSSL_free(dec_n);
1449 if ((ret = sshbuf_putf(b, "%u %s %s", bits, dec_e, dec_n)) != 0)
1450 goto out;
1451#endif /* WITH_SSH1 */ 1480#endif /* WITH_SSH1 */
1452 break; 1481
1453#ifdef WITH_OPENSSL 1482 return r;
1454 case KEY_DSA: 1483}
1455 case KEY_DSA_CERT_V00: 1484
1456 case KEY_DSA_CERT: 1485static int
1457 case KEY_ECDSA: 1486sshkey_format_text(const struct sshkey *key, struct sshbuf *b)
1458 case KEY_ECDSA_CERT: 1487{
1459 case KEY_RSA: 1488 int r = SSH_ERR_INTERNAL_ERROR;
1460 case KEY_RSA_CERT_V00: 1489 char *uu = NULL;
1461 case KEY_RSA_CERT: 1490
1462#endif /* WITH_OPENSSL */ 1491 if (key->type == KEY_RSA1) {
1463 case KEY_ED25519: 1492 if ((r = sshkey_format_rsa1(key, b)) != 0)
1464 case KEY_ED25519_CERT:
1465 if ((bb = sshbuf_new()) == NULL) {
1466 ret = SSH_ERR_ALLOC_FAIL;
1467 goto out;
1468 }
1469 if ((ret = sshkey_putb(key, bb)) != 0)
1470 goto out;
1471 if ((uu = sshbuf_dtob64(bb)) == NULL) {
1472 ret = SSH_ERR_ALLOC_FAIL;
1473 goto out; 1493 goto out;
1474 } 1494 } else {
1475 if ((ret = sshbuf_putf(b, "%s ", sshkey_ssh_name(key))) != 0) 1495 /* Unsupported key types handled in sshkey_to_base64() */
1496 if ((r = sshkey_to_base64(key, &uu)) != 0)
1476 goto out; 1497 goto out;
1477 if ((ret = sshbuf_put(b, uu, strlen(uu))) != 0) 1498 if ((r = sshbuf_putf(b, "%s %s",
1499 sshkey_ssh_name(key), uu)) != 0)
1478 goto out; 1500 goto out;
1479 break;
1480 default:
1481 ret = SSH_ERR_KEY_TYPE_UNKNOWN;
1482 goto out;
1483 } 1501 }
1502 r = 0;
1503 out:
1504 free(uu);
1505 return r;
1506}
1507
1508int
1509sshkey_write(const struct sshkey *key, FILE *f)
1510{
1511 struct sshbuf *b = NULL;
1512 int r = SSH_ERR_INTERNAL_ERROR;
1513
1514 if ((b = sshbuf_new()) == NULL)
1515 return SSH_ERR_ALLOC_FAIL;
1516 if ((r = sshkey_format_text(key, b)) != 0)
1517 goto out;
1484 if (fwrite(sshbuf_ptr(b), sshbuf_len(b), 1, f) != 1) { 1518 if (fwrite(sshbuf_ptr(b), sshbuf_len(b), 1, f) != 1) {
1485 if (feof(f)) 1519 if (feof(f))
1486 errno = EPIPE; 1520 errno = EPIPE;
1487 ret = SSH_ERR_SYSTEM_ERROR; 1521 r = SSH_ERR_SYSTEM_ERROR;
1488 goto out; 1522 goto out;
1489 } 1523 }
1490 ret = 0; 1524 /* Success */
1525 r = 0;
1491 out: 1526 out:
1492 if (b != NULL) 1527 sshbuf_free(b);
1493 sshbuf_free(b); 1528 return r;
1494 if (bb != NULL)
1495 sshbuf_free(bb);
1496 if (uu != NULL)
1497 free(uu);
1498#ifdef WITH_SSH1
1499 if (dec_e != NULL)
1500 OPENSSL_free(dec_e);
1501 if (dec_n != NULL)
1502 OPENSSL_free(dec_n);
1503#endif /* WITH_SSH1 */
1504 return ret;
1505} 1529}
1506 1530
1507const char * 1531const char *
@@ -2014,8 +2038,8 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp,
2014 ret = SSH_ERR_ALLOC_FAIL; 2038 ret = SSH_ERR_ALLOC_FAIL;
2015 goto out; 2039 goto out;
2016 } 2040 }
2017 if (sshbuf_get_bignum2(b, key->rsa->e) == -1 || 2041 if (sshbuf_get_bignum2(b, key->rsa->e) != 0 ||
2018 sshbuf_get_bignum2(b, key->rsa->n) == -1) { 2042 sshbuf_get_bignum2(b, key->rsa->n) != 0) {
2019 ret = SSH_ERR_INVALID_FORMAT; 2043 ret = SSH_ERR_INVALID_FORMAT;
2020 goto out; 2044 goto out;
2021 } 2045 }
@@ -2036,10 +2060,10 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp,
2036 ret = SSH_ERR_ALLOC_FAIL; 2060 ret = SSH_ERR_ALLOC_FAIL;
2037 goto out; 2061 goto out;
2038 } 2062 }
2039 if (sshbuf_get_bignum2(b, key->dsa->p) == -1 || 2063 if (sshbuf_get_bignum2(b, key->dsa->p) != 0 ||
2040 sshbuf_get_bignum2(b, key->dsa->q) == -1 || 2064 sshbuf_get_bignum2(b, key->dsa->q) != 0 ||
2041 sshbuf_get_bignum2(b, key->dsa->g) == -1 || 2065 sshbuf_get_bignum2(b, key->dsa->g) != 0 ||
2042 sshbuf_get_bignum2(b, key->dsa->pub_key) == -1) { 2066 sshbuf_get_bignum2(b, key->dsa->pub_key) != 0) {
2043 ret = SSH_ERR_INVALID_FORMAT; 2067 ret = SSH_ERR_INVALID_FORMAT;
2044 goto out; 2068 goto out;
2045 } 2069 }
@@ -3202,7 +3226,7 @@ sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
3202 const u_char *cp; 3226 const u_char *cp;
3203 int r = SSH_ERR_INTERNAL_ERROR; 3227 int r = SSH_ERR_INTERNAL_ERROR;
3204 size_t encoded_len; 3228 size_t encoded_len;
3205 size_t i, keylen = 0, ivlen = 0, slen = 0; 3229 size_t i, keylen = 0, ivlen = 0, authlen = 0, slen = 0;
3206 struct sshbuf *encoded = NULL, *decoded = NULL; 3230 struct sshbuf *encoded = NULL, *decoded = NULL;
3207 struct sshbuf *kdf = NULL, *decrypted = NULL; 3231 struct sshbuf *kdf = NULL, *decrypted = NULL;
3208 struct sshcipher_ctx ciphercontext; 3232 struct sshcipher_ctx ciphercontext;
@@ -3312,6 +3336,7 @@ sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
3312 /* setup key */ 3336 /* setup key */
3313 keylen = cipher_keylen(cipher); 3337 keylen = cipher_keylen(cipher);
3314 ivlen = cipher_ivlen(cipher); 3338 ivlen = cipher_ivlen(cipher);
3339 authlen = cipher_authlen(cipher);
3315 if ((key = calloc(1, keylen + ivlen)) == NULL) { 3340 if ((key = calloc(1, keylen + ivlen)) == NULL) {
3316 r = SSH_ERR_ALLOC_FAIL; 3341 r = SSH_ERR_ALLOC_FAIL;
3317 goto out; 3342 goto out;
@@ -3327,19 +3352,25 @@ sshkey_parse_private2(struct sshbuf *blob, int type, const char *passphrase,
3327 } 3352 }
3328 } 3353 }
3329 3354
3355 /* check that an appropriate amount of auth data is present */
3356 if (sshbuf_len(decoded) < encrypted_len + authlen) {
3357 r = SSH_ERR_INVALID_FORMAT;
3358 goto out;
3359 }
3360
3330 /* decrypt private portion of key */ 3361 /* decrypt private portion of key */
3331 if ((r = sshbuf_reserve(decrypted, encrypted_len, &dp)) != 0 || 3362 if ((r = sshbuf_reserve(decrypted, encrypted_len, &dp)) != 0 ||
3332 (r = cipher_init(&ciphercontext, cipher, key, keylen, 3363 (r = cipher_init(&ciphercontext, cipher, key, keylen,
3333 key + keylen, ivlen, 0)) != 0) 3364 key + keylen, ivlen, 0)) != 0)
3334 goto out; 3365 goto out;
3335 if ((r = cipher_crypt(&ciphercontext, 0, dp, sshbuf_ptr(decoded), 3366 if ((r = cipher_crypt(&ciphercontext, 0, dp, sshbuf_ptr(decoded),
3336 sshbuf_len(decoded), 0, cipher_authlen(cipher))) != 0) { 3367 encrypted_len, 0, authlen)) != 0) {
3337 /* an integrity error here indicates an incorrect passphrase */ 3368 /* an integrity error here indicates an incorrect passphrase */
3338 if (r == SSH_ERR_MAC_INVALID) 3369 if (r == SSH_ERR_MAC_INVALID)
3339 r = SSH_ERR_KEY_WRONG_PASSPHRASE; 3370 r = SSH_ERR_KEY_WRONG_PASSPHRASE;
3340 goto out; 3371 goto out;
3341 } 3372 }
3342 if ((r = sshbuf_consume(decoded, encrypted_len)) != 0) 3373 if ((r = sshbuf_consume(decoded, encrypted_len + authlen)) != 0)
3343 goto out; 3374 goto out;
3344 /* there should be no trailing data */ 3375 /* there should be no trailing data */
3345 if (sshbuf_len(decoded) != 0) { 3376 if (sshbuf_len(decoded) != 0) {
diff --git a/sshkey.h b/sshkey.h
index 9314e8513..b010b8eb6 100644
--- a/sshkey.h
+++ b/sshkey.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: sshkey.h,v 1.5 2015/01/26 02:59:11 djm Exp $ */ 1/* $OpenBSD: sshkey.h,v 1.6 2015/05/21 04:55:51 djm Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 4 * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
@@ -164,6 +164,7 @@ int sshkey_from_blob(const u_char *, size_t, struct sshkey **);
164int sshkey_fromb(struct sshbuf *, struct sshkey **); 164int sshkey_fromb(struct sshbuf *, struct sshkey **);
165int sshkey_froms(struct sshbuf *, struct sshkey **); 165int sshkey_froms(struct sshbuf *, struct sshkey **);
166int sshkey_to_blob(const struct sshkey *, u_char **, size_t *); 166int sshkey_to_blob(const struct sshkey *, u_char **, size_t *);
167int sshkey_to_base64(const struct sshkey *, char **);
167int sshkey_putb(const struct sshkey *, struct sshbuf *); 168int sshkey_putb(const struct sshkey *, struct sshbuf *);
168int sshkey_puts(const struct sshkey *, struct sshbuf *); 169int sshkey_puts(const struct sshkey *, struct sshbuf *);
169int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *); 170int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *);
diff --git a/sshpty.c b/sshpty.c
index f7b1f6d64..0e32b392b 100644
--- a/sshpty.c
+++ b/sshpty.c
@@ -85,12 +85,12 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, size_t namebuflen)
85void 85void
86pty_release(const char *tty) 86pty_release(const char *tty)
87{ 87{
88#ifndef __APPLE_PRIVPTY__ 88#if !defined(__APPLE_PRIVPTY__) && !defined(HAVE_OPENPTY)
89 if (chown(tty, (uid_t) 0, (gid_t) 0) < 0) 89 if (chown(tty, (uid_t) 0, (gid_t) 0) < 0)
90 error("chown %.100s 0 0 failed: %.100s", tty, strerror(errno)); 90 error("chown %.100s 0 0 failed: %.100s", tty, strerror(errno));
91 if (chmod(tty, (mode_t) 0666) < 0) 91 if (chmod(tty, (mode_t) 0666) < 0)
92 error("chmod %.100s 0666 failed: %.100s", tty, strerror(errno)); 92 error("chmod %.100s 0666 failed: %.100s", tty, strerror(errno));
93#endif /* __APPLE_PRIVPTY__ */ 93#endif /* !__APPLE_PRIVPTY__ && !HAVE_OPENPTY */
94} 94}
95 95
96/* Makes the tty the process's controlling tty and sets it to sane modes. */ 96/* Makes the tty the process's controlling tty and sets it to sane modes. */
diff --git a/uidswap.c b/uidswap.c
index c339283af..0702e1d9e 100644
--- a/uidswap.c
+++ b/uidswap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: uidswap.c,v 1.37 2015/01/16 06:40:12 deraadt Exp $ */ 1/* $OpenBSD: uidswap.c,v 1.39 2015/06/24 01:49:19 dtucker Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -86,7 +86,7 @@ temporarily_use_uid(struct passwd *pw)
86 if (saved_egroupslen < 0) 86 if (saved_egroupslen < 0)
87 fatal("getgroups: %.100s", strerror(errno)); 87 fatal("getgroups: %.100s", strerror(errno));
88 if (saved_egroupslen > 0) { 88 if (saved_egroupslen > 0) {
89 saved_egroups = xrealloc(saved_egroups, 89 saved_egroups = xreallocarray(saved_egroups,
90 saved_egroupslen, sizeof(gid_t)); 90 saved_egroupslen, sizeof(gid_t));
91 if (getgroups(saved_egroupslen, saved_egroups) < 0) 91 if (getgroups(saved_egroupslen, saved_egroups) < 0)
92 fatal("getgroups: %.100s", strerror(errno)); 92 fatal("getgroups: %.100s", strerror(errno));
@@ -104,7 +104,7 @@ temporarily_use_uid(struct passwd *pw)
104 if (user_groupslen < 0) 104 if (user_groupslen < 0)
105 fatal("getgroups: %.100s", strerror(errno)); 105 fatal("getgroups: %.100s", strerror(errno));
106 if (user_groupslen > 0) { 106 if (user_groupslen > 0) {
107 user_groups = xrealloc(user_groups, 107 user_groups = xreallocarray(user_groups,
108 user_groupslen, sizeof(gid_t)); 108 user_groupslen, sizeof(gid_t));
109 if (getgroups(user_groupslen, user_groups) < 0) 109 if (getgroups(user_groupslen, user_groups) < 0)
110 fatal("getgroups: %.100s", strerror(errno)); 110 fatal("getgroups: %.100s", strerror(errno));
diff --git a/uuencode.c b/uuencode.c
index 294c74304..7fc867a11 100644
--- a/uuencode.c
+++ b/uuencode.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: uuencode.c,v 1.27 2013/05/17 00:13:14 djm Exp $ */ 1/* $OpenBSD: uuencode.c,v 1.28 2015/04/24 01:36:24 deraadt Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -82,7 +82,7 @@ dump_base64(FILE *fp, const u_char *data, u_int len)
82 fprintf(fp, "dump_base64: len > 65536\n"); 82 fprintf(fp, "dump_base64: len > 65536\n");
83 return; 83 return;
84 } 84 }
85 buf = xmalloc(2*len); 85 buf = xreallocarray(NULL, 2, len);
86 n = uuencode(data, len, buf, 2*len); 86 n = uuencode(data, len, buf, 2*len);
87 for (i = 0; i < n; i++) { 87 for (i = 0; i < n; i++) {
88 fprintf(fp, "%c", buf[i]); 88 fprintf(fp, "%c", buf[i]);
diff --git a/version.h b/version.h
index 94569acde..bff2b3bbb 100644
--- a/version.h
+++ b/version.h
@@ -1,6 +1,6 @@
1/* $OpenBSD: version.h,v 1.72 2015/03/04 18:53:53 djm Exp $ */ 1/* $OpenBSD: version.h,v 1.73 2015/07/01 01:55:13 djm Exp $ */
2 2
3#define SSH_VERSION "OpenSSH_6.8" 3#define SSH_VERSION "OpenSSH_6.9"
4 4
5#define SSH_PORTABLE "p1" 5#define SSH_PORTABLE "p1"
6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE 6#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE
diff --git a/xmalloc.c b/xmalloc.c
index cd59dc2e5..98cbf8776 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: xmalloc.c,v 1.31 2015/02/06 23:21:59 millert Exp $ */ 1/* $OpenBSD: xmalloc.c,v 1.32 2015/04/24 01:36:01 deraadt Exp $ */
2/* 2/*
3 * Author: Tatu Ylonen <ylo@cs.hut.fi> 3 * Author: Tatu Ylonen <ylo@cs.hut.fi>
4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland 4 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -56,22 +56,14 @@ xcalloc(size_t nmemb, size_t size)
56} 56}
57 57
58void * 58void *
59xrealloc(void *ptr, size_t nmemb, size_t size) 59xreallocarray(void *ptr, size_t nmemb, size_t size)
60{ 60{
61 void *new_ptr; 61 void *new_ptr;
62 size_t new_size = nmemb * size;
63 62
64 if (new_size == 0) 63 new_ptr = reallocarray(ptr, nmemb, size);
65 fatal("xrealloc: zero size");
66 if (SIZE_MAX / nmemb < size)
67 fatal("xrealloc: nmemb * size > SIZE_MAX");
68 if (ptr == NULL)
69 new_ptr = malloc(new_size);
70 else
71 new_ptr = realloc(ptr, new_size);
72 if (new_ptr == NULL) 64 if (new_ptr == NULL)
73 fatal("xrealloc: out of memory (new_size %zu bytes)", 65 fatal("xreallocarray: out of memory (%zu elements of %zu bytes)",
74 new_size); 66 nmemb, size);
75 return new_ptr; 67 return new_ptr;
76} 68}
77 69
diff --git a/xmalloc.h b/xmalloc.h
index 261dfd612..2bec77ba8 100644
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: xmalloc.h,v 1.14 2013/05/17 00:13:14 djm Exp $ */ 1/* $OpenBSD: xmalloc.h,v 1.15 2015/04/24 01:36:01 deraadt Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -18,7 +18,7 @@
18 18
19void *xmalloc(size_t); 19void *xmalloc(size_t);
20void *xcalloc(size_t, size_t); 20void *xcalloc(size_t, size_t);
21void *xrealloc(void *, size_t, size_t); 21void *xreallocarray(void *, size_t, size_t);
22char *xstrdup(const char *); 22char *xstrdup(const char *);
23int xasprintf(char **, const char *, ...) 23int xasprintf(char **, const char *, ...)
24 __attribute__((__format__ (printf, 2, 3))) 24 __attribute__((__format__ (printf, 2, 3)))