1 |
2008-03-06 Wakaba <wakaba@suika.fam.cx> |
2 |
|
3 |
* HTML.pm.src: <html> treatement refined (HTML5 revision 1314). |
4 |
|
5 |
2008-03-05 Wakaba <wakaba@suika.fam.cx> |
6 |
|
7 |
* HTML.pm.src: Since the case t268 should never be reached (no |
8 |
other token type, there are), it is replaced by a |die| statement. |
9 |
|
10 |
2008-03-05 Wakaba <wakaba@suika.fam.cx> |
11 |
|
12 |
* HTML.pm.src: Typo fixed. |
13 |
|
14 |
2008-03-04 Wakaba <wakaba@suika.fam.cx> |
15 |
|
16 |
* HTML.pm.src (_tree_construction_initial): Some limited quirks |
17 |
doctypes were not uppercased for comparison. |
18 |
|
19 |
2008-03-03 Wakaba <wakaba@suika.fam.cx> |
20 |
|
21 |
* HTML.pm.src (tree construction and set_inner_html): Checkpoints |
22 |
are added. |
23 |
|
24 |
2008-03-03 Wakaba <wakaba@suika.fam.cx> |
25 |
|
26 |
* HTML.pm.src (_tokenize_attempt_to_consume_an_entity): Checkpoints |
27 |
are set. Cases that are unlikely reached are noted as so. |
28 |
|
29 |
2008-03-03 Wakaba <wakaba@suika.fam.cx> |
30 |
|
31 |
* HTML.pm.src: Checkpoints for debugging are added. |
32 |
|
33 |
* mkhtmlparser.pl: Support for |!!!cp| syntax. |
34 |
|
35 |
2008-03-03 Wakaba <wakaba@suika.fam.cx> |
36 |
|
37 |
* HTML.pm.src, mkhtmlparser.pl: s/_input_character/_char/g |
38 |
for simplicity. |
39 |
|
40 |
2008-03-03 Wakaba <wakaba@suika.fam.cx> |
41 |
|
42 |
* HTML.pm.src: Flag name changed: s/correct/force-quirks/g (HTML5 |
43 |
revision 1307). |
44 |
|
45 |
2008-03-03 Wakaba <wakaba@suika.fam.cx> |
46 |
|
47 |
* HTML.pm.src (_get_next_token): Where the /incorrect/ flag |
48 |
is set are changed (HTML5 revision 1305). |
49 |
|
50 |
2008-03-02 Wakaba <wakaba@suika.fam.cx> |
51 |
|
52 |
* HTML.pm.src: Raise a parse error for |<span ===>| (HTML5 revision |
53 |
1292). Entities are not parsed in comment-like part in RCDATA |
54 |
elements (HTML5 revision 1294). Allow bare & at the end |
55 |
of attribute value literals (HTML5 revision 1296). More |
56 |
quirks mode doctypes (HTML5 revision 1302). Requires spaces |
57 |
between attributes and ban attribute names or unquoted |
58 |
attribute values containing single or double quotes (HTML5 |
59 |
revision 1303). |
60 |
|
61 |
2008-03-02 Wakaba <wakaba@suika.fam.cx> |
62 |
|
63 |
* ContentChecker.pm: Typo fixed. Don't raise "character encoding" |
64 |
and related errors unless it is an HTML document (though the spec |
65 |
is unclear on whether it is applied to XHTML document). |
66 |
|
67 |
* HTML.pm (%HTMLAttrStatus): WF2 repetition model attributes |
68 |
are added. |
69 |
|
70 |
2008-03-02 Wakaba <wakaba@suika.fam.cx> |
71 |
|
72 |
* HTML.pm.src: s/local_name/manakai_local_name/g. |
73 |
|
74 |
2008-03-01 Wakaba <wakaba@suika.fam.cx> |
75 |
|
76 |
* _NamedEntityList.pm: Updated (HTML5 revision 1286). |
77 |
|
78 |
* HTML.pm.src: |charset| in |content| attribute is |
79 |
case-insensitive (HTML5 revision 1270). |
80 |
|
81 |
2008-02-26 Wakaba <wakaba@suika.fam.cx> |
82 |
|
83 |
* ContentChecker.pm: New status constants are added. |
84 |
($ElementDefault): |status| added. |
85 |
(check_element): Err for non-standard or deprecated elements. |
86 |
(_attr_status_info): For non-standard or deprecated attributes. |
87 |
|
88 |
2008-02-24 Wakaba <wakaba@suika.fam.cx> |
89 |
|
90 |
* ContentChecker.pm (_attr_status_info): New internal method. |
91 |
|
92 |
2008-02-24 Wakaba <wakaba@suika.fam.cx> |
93 |
|
94 |
* ContentChecker.pm (check_element): Element standardized |
95 |
status information is now dispatched. |
96 |
|
97 |
2008-02-24 Wakaba <wakaba@suika.fam.cx> |
98 |
|
99 |
* ContentChecker.pm (check_element): Fix |del|-and-significant |
100 |
problem by adding some more arguments. |
101 |
|
102 |
2008-02-24 Wakaba <wakaba@suika.fam.cx> |
103 |
|
104 |
* ContentChecker.pm (check_element): Use context of |
105 |
container-for-the-purpose-of-content-model element (not transparent |
106 |
element) for |check_child_element| calling and significant |
107 |
text flag marking. This reintroduces |<del>|-and-significant |
108 |
problem again. |
109 |
|
110 |
2008-02-24 Wakaba <wakaba@suika.fam.cx> |
111 |
|
112 |
* ContentChecker.pm (check_element): Make semi-transparent |
113 |
elements ignored for the purpose of phase changes in |
114 |
content model checking. |
115 |
|
116 |
2008-02-23 Wakaba <wakaba@suika.fam.cx> |
117 |
|
118 |
* ContentChecker.pm (check_element): In-element state |
119 |
was not properly managed for transparent cases. |
120 |
|
121 |
2008-02-23 Wakaba <wakaba@suika.fam.cx> |
122 |
|
123 |
* ContentChecker.pm (check_element): Support for |video| |
124 |
and |audio| as semi-transparent elements. |
125 |
|
126 |
2008-02-23 Wakaba <wakaba@suika.fam.cx> |
127 |
|
128 |
* ContentChecker.pm ($HTMLSemiTransparentElements): New. |
129 |
(check_element): s/minuses/minus_elements/, s/pluses/plus_elements/. |
130 |
Support for |html:object| as a semi-transparent element. |
131 |
|
132 |
2008-02-23 Wakaba <wakaba@suika.fam.cx> |
133 |
|
134 |
* ContentChecker.pm (check_element): The way to traverse |
135 |
the tree is entirely revised to make it easier to track |
136 |
the state of ancestors/descendants. As a result of this |
137 |
revision (which rewrites almost all of Whatpm::ContentChecker::HTML), |
138 |
support for content model checking for HTML elements |figure|, |
139 |
|object|, |video|, and |audio| and checking for XML elements (and |
140 |
some XMLNS checkings) are dropped for now. They will be |
141 |
reimplemented in due cource. |
142 |
|
143 |
2008-02-17 Wakaba <wakaba@suika.fam.cx> |
144 |
|
145 |
* HTML.pm.src: |>| in public or system literal closes the DOCTYPE |
146 |
token (HTML5 revision 1225). |
147 |
|
148 |
2008-02-17 Wakaba <wakaba@suika.fam.cx> |
149 |
|
150 |
* ContentChecker.pm ({unsupported_level}): New value. |
151 |
|
152 |
* HTML.pm.src: Save whether |meta| |content| attribute |
153 |
contains character references or not. |
154 |
|
155 |
2008-02-17 Wakaba <wakaba@suika.fam.cx> |
156 |
|
157 |
* ContentChecker.pm (_get_children): (Incompleted) attempt to |
158 |
imlement significant content checking for contents |
159 |
with |del| elements. |
160 |
|
161 |
2008-02-17 Wakaba <wakaba@suika.fam.cx> |
162 |
|
163 |
* ContenteChecker.pm ($HTMLTransparentElements): More |
164 |
elements are added. |
165 |
(_get_children): HTML |object| elements are now semi-transparent. |
166 |
|
167 |
* NanoDOM.pm (manakai_html, manakai_head): New methods. |
168 |
|
169 |
2008-02-16 Wakaba <wakaba@suika.fam.cx> |
170 |
|
171 |
* CacheManifest.pm: HTML5 revision 1211 implemented. |
172 |
|
173 |
* CacheManifest.pod: Updated. |
174 |
|
175 |
2008-02-10 Wakaba <wakaba@suika.fam.cx> |
176 |
|
177 |
* ContentChecker.pm (check_document, check_element): Support |
178 |
for second argument ($onsubdoc). |
179 |
(_get_css_parser): Removed (now it is part of WDCC). |
180 |
|
181 |
2008-02-09 Wakaba <wakaba@suika.fam.cx> |
182 |
|
183 |
* ContentChecker.pm (_get_css_parser): New. |
184 |
|
185 |
2007-11-25 Wakaba <wakaba@suika.fam.cx> |
186 |
|
187 |
* ContentChecker.pm ($AnyChecker): Old way to add child elements |
188 |
for checking had been used. |
189 |
|
190 |
2007-11-25 Wakaba <wakaba@suika.fam.cx> |
191 |
|
192 |
* ContentChecker.pm (check_element): New todo item type |descendant|. |
193 |
|
194 |
2007-11-23 Wakaba <wakaba@suika.fam.cx> |
195 |
|
196 |
* IMTChecker.pm: Revised to raise errors and warnings as (poorly) |
197 |
specced in RFC 2046 and RFC 4288. |
198 |
(application/atom+xml): Definition added. |
199 |
|
200 |
2007-11-23 Wakaba <wakaba@suika.fam.cx> |
201 |
|
202 |
* URIChecker.pm: Make RFC 3986 should-level errors |
203 |
warnings (rather than SHOULD-level errors). |
204 |
|
205 |
2007-11-23 Wakaba <wakaba@suika.fam.cx> |
206 |
|
207 |
* NanoDOM.pm (get_user_data, set_user_data): New methods. |
208 |
|
209 |
* HTML.pm.src: A flag for character references in attribute |
210 |
values are added. Set |manakai_has_reference| user data |
211 |
to |charset| attribute. |
212 |
|
213 |
2007-11-23 Wakaba <wakaba@suika.fam.cx> |
214 |
|
215 |
* NanoDOM.pm (input_encoding, manakai_charset, manakai_has_bom): New |
216 |
attributes. |
217 |
|
218 |
* ContentChecker.pm (check_document): Warn if charset requirements |
219 |
cannot be tested. |
220 |
|
221 |
2007-11-19 Wakaba <wakaba@suika.fam.cx> |
222 |
|
223 |
* HTML.pm.src (parse_byte_string): Detect charset |
224 |
by universalchardet if charset parameter is not specified. |
225 |
|
226 |
* Makefile (Charset-all, Charset-clean): New rules. |
227 |
|
228 |
2007-11-18 Wakaba <wakaba@suika.fam.cx> |
229 |
|
230 |
* ContentChecker.pm (check_document): Check the existence |
231 |
of character encoding declaration and selection of encoding |
232 |
for HTML document. |
233 |
|
234 |
2007-11-18 Wakaba <wakaba@suika.fam.cx> |
235 |
|
236 |
* ContentType.pm (get_sniffed_type): Return also the official |
237 |
type in list context. |
238 |
|
239 |
2007-11-18 Wakaba <wakaba@suika.fam.cx> |
240 |
|
241 |
* ContentType.pm: Sniffing with leading white space |
242 |
ignoring (HTML5 revisions 1013 and 1016). |
243 |
|
244 |
2007-11-18 Wakaba <wakaba@suika.fam.cx> |
245 |
|
246 |
* ContentType.pm: HTML5 revision 1013 changes, except for leading |
247 |
white spaces, are implemented. |
248 |
|
249 |
2007-11-11 Wakaba <wakaba@suika.fam.cx> |
250 |
|
251 |
* HTML.pm.src (parse_char_string): Set |inner_encoding| |
252 |
attribute if possible. |
253 |
|
254 |
2007-11-11 Wakaba <wakaba@suika.fam.cx> |
255 |
|
256 |
* HTML.pm.src (parse_byte_string): New method. |
257 |
(parse_char_string): New alias for |parse_string|. |
258 |
(main phase): Invoking "change the encoding" algorithm if desired. |
259 |
|
260 |
* HTML.pod: Updated. |
261 |
|
262 |
2007-11-11 Wakaba <wakaba@suika.fam.cx> |
263 |
|
264 |
* HTML.pod (get_inner_html): Removed. |
265 |
|
266 |
* Makefile (HTML-all, HTML-clean): New. |
267 |
|
268 |
2007-11-11 Wakaba <wakaba@suika.fam.cx> |
269 |
|
270 |
* HTML.pm.src (get_inner_html): Removed (moved to HTML/Serializer.pm). |
271 |
|
272 |
2007-11-08 Wakaba <wakaba@suika.fam.cx> |
273 |
|
274 |
* mklinktypelist.pl: s/noreferer/noreferrer/ (HTML5 revision 1132). |
275 |
|
276 |
2007-11-04 Wakaba <wakaba@suika.fam.cx> |
277 |
|
278 |
* Makefile: |CacheManifest.html| is added. |
279 |
|
280 |
* CacheManifest.pod: New file. |
281 |
|
282 |
2007-11-04 Wakaba <wakaba@suika.fam.cx> |
283 |
|
284 |
* CacheManifest.pm: New module. |
285 |
|
286 |
2007-11-04 Wakaba <wakaba@suika.fam.cx> |
287 |
|
288 |
* HTML.pm.src: Support for application cache selection algorithm |
289 |
callback. |
290 |
|
291 |
2007-11-04 Wakaba <wakaba@suika.fam.cx> |
292 |
|
293 |
* mklinktypelist.pl: Support for rel=noreferer (HTML5 revision 1118). |
294 |
|
295 |
2007-10-17 Wakaba <wakaba@suika.fam.cx> |
296 |
|
297 |
* Makefile (clean): New rule. |
298 |
|
299 |
* NanoDOM.pm (public_id, system_id): New attributes. |
300 |
|
301 |
2007-10-17 Wakaba <wakaba@suika.fam.cx> |
302 |
|
303 |
* Makefile (CSS-all, CSS-clean, clean): New rules. |
304 |
|
305 |
2007-10-14 Wakaba <wakaba@suika.fam.cx> |
306 |
|
307 |
* ContentChecker.pm (check_document): Support for |
308 |
new |is_xml_root| flag. |
309 |
(check_element): Support for new |pluses| state. |
310 |
(_add_pluses): New method. |
311 |
(_remove_minuses): Support for new |minus| item. |
312 |
|
313 |
2007-09-24 Wakaba <wakaba@suika.fam.cx> |
314 |
|
315 |
* ContentChecker.pm: Raise specific error for invalid |
316 |
root element. |
317 |
|
318 |
2007-09-24 Wakaba <wakaba@suika.fam.cx> |
319 |
|
320 |
* ContentChecker.pm: Set level values for later uses. |
321 |
|
322 |
2007-09-09 Wakaba <wakaba@suika.fam.cx> |
323 |
|
324 |
* ContentChecker.pm: Support for language tag validation. |
325 |
|
326 |
2007-09-09 Wakaba <wakaba@suika.fam.cx> |
327 |
|
328 |
* LangTag.pm (check_rfc3066_language_tag): New method. |
329 |
|
330 |
2007-09-09 Wakaba <wakaba@suika.fam.cx> |
331 |
|
332 |
* LangTag.pm: New module. |
333 |
|
334 |
2007-09-04 Wakaba <wakaba@suika.fam.cx> |
335 |
|
336 |
* HTML.pm.src: Some error types were wrong. |
337 |
|
338 |
2007-08-17 Wakaba <wakaba@suika.fam.cx> |
339 |
|
340 |
* CSS/: New directory. |
341 |
|
342 |
2007-08-17 Wakaba <wakaba@suika.fam.cx> |
343 |
|
344 |
* ContentChecker.pm (_check_get_children): Support |
345 |
for |noscript| in |head|. |
346 |
|
347 |
2007-08-12 Wakaba <wakaba@suika.fam.cx> |
348 |
|
349 |
* URI/: New directory. |
350 |
|
351 |
2007-08-11 Wakaba <wakaba@suika.fam.cx> |
352 |
|
353 |
* HTML.pm.src: Tokenizer's states are now represented in |
354 |
number. |
355 |
|
356 |
2007-08-11 Wakaba <wakaba@suika.fam.cx> |
357 |
|
358 |
* HTML.pm.src: |or|s for insertion modes are replaced |
359 |
by |&|s. |
360 |
|
361 |
2007-08-11 Wakaba <wakaba@suika.fam.cx> |
362 |
|
363 |
* HTML.pm.src: Token types are now represented in number. |
364 |
|
365 |
2007-08-11 Wakaba <wakaba@suika.fam.cx> |
366 |
|
367 |
* ContentType.pm (SEE ALSO): Updated. |
368 |
|
369 |
* HTML.pm.src: Insertion modes are now represented in number. |
370 |
|
371 |
2007-08-11 Wakaba <wakaba@suika.fam.cx> |
372 |
|
373 |
* ContentType.pm: Sniffing for bitmap images (HTML5 revision |
374 |
999) is implemented. |
375 |
|
376 |
2007-08-08 Wakaba <wakaba@suika.fam.cx> |
377 |
|
378 |
* ContentType.pm: Sniffing for |<script| (HTML5 revision |
379 |
983) is implemented. |
380 |
|
381 |
2007-08-06 Wakaba <wakaba@suika.fam.cx> |
382 |
|
383 |
* ContentChecker.pod: New documentation. |
384 |
|
385 |
* Makefile: A rule for |ContentChecker.html| is added. |
386 |
|
387 |
* ContentChecker.pm: A pod "LICENSE" section is added. |
388 |
|
389 |
* NanoDOM.pm ($VERSION): New variable. |
390 |
|
391 |
2007-08-05 Wakaba <wakaba@suika.fam.cx> |
392 |
|
393 |
* H2H.pm: |b|, |i|, and |sub| are added to the |
394 |
list of allowed HTML elements. |
395 |
|
396 |
2007-08-05 Wakaba <wakaba@suika.fam.cx> |
397 |
|
398 |
* H2H.pm: |samp| is added to the list of allowed |
399 |
HTML elements. |
400 |
|
401 |
* URIChecker.pm (check_iri): New. |
402 |
(check_iri_reference): Error type for IRI reference |
403 |
syntax error is changed. |
404 |
|
405 |
2007-08-04 Wakaba <wakaba@suika.fam.cx> |
406 |
|
407 |
* ContentChecker.pm: Reference to the |Whatpm::ContentChecker::Atom| |
408 |
is added. |
409 |
(check_document): Load appropriate module before validation. |
410 |
|
411 |
2007-08-04 Wakaba <wakaba@suika.fam.cx> |
412 |
|
413 |
* ContentChecker/: New directory. |
414 |
|
415 |
2007-08-04 Wakaba <wakaba@suika.fam.cx> |
416 |
|
417 |
* ContentChecker.pm: HTML |time| element is implemented. |
418 |
|
419 |
* HTMLTable.pm: Comments are updated as HTML5 is revised. |
420 |
|
421 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
422 |
|
423 |
* ContentChecker.pm (check_document): Return value |
424 |
even if no document element is found. |
425 |
|
426 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
427 |
|
428 |
* HTML.pm.src: |$in_body| is no longer a function. |
429 |
|
430 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
431 |
|
432 |
* HTML.pm.src: The |$in_body| code has been moved down. |
433 |
|
434 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
435 |
|
436 |
* HTML.pm.src: The "trailing end" insertion mode |
437 |
is split into "after html body" and "after html frameset" |
438 |
insertion modes. Their codes are merged with "after body" |
439 |
and "after frameset" codes. |$previous_insertion_mode| |
440 |
has been removed. "after frameset" code is |
441 |
merged with "in frameset" code. |
442 |
|
443 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
444 |
|
445 |
* HTML.pm.src: The "before head" insertion mode is |
446 |
merged with the "in head" insertion mode. |
447 |
|
448 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
449 |
|
450 |
* HTML.pm.src: Cases in "in head" insertion mode are |
451 |
reorganized. |
452 |
|
453 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
454 |
|
455 |
* HTML.pm.src: Some cases in "in table" insertion mode |
456 |
are merged. |
457 |
|
458 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
459 |
|
460 |
* HTML.pm.src: The "in row" insertion mode is merged |
461 |
with "in table" insertion mode. |
462 |
|
463 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
464 |
|
465 |
* HTML.pm.src: The "in table" and "in table body" insertion |
466 |
modes are merged. |
467 |
|
468 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
469 |
|
470 |
* HTML.pm.src: There is no "in table head" or "in table foot" |
471 |
insertion mode! |
472 |
|
473 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
474 |
|
475 |
* HTML.pm.src: |<noframes>| "in frameset" and "in noframes" |
476 |
now directly invoke the handler. |
477 |
|
478 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
479 |
|
480 |
* HTML.pm.src: Codes for "in cell" insertion mode |
481 |
is merged to the "in body" insertion mode code. |
482 |
|
483 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
484 |
|
485 |
* HTML.pm.src: Codes for "in body" and "in caption" |
486 |
insertion modes are merged. |
487 |
|
488 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
489 |
|
490 |
* HTML.pm.src: Two |!!!next-token|s were missing. |
491 |
|
492 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
493 |
|
494 |
* HTML.pm.src: Use numeric constant for |{content_mode}| |
495 |
instead of string constant for |{content_model_flag}|. |
496 |
|
497 |
2007-07-21 Wakaba <wakaba@suika.fam.cx> |
498 |
|
499 |
* HTML.pm.src: Add the name of the attribute |
500 |
to the "duplicate attribute" error. |
501 |
|
502 |
2007-07-17 Wakaba <wakaba@suika.fam.cx> |
503 |
|
504 |
* ContentChecker.pm: Return the |class| node list. |
505 |
|
506 |
2007-07-17 Wakaba <wakaba@suika.fam.cx> |
507 |
|
508 |
* ContentChecker.pm: Return the |id| node list. |
509 |
|
510 |
* HTML.pm.src: A typo is fixed. |
511 |
|
512 |
2007-07-16 Wakaba <wakaba@suika.fam.cx> |
513 |
|
514 |
* ContentChecker.pm: Drop wrong |level => 'error'| specification |
515 |
from "in HTML:xml:lang" error. Character position |
516 |
is now the last part of the error type in the URI error |
517 |
description. Report "unsupported" status for language |
518 |
tags, media queries, script codes, and style sheets. |
519 |
|
520 |
2007-07-16 Wakaba <wakaba@suika.fam.cx> |
521 |
|
522 |
* ContentChecker.pm: Report error if |xml:lang| |
523 |
in HTML, |lang| in XML, |xmlns| in XML, and |meta| |charset| |
524 |
in XML. |
525 |
|
526 |
* NanoDOM.pm (Attr.owner_document): New attribute. |
527 |
|
528 |
2007-07-16 Wakaba <wakaba@suika.fam.cx> |
529 |
|
530 |
* HTML.pm.src: The character immediately following |
531 |
a bare |hcro| was discarded. Fix handling of |
532 |
entity references in attribute values. |
533 |
|
534 |
2007-07-16 Wakaba <wakaba@suika.fam.cx> |
535 |
|
536 |
* HTML.pm.src (main and trailin end phases): Token |
537 |
types |DOCTYPE|, |comment|, |end-of-file|, and |<html>| are |
538 |
factored out. Error types |in html:#DOCTYPE| |
539 |
and |after html:#DOCTYPE| are merged |
540 |
into |DOCTYPE in the middle|. |</frameset>| |
541 |
in fragment parsing mode changed the |
542 |
insertion mode. |
543 |
|
544 |
2007-07-16 Wakaba <wakaba@suika.fam.cx> |
545 |
|
546 |
* HTML.pm.src: |$phase| has been removed; The |trailing end| |
547 |
phase is now an insertion mode. Treatments for white |
548 |
space character tokens were incorrect for some |
549 |
insertion modes. An old |meta| case was not removed. |
550 |
|
551 |
2007-07-16 Wakaba <wakaba@suika.fam.cx> |
552 |
|
553 |
* HTML.pm.src: |meta| charset declaration extraction |
554 |
implemented (but changing the encoding is not yet:-). |
555 |
|
556 |
2007-07-15 Wakaba <wakaba@suika.fam.cx> |
557 |
|
558 |
* Charset/: New directory. |
559 |
|
560 |
2007-07-15 Wakaba <wakaba@suika.fam.cx> |
561 |
|
562 |
* H2H.pm: New Perl module (created from |
563 |
manakai's H2H.dis). |
564 |
|
565 |
2007-07-15 Wakaba <wakaba@suika.fam.cx> |
566 |
|
567 |
* XMLSerializer.pm: New Perl module (created from |
568 |
manakai's SimpleLS.dis). |
569 |
|
570 |
2007-07-07 Wakaba <wakaba@suika.fam.cx> |
571 |
|
572 |
* HTML.pm.src: |<!---x-->| was not processed correctly. |
573 |
|
574 |
2007-07-01 Wakaba <wakaba@suika.fam.cx> |
575 |
|
576 |
* HTML.pm.src: Report correct error message |
577 |
for |<body></div></body>|. |
578 |
|
579 |
2007-07-01 Wakaba <wakaba@suika.fam.cx> |
580 |
|
581 |
* HTMLTable.pm: An error description was incorrect. |
582 |
|
583 |
2007-06-30 Wakaba <wakaba@suika.fam.cx> |
584 |
|
585 |
* ContentChecker.pm: Return |{term}| list. |
586 |
|
587 |
2007-06-30 Wakaba <wakaba@suika.fam.cx> |
588 |
|
589 |
* HTML.pm.src: HTML5 revisions 961-966 (</p>, </br>, |
590 |
nested <nobr>, implied </tbody>, </tfoot>, and </thead>, |
591 |
and <title> outside of head). |
592 |
|
593 |
2007-06-30 Wakaba <wakaba@suika.fam.cx> |
594 |
|
595 |
* IMTChecker.pm: Report warning for unregistered |
596 |
and private types/subtypes. |
597 |
|
598 |
* ContentChecker.pm, HTML.pm.src, IMTChecker.pm, |
599 |
URIChecker.pm, HTMLTable.pm: Error messages are now |
600 |
consistent; they are all listed in |
601 |
<http://suika.fam.cx/gate/2005/sw/Whatpm%20Error%20Types>. |
602 |
|
603 |
2007-06-25 Wakaba <wakaba@suika.fam.cx> |
604 |
|
605 |
* ContentChecker.pm: |<img ismap>| not in |<a></a>| |
606 |
is now erred. |<datalist>| is implemented. |
607 |
Attribute checker for |<command>| and |<menu>| are |
608 |
added. Support for |contextmenu| global attribute |
609 |
is added. |
610 |
|
611 |
2007-06-25 Wakaba <wakaba@suika.fam.cx> |
612 |
|
613 |
* HTML.pm.src (_reset_insertion_mode): Interpretation |
614 |
of Step 3 has been changed. |
615 |
|
616 |
2007-06-25 Wakaba <wakaba@suika.fam.cx> |
617 |
|
618 |
* HTML.pm.src: Late |<html>| parse error is implemented. |
619 |
|
620 |
2007-06-24 Wakaba <wakaba@suika.fam.cx> |
621 |
|
622 |
* URIChecker.pm (check_iri_reference): A |decode| method name was |
623 |
incorrect. |
624 |
|
625 |
* ContentChecker.pm: Support for the |footer| element. |
626 |
Check URI syntax for space-separated URI attributes. |
627 |
Support for the |tabindex| attribute. Support |
628 |
for |datetime| attribute. |
629 |
|
630 |
2007-06-24 Wakaba <wakaba@suika.fam.cx> |
631 |
|
632 |
* HTML.pm.src: HTML5 revision 1.144 (
) and 1.145 (invalid |
633 |
character references). HTML5 revision 1.146 (white space |
634 |
characters before root start tag). HTML5 revision |
635 |
1.148 (named character references in attribute values). |
636 |
HTML5 revision 1.152 (<plaintext>.innerHTML get). |
637 |
|
638 |
2007-06-24 Wakaba <wakaba@suika.fam.cx> |
639 |
|
640 |
* HTML.pm.src: HTML5 revisions 1.142 and 1.143 (<noscript> |
641 |
in <head>). |
642 |
|
643 |
2007-06-24 Wakaba <wakaba@suika.fam.cx> |
644 |
|
645 |
* HTML.pm.src: HTML5 revision 935 (<base>, <link>, <meta> |
646 |
in body). |
647 |
|
648 |
* ContentChecker.pm: HTML5 revision 938 (scoped=""). |
649 |
|
650 |
2007-06-24 Wakaba <wakaba@suika.fam.cx> |
651 |
|
652 |
* HTML.pm.src: HTML5 revision 923 (matching end tag in CDATA |
653 |
or RCDATA in fragment parsing mode). HTML5 revision |
654 |
924 (<!--> and <!--->). HTML5 revision 926 (hn in hn). |
655 |
|
656 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
657 |
|
658 |
* HTML.pm.src (get_inner_html): HTML5 revision 922 (inner_html |
659 |
for <pre> and <textarea>). |
660 |
|
661 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
662 |
|
663 |
* HTML.pm.src: HTML5 revision 920 (<isindex>). |
664 |
|
665 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
666 |
|
667 |
* HTML.pm.src: HTML5 revision 918 (</head>, </body>, </html>). |
668 |
|
669 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
670 |
|
671 |
* HTML.pm.src: HTML5 revision 916 (</body>). |
672 |
HTML5 revision 917 (conforming bare &). |
673 |
|
674 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
675 |
|
676 |
* NanoDOM.pm (manakai_is_html): Setting to false did not work. |
677 |
|
678 |
* HTML.pm.src: HTML5 revision 914 (</ in CDATA, RCDATA). |
679 |
HTML5 revision 915 (<nobr>). |
680 |
|
681 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
682 |
|
683 |
* HTML.pm.src: HTML5 revisions 908, 909, 912, and 913 (quirks mode). |
684 |
|
685 |
* NanoDOM.pm (manakai_is_html, manakai_compat_mode, compat_mode): |
686 |
New attributes. |
687 |
|
688 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
689 |
|
690 |
* HTML.pm.src: HTML5 revisions 900, 901, 902, and 911 (< |
691 |
in tags). |
692 |
|
693 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
694 |
|
695 |
* .cvsignore: |Entities.html| is added. |
696 |
|
697 |
* HTML.pm.src: |$entity_char| is removed and |
698 |
requires |Whatpm::_NamedEntityList| instead. |
699 |
HTML5 revision 898 (refc), except that lack of refc |
700 |
is parse error. |
701 |
|
702 |
* mkentitylist.pl: New script. |
703 |
|
704 |
* Makefile (all): |_NamedEntityList.pm| is added. |
705 |
(_NamedEntityList.pm, Entities.html): New rules. |
706 |
|
707 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
708 |
|
709 |
* HTML.pm.src: Parse errors immediately after U+000D |
710 |
were ignored and U+000D immediately following another |
711 |
U+000D was not converted to U+000A. |
712 |
|
713 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
714 |
|
715 |
* HTML.pm.src (set_inner_html): HTML5 revision 892 (adopt |
716 |
nodes before appended). Parser was not ready for NULL |
717 |
parse error and escape flag. |
718 |
|
719 |
* NanoDOM.pm (adopt_node): New. |
720 |
|
721 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
722 |
|
723 |
* HTML.pm.src: HTML5 revision 886 (insane comment in |
724 |
CDATA and RCDATA). Note that current implementation |
725 |
is simply repeating what the spec says and it is maybe not |
726 |
a best way to do it. |
727 |
|
728 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
729 |
|
730 |
* HTML.pm.src: HTML5 revision 884 (</form> don't close |
731 |
the form element if a descendant element without implied end tag has |
732 |
still been open). |
733 |
|
734 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
735 |
|
736 |
* ContentChecker.pm: HTML5 revision 881 (Make |id| attribute with |
737 |
space characters non-conforming). |
738 |
|
739 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
740 |
|
741 |
* HTML.pm.src: An error message was incorrect. |
742 |
HTML5 revision 869 (C1 character references). |
743 |
|
744 |
2007-06-23 Wakaba <wakaba@suika.fam.cx> |
745 |
|
746 |
* HTML.pm.src: HTML5 revision 867 (a LF at the beginning of |
747 |
a |textarea| is removed). |
748 |
|
749 |
2007-06-05 Wakaba <wakaba@suika.fam.cx> |
750 |
|
751 |
* NanoDOM.pm (get_attribute_node_ns): New method. |
752 |
|
753 |
* ContentChecker.pm: |script| |async| and |defer| |
754 |
no longer require |src|. |async| MUST NOT be |
755 |
specified if |defer|. (HTML5 revision 858). |
756 |
|
757 |
2007-05-30 Wakaba <wakaba@suika.fam.cx> |
758 |
|
759 |
* HTML.pm.src: |<form><form>| went to inifinite loop. |
760 |
|
761 |
2007-05-27 Wakaba <wakaba@suika.fam.cx> |
762 |
|
763 |
* ContentChecker.pm (html): Set |is_root| (allowed |
764 |
as a document element) flag on. |
765 |
(new): Removed. |
766 |
(check_document): New method. |
767 |
|
768 |
2007-05-27 Wakaba <wakaba@suika.fam.cx> |
769 |
|
770 |
* ContentChecker.pm (thead, tfoot): Checker specifications |
771 |
were incorrect. |
772 |
|
773 |
2007-05-27 Wakaba <wakaba@suika.fam.cx> |
774 |
|
775 |
* ContentChecker.pm ($HTMLURIAttrChecker): Include |
776 |
error position in the |type| option of the error. |
777 |
|
778 |
* HTMLTable.pm (form_table): The |$onerror| parameter |
779 |
is now optional. Some bugs are fixed. |
780 |
|
781 |
2007-05-27 Wakaba <wakaba@suika.fam.cx> |
782 |
|
783 |
* HTMLTable.pm: New module. |
784 |
|
785 |
* ContentChecker.pm (table): Invoke table model error checker. |
786 |
|
787 |
* NanoDOM.pm (first_child, get_attribute_ns): New. |
788 |
|
789 |
2007-05-26 Wakaba <wakaba@suika.fam.cx> |
790 |
|
791 |
* ContentChecker.pm ($HTMLLinkTypesAttrChecker): New checker. |
792 |
(link/@rel, a/@rel, area/@rel): Use new checker. |
793 |
|
794 |
* Makefile (_LinkTypeList.pm, RelExtensions.html): New rules. |
795 |
|
796 |
* _LinkTypeList.pm: New file. |
797 |
|
798 |
* mklinktypelist.pl: New file. |
799 |
|
800 |
* .cvsignore: |RelExtensions.html| added. |
801 |
|
802 |
* NanoDOM.pm (child_nodes): Returns an empty array |
803 |
for non-child-containing node types. |
804 |
(text_content): New attribute. |
805 |
|
806 |
2007-05-26 Wakaba <wakaba@suika.fam.cx> |
807 |
|
808 |
* IMTChecker.pm: New module. |
809 |
|
810 |
* ContentChecker.pm ($HTMLIMTAttrChecker): Call IMTChecker |
811 |
to test parameter value validity. |
812 |
|
813 |
* HTML.pm.src ($style_start_tag): Attributes were |
814 |
discarded. |
815 |
|
816 |
2007-05-25 Wakaba <wakaba@suika.fam.cx> |
817 |
|
818 |
* ContentChecker.pm ($HTMLURIAttrChecker): Implemented. |
819 |
|
820 |
2007-05-25 Wakaba <wakaba@suika.fam.cx> |
821 |
|
822 |
* URIChecker.pm: All recommendations from RFC 3986 |
823 |
and RFC 3987 are listed (not all testable items are checked yet). |
824 |
|
825 |
2007-05-25 Wakaba <wakaba@suika.fam.cx> |
826 |
|
827 |
* URIChecker.pm: New module. |
828 |
|
829 |
2007-05-20 Wakaba <wakaba@suika.fam.cx> |
830 |
|
831 |
* ContentChecker.pm: Now most attributes are implemented |
832 |
or associated to some placeholder. |
833 |
($ElementDefault): Warn unknown attributes |
834 |
for unknown elements as "attribute not supported". |
835 |
($HTMLLanguageTagAttrChecker, $HTMLMQAttrChecker): New placeholders. |
836 |
($HTMLUsemapAttrChecker, $HTMLTargetAttrChecker): New checkers. |
837 |
(|a| attribute checker): Reimplemented. |
838 |
|
839 |
2007-05-20 Wakaba <wakaba@suika.fam.cx> |
840 |
|
841 |
* ContentChecker.pm ($HTMLEventHandlerAttrChecker): New placeholder. |
842 |
($HTMLAttrChecker): Event handler content attributes |
843 |
are added. |
844 |
(link, embed): Required attribute is now checked. |
845 |
(embed): Unknown local attributes are no longer warned. |
846 |
|
847 |
2007-05-20 Wakaba <wakaba@suika.fam.cx> |
848 |
|
849 |
* ContentChecker.pm ($HTMLSpaceURIsAttrChecker): New placeholder. |
850 |
($HTMLIMTAttrChecker): New checker. |
851 |
(link@rel, link@href, link@type, style@type, |
852 |
a@href, a@ping, a@ping, a@type, embed@src, embed@type, |
853 |
object@data, object@type, source@src, source@type, area@alt, |
854 |
area@shape, area@coords, area@href, |
855 |
area@ping, area@rel, area@type, script@src, |
856 |
script@defer, script@async, script@type): Checkers added. |
857 |
|
858 |
2007-05-20 Wakaba <wakaba@suika.fam.cx> |
859 |
|
860 |
* ContentChecker.pm: Descendant checking was incorrect. |
861 |
|
862 |
2007-05-19 Wakaba <wakaba@suika.fam.cx> |
863 |
|
864 |
* ContentChecker.pm: Support |xml:*| and |xmlns:*| |
865 |
attributes. Report an error if |Element.prefix| |
866 |
is |xmlns|. |
867 |
|
868 |
* NanoDOM.pm (prefix): New attribute. |
869 |
|
870 |
2007-05-19 Wakaba <wakaba@suika.fam.cx> |
871 |
|
872 |
* HTML.pm.src: In |main| phase, |in body| insertion |
873 |
mode, action for |<iframe>| was missing. |
874 |
|
875 |
2007-05-19 Wakaba <wakaba@suika.fam.cx> |
876 |
|
877 |
* ContentChecker.pm: Support for many of HTML5 elements. |
878 |
($GetHTMLNonNegativeIntegerAttrChecker): New. |
879 |
|
880 |
2007-05-19 Wakaba <wakaba@suika.fam.cx> |
881 |
|
882 |
* ContentChecker.pm: Support for most elements up to |progress|. |
883 |
($HTMLURIAttrChecker): Placeholder. |
884 |
($HTMLIntegerAttrChecker, $GetHTMLFloatingPointNumberAttrChecker): |
885 |
New. |
886 |
|
887 |
2007-05-19 Wakaba <wakaba@suika.fam.cx> |
888 |
|
889 |
* ContentChecker.pm: Attribute checkers |
890 |
for global attributes, |html|, |base|, |style|, and |meta|. |
891 |
|
892 |
* NanoDOM.pm (insert_before): Weaken reference |
893 |
to the parent node. |
894 |
(Attr::new): Set |owner_element| attribute. |
895 |
(namespace_uri, manakai_local_name): New attribute implementations. |
896 |
(owner_element): New attribute. |
897 |
|
898 |
2007-05-19 Wakaba <wakaba@suika.fam.cx> |
899 |
|
900 |
* ContentChecker.pm ($AttrChecker, $HTMLAttrChecker, |
901 |
$AnyChecker->{attr_checker}, $HTMLAttrsChecker, |
902 |
$Element->{$HTML_NS}->{''}): New. |
903 |
(check_element): Invoke attrs_checker for each element. |
904 |
|
905 |
2007-05-13 Wakaba <wakaba@suika.fam.cx> |
906 |
|
907 |
* ContentChecker.pm: Don't use |manakai_element_type_match|. |
908 |
|
909 |
2007-05-13 Wakaba <wakaba@suika.fam.cx> |
910 |
|
911 |
* ContentChecker.pm: Use hashs rather than lists for |
912 |
element type testings. |
913 |
|
914 |
2007-05-13 Wakaba <wakaba@suika.fam.cx> |
915 |
|
916 |
* ContentChecker.pm: Don't generate duplicate |
917 |
error when an element type is put in the "minus" list |
918 |
and the element type is not allowed explicitly in the particular |
919 |
element content model. |
920 |
(html:a checker): New checker. |
921 |
(html:details, html:datagrid): New checkers. |
922 |
(html:legend): New checker. |
923 |
|
924 |
2007-05-13 Wakaba <wakaba@suika.fam.cx> |
925 |
|
926 |
* ContentChecker.pm (html:li checker): Implemented. |
927 |
|
928 |
2007-05-13 Wakaba <wakaba@suika.fam.cx> |
929 |
|
930 |
* ContentChecker.pm ($HTMLInlineOrStriclyInlineChecker): New |
931 |
checker. |
932 |
(html:dd checker): New checker. |
933 |
(html:q, html:em, html:strong, html:small, |
934 |
html:m, html:dfn, html:code, html:samp, html:span): New checkers. |
935 |
|
936 |
2007-05-13 Wakaba <wakaba@suika.fam.cx> |
937 |
|
938 |
* ContentChecker.pm ($AnyChecker): Renamed |
939 |
from |$ElementDefault->{checker}|. |
940 |
($ElementDefault->{checker}): Throw an error that |
941 |
the element type is not supported by the checker. |
942 |
($HTMLMetadataElement): |html:base| was missing. |
943 |
($HTMLEmptyChecker): Don't throw an error |
944 |
for inter-element whitespace nodes. |
945 |
(html:html checker): Errors were not |
946 |
thrown even if |html:head| and/or |html:body| |
947 |
children were missing. |
948 |
(html:head checker): An error was not |
949 |
thrown if <meta charset> appered after other |
950 |
elements. |
951 |
|
952 |
2007-05-05 Wakaba <wakaba@suika.fam.cx> |
953 |
|
954 |
* ContentChecker.pm: |footer|, |video|, |audio|, |script|, |
955 |
and |noscript| elements are implemented. |
956 |
(new): New method. |
957 |
|
958 |
2007-05-04 Wakaba <wakaba@suika.fam.cx> |
959 |
|
960 |
* ContentChecker.pm: New module. |
961 |
|
962 |
2007-05-04 Wakaba <wakaba@suika.fam.cx> |
963 |
|
964 |
* NanoDOM.pm (manakai_parent_element, |
965 |
document_element, manakai_local_name, |
966 |
manakai_element_type_match): New method. |
967 |
|
968 |
2007-05-03 Wakaba <wakaba@suika.fam.cx> |
969 |
|
970 |
* HTML.pm.src: Replace decimal and hexadecimal numeric |
971 |
entities in C1 range using Windows-1252 mapping. Bare LF |
972 |
did not count as new line for error reporting. |
973 |
|
974 |
2007-05-02 Wakaba <wakaba@suika.fam.cx> |
975 |
|
976 |
* NanoDOM.pm (DOMImplementation): New class. |
977 |
(append_child): Weaken the |parent_node| reference. |
978 |
(create_element_ns, Element new): Set the |owner_document| |
979 |
reference. |
980 |
(implementation): New attribute. |
981 |
(owner_document, local_name, namespace_uri): New attributes. |
982 |
|
983 |
* HTML.pm.src (parse_string): Line and column numbers |
984 |
are now provided to error handler. |
985 |
(!!!parse-error): Short descriptions are added. |
986 |
(_construct_tree): Split into three methods; support |
987 |
for innerHTML mode. |
988 |
(set_inner_html): New method. |
989 |
|
990 |
2007-05-01 Wakaba <wakaba@suika.fam.cx> |
991 |
|
992 |
* NanoDOM.html: Documentation is added. |
993 |
|
994 |
* HTML.pod, ContentType.html: Documentation is revised. |
995 |
|
996 |
* .cvsignore: Pod2html temporary files are added. |
997 |
|
998 |
* Makefile: Make |NanoDOM.html|. |
999 |
|
1000 |
2007-05-01 Wakaba <wakaba@suika.fam.cx> |
1001 |
|
1002 |
* HTML.pm.src (parse_string): New method. |
1003 |
(get_inner_html): Renamed from |inner_html|. |
1004 |
|
1005 |
* Makefile: A rule for |HTML.html| is added. |
1006 |
|
1007 |
* HTML.pod: New documentation. |
1008 |
|
1009 |
2007-05-01 Wakaba <wakaba@suika.fam.cx> |
1010 |
|
1011 |
* NanoDOM.pm (last_child, previous_sibling): New attributes. |
1012 |
(clone_node): Attribute nodes were not completely copied. |
1013 |
|
1014 |
* HTML.pm.src: Many bugs are fixed. |
1015 |
|
1016 |
2007-04-30 Wakaba <wakaba@suika.fam.cx> |
1017 |
|
1018 |
* HTML.pm.src: Some typos are fixed. |
1019 |
|
1020 |
2007-04-30 Wakaba <wakaba@suika.fam.cx> |
1021 |
|
1022 |
* mkhtmlparser.pl, Makefile: References to the |HTML-consume-entity.src| |
1023 |
are removed. |
1024 |
|
1025 |
* HTML.pm.src: Tokenizer's handling on named entities are rewritten. |
1026 |
|
1027 |
* HTML-consume-entity.src: Removed. |
1028 |
|
1029 |
2007-04-30 Wakaba <wakaba@suika.fam.cx> |
1030 |
|
1031 |
* HTML.pm.src: Tokenizer's handling on hexadecimal |
1032 |
numeric entities are rewritten. |
1033 |
|
1034 |
2007-04-30 Wakaba <wakaba@suika.fam.cx> |
1035 |
|
1036 |
* HTML.pm.src: Some tokenizer bugs are fixed. |
1037 |
|
1038 |
2007-04-30 Wakaba <wakaba@suika.fam.cx> |
1039 |
|
1040 |
* HTML.pm.src: The tree construction stage is implemented. |
1041 |
|
1042 |
* mkhtmlparser.pl: New macros are added. |
1043 |
|
1044 |
2007-04-28 Wakaba <wakaba@suika.fam.cx> |
1045 |
|
1046 |
* ContentType.pm: A note on bug in the specification |
1047 |
is removed since it's been now fixed. |
1048 |
|
1049 |
* .cvsignore: New file. |
1050 |
|
1051 |
2007-04-28 Wakaba <wakaba@suika.fam.cx> |
1052 |
|
1053 |
* HTML.pm.src, HTML-consume-entity.src: New files. |
1054 |
|
1055 |
* Makefile (HTML.pm): New rule. |
1056 |
|
1057 |
* mkhtmlparser.pl: New script. |
1058 |
|
1059 |
2007-04-25 Wakaba <wakaba@suika.fam.cx> |
1060 |
|
1061 |
* Makefile: New file. |
1062 |
|
1063 |
2007-04-24 Wakaba <wakaba@suika.fam.cx> |
1064 |
|
1065 |
* ContentType.pm: An error in pod is fixed. |
1066 |
|
1067 |
2007-04-24 Wakaba <wakaba@suika.fam.cx> |
1068 |
|
1069 |
* ContentType.pm: Documentation is added. |
1070 |
|
1071 |
2007-04-24 Wakaba <wakaba@suika.fam.cx> |
1072 |
|
1073 |
* ContentType.pm: New Perl module. |
1074 |
|
1075 |
* ChangeLog: New file. |
1076 |
|
1077 |
|