<commit_before>2.1.0 (from 2.0.19)
===================
(See What's New in Thymeleaf 2.1 at http://www.thymeleaf.org/whatsnew21.html)
- New feature: Same-template fragments
- New feature: Parameterizable fragment signatures
- New feature: More powerful DOM selector syntax
- New feature: Literal substitutions
- New feature: Boolean and null literals
- New feature: Protocol-relative URLs
- New feature: Parser-level comment blocks
- New feature: Prototype-only comment blocks
- New feature: Synthetic th:block tag
- New feature: Support for HTML5-friendly attribute and element names
- New feature: New th:assert for in-template assertions
- New feature: New th:replace as a synonym of th:substituteby
- New feature: Reuse variables in th:with


2.0.19
======
- Added support for URLs without query string like @{''(p1)}.
- Fixed nekoHTML introducing too many HTML wrapper tags around markup fragments in LEGACYHTML5 mode.
- Fixed bad replacing of inlined javascript variables in text containing '//'.
- Fixed potential issues parsing UTF-8 templates including BOM (Byte Order Mark) symbols.


2.0.18
======
- Fixed EnumMap's (and maybe other implementations of Map) not iterating correctly (always repeating the
  same element) because of their internal iterators reusing the same Map.Entry object.
- Fixed th:attr not correctly rendering fixed-value conditional attributes like "multiple", "selected",etc.
- Fixed th:attrappend, th:attrprepend and th:classappend not correctly render results when the 
  appended attribute already exists and is empty before processing the template.<commit_msg>Updated ChangeLog<commit_after>2.1.0 (from 2.0.19)
===================
(See What's New in Thymeleaf 2.1 at http://www.thymeleaf.org/whatsnew21.html)
- New feature: Same-template fragments
- New feature: Parameterizable fragment signatures
- New feature: More powerful DOM selector syntax
- New feature: Literal tokens
- New feature: Boolean and null literals
- New feature: Literal substitutions
- New feature: Protocol-relative URLs
- New feature: Parser-level comment blocks
- New feature: Prototype-only comment blocks
- New feature: Improved th:remove attribute
- New feature: Synthetic th:block tag
- New feature: Support for HTML5-friendly attribute and element names
- New feature: New th:assert for in-template assertions
- New feature: New th:replace as a synonym of th:substituteby
- New feature: Reuse variables in th:with


2.0.19
======
- Added support for URLs without query string like @{''(p1)}.
- Fixed nekoHTML introducing too many HTML wrapper tags around markup fragments in LEGACYHTML5 mode.
- Fixed bad replacing of inlined javascript variables in text containing '//'.
- Fixed potential issues parsing UTF-8 templates including BOM (Byte Order Mark) symbols.


2.0.18
======
- Fixed EnumMap's (and maybe other implementations of Map) not iterating correctly (always repeating the
  same element) because of their internal iterators reusing the same Map.Entry object.
- Fixed th:attr not correctly rendering fixed-value conditional attributes like "multiple", "selected",etc.
- Fixed th:attrappend, th:attrprepend and th:classappend not correctly render results when the 
  appended attribute already exists and is empty before processing the template.
{'fraction_non_alphanumeric': 0.08593272171253823, 'fraction_numerical': 0.014067278287461774, 'mean_word_length': 4.728546409807356, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3250571', 'n_tokens_mistral': 905, 'n_tokens_neox': 828, 'n_words': 395}