56bb889f7f57b26a72b1920f4095a9a3c08733b0
[openjpeg.git] / abi-check / changelog / openjpeg / current / log.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3     <head>
4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5     <meta name="keywords" content="OpenJPEG, current, changes, changelog" />
6     <meta name="description" content="Log of changes in the package" />
7     <link rel="stylesheet" type="text/css" href="../../../css/common.css" />
8     <link rel="stylesheet" type="text/css" href="../../../css/changelog.css" />
9     
10     
11     <title>
12         OpenJPEG current: changelog
13     </title>
14     
15     </head>
16
17 <body>
18 <table cellpadding='0' cellspacing='0'><tr><td align='center'><h1 class='tool'><a title='Home: ABI tracker for OpenJPEG' href='../../../timeline/openjpeg/index.html' class='tool'>ABI<br/>Tracker</a></h1></td><td width='30px;'></td><td><h1>(OpenJPEG)</h1></td></tr></table><hr/>
19 <br/>
20 <br/>
21 <h1>Changelog from Git</h1><br/><br/>
22 <div class='changelog'>
23 <pre class='wrap'>commit 3f0de88c7bf4e56826987aa7d3edb5acdd4399f2
24 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
25 Date:   2017-09-22 21:43:09 +0200
26
27     Remove opjstyle binary that went inadvertently committed in d4e54e9f35d532062533f1d369c159810b01d224 (#1026)
28
29 commit 3dfb01228b4f06a538c2a19352e34fd172e20fe3
30 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
31 Date:   2017-09-22 12:03:29 +0200
32
33     INSTALL.md: add instructions to build with Visual Studio (#1023, from Winfried instructions)
34
35 commit e5a561b5d86e6292832a7baefdcdf24e25821ae3
36 Merge: 4c8aba2 f92d30f
37 Author: Even Rouault &lt;even.rouault@mines-paris.org&gt;
38 Date:   2017-09-21 17:39:24 +0200
39
40     Merge pull request #1024 from stweil/warnings
41     
42     Add missing newline at end of file
43
44 commit f92d30f9e7340f50294cca438c1fb62fb4fb03dd
45 Author: Stefan Weil &lt;sw@weilnetz.de&gt;
46 Date:   2017-09-14 22:02:41 +0200
47
48     Add missing newline at end of file
49     
50     This fixes warnings from the clang compiler:
51     
52     /openjpeg/src/lib/openjp2/sparse_array.h:141:32: warning:
53      no newline at end of file [-Wnewline-eof]
54     
55     Signed-off-by: Stefan Weil &lt;sw@weilnetz.de&gt;
56
57 commit 4c8aba2add074c4a8101156037e9ca7051bc4baf
58 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
59 Date:   2017-09-21 14:37:01 +0200
60
61     Add assertion
62
63 commit 113e0976e232ac2110d50405f8629787f3f53cfc
64 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
65 Date:   2017-09-21 14:14:32 +0200
66
67     Comment dead code (Coverity CID 94681)
68
69 commit 39082fc6654553f43f6f3a73e0eeaedebc4bdf9f
70 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
71 Date:   2017-09-21 14:13:16 +0200
72
73     Workaround Coverity CID 113061
74
75 commit 7711307d865d46ca1bb8bb152071178b10066d05
76 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
77 Date:   2017-09-21 14:10:49 +0200
78
79     Workaround Coverity CID 169392
80
81 commit 19e157871ff28bb5e8296f9e9f9aee6a17a37ace
82 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
83 Date:   2017-09-21 14:06:03 +0200
84
85     opj_j2k_get_default_thread_count(): validate value of OPJ_NUM_THREADS to fix Coverity 179465 and 179463
86
87 commit 68e596dada2ee38a66b01494e5a425e623688300
88 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
89 Date:   2017-09-21 13:54:14 +0200
90
91     Fix copy&amp;paste error (Coverity CID 169394)
92
93 commit 16b701659d7d9f72aade1d695818a645e2f603a6
94 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
95 Date:   2017-09-20 01:06:02 +0200
96
97     opj_decompress: add a warning when -d and -t are used together (#693)
98
99 commit b8c4b450c4b5bec649463573f57235c4f41c57cd
100 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
101 Date:   2017-09-20 00:55:22 +0200
102
103     Use a #define J2K_MAX_POCS 32 to avoid hard-coded constant (#349)
104
105 commit 9cba05762ded66b803df94b00adbd5a97727da95
106 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
107 Date:   2017-09-20 00:43:54 +0200
108
109     Avoid index-out-of-bounds access when invoking opj_compress with -n 11 or higher. But not a proper fix itself (refs #493)
110
111 commit 8df07d5866c9e3517bf04a7abee4a07a04735df4
112 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
113 Date:   2017-09-19 18:35:52 +0200
114
115     Avoid relying on operator precedence (raised by cppcheck)
116
117 commit c22ea12219c711031ef9b5823f2d9eb1081261e9
118 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
119 Date:   2017-09-19 18:35:31 +0200
120
121     Workaroudn cppcheck (correct) warning about same code in then and else branches
122
123 commit c84e594cffb181b96f522becf1ba0302e2cc6da7
124 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
125 Date:   2017-09-19 18:35:07 +0200
126
127     Fix badly named variable in function prototype (raised by cppcheck)
128
129 commit 82ab7effe3e65b989ee8e97719ceca71908b16ed
130 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
131 Date:   2017-09-19 18:34:49 +0200
132
133     Remove redundant test (raised by cppcheck)
134
135 commit ce8edf9bffb8caae5480b862a04b66e0e355394b
136 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
137 Date:   2017-09-19 18:25:55 +0200
138
139     Replace  C++ style comments by C ones
140
141 commit d415723fd9f2ee415e506e94ee8be8127680fdcd
142 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
143 Date:   2017-09-19 18:22:07 +0200
144
145     Replace  C++ style comments by C ones
146
147 commit ce199f42e77f972d6ee782b63492f6d861891053
148 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
149 Date:   2017-09-19 12:48:12 +0200
150
151     src/bin/jp3d/convert.c: add missing fclose() in error code path (#1018)
152
153 commit fdef69b43ce5222ac0f2a87f2fad1442ece340e8
154 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
155 Date:   2017-09-19 12:46:20 +0200
156
157     Fix warnings and errors when compiling with a c++ compiler (#1021)
158
159 commit 18f6696372f4c32334385f8dcc8d39ad8ac24601
160 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
161 Date:   2017-09-19 12:13:34 +0200
162
163     Fix compilation with AppleClang 8.1.0.8020042 (#1020)
164
165 commit 3dfc6ca2bcf06fd1adb6b6b4cecc6c092f08ba0b
166 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
167 Date:   2017-09-17 12:17:49 +0200
168
169     Build: make sure that -DBUILD_SHARED_LIBS:bool=off is honoured to build only the static lib (#1019)
170
171 commit 28094e1ebfa420f9a0bdc7a11b8d4ee5f154db35
172 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
173 Date:   2017-09-08 10:56:49 +0200
174
175     opj_tcd_mct_decode(): avoid heap buffer overflow when components have not the same number of resolutions. Also fixes an issue with subtile decoding. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3331. Credit to OSS Fuzz
176
177 commit 33167ddc13fd20313ccfcdc64141000407b68b8f
178 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
179 Date:   2017-09-08 09:53:52 +0200
180
181     opj_j2k_update_image_data(): restrict optimized path
182
183 commit b73ce715d2a484d7355639d863d0418a0e5b8858
184 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
185 Date:   2017-09-08 09:16:51 +0200
186
187     Use opj_image_data_free() where appropriate (adapted from https://github.com/uclouvain/openjpeg/pull/1015/commits/dab9db0723a5bb9f3d745f9dd7a0b8b3b18b8054, #1014)
188
189 commit 5abd86b14bb26d1882ee1c07b03f809f85162a5d
190 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
191 Date:   2017-09-07 18:01:33 +0200
192
193     Properly fix cc893a4ebfaf8c42cf1221ac82c83df91e77340b to avoid heap-buffer-overflow when numcomps &lt; 3
194
195 commit 51a1dcaa6ed5713520dca36fc58cd9240c08b7ca
196 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
197 Date:   2017-09-07 17:52:59 +0200
198
199     Avoid malloc poisoning issue when including &lt;pthread.h&gt; of uclibc (#1013)
200
201 commit cc893a4ebfaf8c42cf1221ac82c83df91e77340b
202 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
203 Date:   2017-09-07 15:32:54 +0200
204
205     opj_tcd_mct_decode(): fix checks to verify MCT can be done safely. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3305 (master only)
206
207 commit c67e1cd73f6c1fca081f5445af4f65b240c40edc
208 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
209 Date:   2017-09-06 17:33:38 +0200
210
211     Fix invalid access out of bounds, and bad behaviour, when calling repeatdly opj_get_decoded_tile() on an image with a color palette
212
213 commit 297f202104fc0ff6b0627e15e7e6883c915f80bf
214 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
215 Date:   2017-09-06 16:49:28 +0200
216
217     Fix 2.2.0 regression when reading codestream with reperated calls to opj_get_decoded_tile() where tile parts of a same tile are not consecutive
218     
219     This check was introduced per #939, but relied on the incorrect assumption
220     we decode all the tile parts of all tiles.
221
222 commit 003759a4829f3f1baa5a2292956618fecf314818
223 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
224 Date:   2017-09-06 15:59:19 +0200
225
226     Fix null pointer dereference on partial tile decoding when they are empty. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3297 (master only)
227
228 commit e656822f927c869f31f2685c67644eacb75fc5d2
229 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
230 Date:   2017-09-05 23:32:03 +0200
231
232     Add knownfailures-Ubuntu12.04-gcc4.6.3-x86_64-Release-3rdP.txt
233     
234     For some reason, the OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release OPJ_NUM_THREADS=2
235     configuration fails once PR1010 has been merged in master
236     ( https://travis-ci.org/uclouvain/openjpeg/jobs/272219011 ) whereas (almost) the same
237     code in my branch didn't fail per https://travis-ci.org/rouault/openjpeg/jobs/271738113
238     
239     The errors we get are the same as with the other x86_64 compilers, so nothing alarming here.
240
241 commit 968e36bbd989fdf789c6a02c80c747346bb851c5
242 Merge: 3a382d3 579b893
243 Author: Even Rouault &lt;even.rouault@mines-paris.org&gt;
244 Date:   2017-09-05 22:18:58 +0200
245
246     Merge pull request #1010 from rouault/subtile_decoding_stage3
247     
248     Subtile decoding: memory use reduction and perf improvements
249
250 commit 579b8937eae7e6b6868b8b5c6286a742c10a5130
251 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
252 Date:   2017-09-04 17:35:52 +0200
253
254     Replace uses of size_t by OPJ_SIZE_T
255
256 commit 3a382d312306f45853b3ad78b770754d4bc7e440
257 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
258 Date:   2017-09-03 00:30:36 +0200
259
260     opj_getopt.c: avoid crash on invalid input (#301)
261
262 commit e5ab1682a1bf52c203b16720011d869901929ac9
263 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
264 Date:   2017-09-02 09:10:53 +0200
265
266     Improve error message when specifying a too big cp_reduce parameter (#474)
267
268 commit c1e0fba0c46cb528a08b89b986e86ff0f4792558
269 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
270 Date:   2017-09-01 22:09:58 +0200
271
272     opj_v4dwt_decode_step1_sse(): rework a bit to improve code generation
273
274 commit 676d4c807f0162877f9f32e4cdda2e242788d410
275 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
276 Date:   2017-09-01 21:36:35 +0200
277
278     opj_j2k_update_image_data(): avoid allocating image buffer if we can just reuse the tile buffer one
279
280 commit 4c7effa6bc37beb2a8e2f29ecf5845cde93f6b88
281 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
282 Date:   2017-09-01 21:17:26 +0200
283
284     opj_t1_clbl_decode_processor(): use SSE2 in subtile decoding code path, for irreversible
285
286 commit 2c365fe0ecc8c6597db491a953a91308b1d0d4b1
287 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
288 Date:   2017-09-01 20:43:39 +0200
289
290     Replace error message 'Not enough memory for tile data' by 'Size of tile data exceeds system limits' (refs https://github.com/uclouvain/openjpeg/pull/730#issuecomment-326654188)
291
292 commit 559d16e8f43a0cd090d217d7d111820989299b85
293 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
294 Date:   2017-09-01 16:31:13 +0200
295
296     opj_t1_decode_cblk(): move some code to codeblock processor for (theoretical) better multi-threading in subtile decoding
297
298 commit 7017e67a01c378a7a1ee5e34dd544c793b5c23e4
299 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
300 Date:   2017-09-01 16:31:10 +0200
301
302     sparse_array: optimizations for lossy case
303
304 commit b428b8c7e7227cf96c83229df4d7bf009b6d2172
305 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
306 Date:   2017-09-01 20:01:39 +0200
307
308     opj_tcd_rateallocate(): make sure to use all passes for a lossless layer (#1009)
309     
310     And save a useless loop, which should be a tiny faster.
311
312 commit 7aa071aa273aa0b8fafbf055e5eb99b9cb8600a8
313 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
314 Date:   2017-09-01 19:49:01 +0200
315
316     opj_j2k_setup_encoder(): emit warnings if tcp_rates are not decreasing or tcp_distoratio are not increasing (#1009)
317
318 commit a538815c774db94a0d3fa323c9ca4f456ef04903
319 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
320 Date:   2017-09-01 19:27:56 +0200
321
322     opj_j2k_setup_encoder(): avoid potential int overflow in computations related to max_cs_size
323
324 commit 09929bb615bd6bf2a9f7703fc7b04a12096b091e
325 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
326 Date:   2017-09-01 19:16:35 +0200
327
328     opj_compress help: revert 32572617765cb9d77302384653a48d793b8f657f and indicate 1 again as being the value to get lossless for -r. In opj_j2k_setup_encoder(), make sure that ll rates[] &lt;= 1.0 are set to 0. Document 0 as being lossless for -q / tcp_distoratio (#1009)
329
330 commit 32572617765cb9d77302384653a48d793b8f657f
331 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
332 Date:   2017-09-01 17:32:54 +0200
333
334     opj_compress help: indicate 0 value, instead of 1, for -r parameter to get lossless encoding (#1009)
335
336 commit 8a17be8945f6f8fcae3f9e5c7c4988e971d245ee
337 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
338 Date:   2017-09-01 16:31:08 +0200
339
340     opj_v4dwt_decode_step2_sse(): loop unroll
341
342 commit 83b5a168ec0e89210671d60670c9a1143ce8776b
343 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
344 Date:   2017-09-01 16:31:06 +0200
345
346     opj_dwt_decode_partial_97(): simplify/more efficient use of sparse arrays in vertical pass
347
348 commit ae19001ba425a9b396a29fba3417dccc746bd2ef
349 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
350 Date:   2017-09-01 16:31:04 +0200
351
352     opj_tcd_dc_level_shift_decode(): optimize lossy case
353
354 commit 470f3ed416a8cc3618b2c04000ea7b4694043f34
355 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
356 Date:   2017-09-01 16:31:02 +0200
357
358     opj_dwt_decode_partial_1_parallel(): add SSE2 optimization
359
360 commit 873004c615b1bed3ce780e869288602af86fdee5
361 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
362 Date:   2017-09-01 16:31:00 +0200
363
364     Sub-tile decoding: speed up vertical pass in IDWT5x3 by processing 4 cols at a time
365
366 commit ccac773556070ede24ea3dfbdec47c2b3c5be5c4
367 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
368 Date:   2017-09-01 16:30:58 +0200
369
370     Tiny perf improvement in T1 stage for subtile decoding
371
372 commit 18635df518602265b71da3c70c4d3b774bc3dfc2
373 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
374 Date:   2017-09-01 16:30:56 +0200
375
376     test_decode_area: accept user bounds in -strip_height mode
377
378 commit 82a43d8035ca5f43e198e15faef6c9ac44b39541
379 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
380 Date:   2017-09-01 16:30:54 +0200
381
382     Optimize opj_dwt_decode_partial_1() when cas == 0
383
384 commit 1644665a9105e2d761e8b29f43af602560e6bcf9
385 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
386 Date:   2017-09-01 16:30:52 +0200
387
388     opj_j2k_update_image_data(): avoid zero-ing the buffer if not needed
389
390 commit b2cc8f7f81242f967b65e76de043e5e31663d793
391 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
392 Date:   2017-09-01 16:30:50 +0200
393
394     Optimize reading/write into sparse array
395
396 commit 6ce49bf5aebb3c45c464fa82d14cfd4bf7026a28
397 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
398 Date:   2017-09-01 10:26:18 +0200
399
400     Fix undefined shift behaviour in opj_dwt_is_whole_tile_decoding(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3255. Credit to OSS Fuzz
401
402 commit 04b70908a7ada29481d2e1903b76f44a68d4d268
403 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
404 Date:   2017-08-29 11:40:53 +0200
405
406     Use IDWT whole tile decoding if the area of interest equals to the image bounds, taking into account the reduced resolution factor
407
408 commit 4776b15fa7ec2afa74f65cd471f94513ea08205a
409 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
410 Date:   2017-08-28 18:07:44 +0200
411
412     Add test for fix of a55c024fc6b917a409b85aeafd7326421c4aea34
413
414 commit a55c024fc6b917a409b85aeafd7326421c4aea34
415 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
416 Date:   2017-08-28 17:18:33 +0200
417
418     Subtile decoding: fix overflows in subband coordinate computation that cause later buffer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3115. Credit to OSS Fuzz. master only
419
420 commit 8f92fc97913bec7ffa2dc10d062c0cdd19da20e4
421 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
422 Date:   2017-08-28 14:57:49 +0200
423
424     Make opj_set_decode_area() and opj_decode() take into account opj_set_decoded_resolution_factor() (#1006, affect API use)
425     
426     * Better document usage of opj_set_decode_area(), ie expecting coordinates
427       in full resolution/reference grid even if requesting at a lower resolution
428       factor
429     * Make sure that image-&gt;comps[].factor is set by opj_set_decode_area() and
430       opj_decode() from the value specified in opj_set_decoded_resolution_factor()
431     * opj_decompress: add 2 environmenet variables to test alternate ways of
432       using the API, namely USE_OPJ_SET_DECODED_RESOLUTION_FACTOR=YES to use
433       opj_set_decoded_resolution_factor() instead of parameters.cp_reduce, and
434       SKIP_OPJ_SET_DECODE_AREA=YES to not call opj_set_decode_area() if -d is
435       not specified.
436
437 commit 5a4a10120a648848de7522245f8671c3ce285dbc
438 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
439 Date:   2017-08-24 14:38:24 +0200
440
441     Another cleanup in knownfailures-* files
442
443 commit e0a5d148f7e84d18a52c97bd08b21b1dffa9570a
444 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
445 Date:   2017-08-24 14:32:36 +0200
446
447     Remove test steps from specialized knownfailures- that are already in knownfailures-all.txt
448
449 commit 79aa0b54ddd3e4e3ca09374cb82bd3302a65783a
450 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
451 Date:   2017-08-24 14:31:13 +0200
452
453     issue104_jpxstream.jp2 decompresses just fine (and like Kakadu). Update md5refs.txt and remove from knownfailures
454
455 commit c059f431e6262fe5ce296e8137dd478dfe4d1af1
456 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
457 Date:   2017-08-24 14:09:34 +0200
458
459     Remove broken.jpc test from known failures, by avoiding too long processing time
460
461 commit 5146abc02ebd871aa1e737373cdc7654e8e4b07f
462 Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
463 Date:   2017-08-24 14:09:31 +0200
464
465     imagetopgx(): improve performance in 8 bit case (relates to broken.jpc test case)
466
467 ...</pre></div>
468
469 </body>
470 </html>