-Installing Python-Markdown\r
-==========================\r
-\r
-As an Admin/Root user on your system do:\r
-\r
- pip install markdown\r
-\r
-Or for more specific instructions, view the documentation in `docs/install.txt`\r
-or on the website at <http://packages.python.org/Markdown/>.\r
+Installing Python-Markdown
+==========================
+
+As an Admin/Root user on your system do:
+
+ pip install markdown
+
+Or for more specific instructions, view the documentation in `docs/install.txt`
+or on the website at <https://pythonhosted.org/Markdown/install.html>.
-Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later) \r
-Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) \r
-Copyright 2004 Manfred Stienstra (the original version) \r
-\r
-All rights reserved.\r
-\r
-Redistribution and use in source and binary forms, with or without\r
-modification, are permitted provided that the following conditions are met:\r
- \r
-* Redistributions of source code must retain the above copyright\r
- notice, this list of conditions and the following disclaimer.\r
-* Redistributions in binary form must reproduce the above copyright\r
- notice, this list of conditions and the following disclaimer in the\r
- documentation and/or other materials provided with the distribution.\r
-* Neither the name of the <organization> nor the\r
- names of its contributors may be used to endorse or promote products\r
- derived from this software without specific prior written permission.\r
-\r
-THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY\r
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
-DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT\r
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGE.\r
-\r
+Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+* Neither the name of the <organization> nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
--- /dev/null
+# file GENERATED by distutils, do NOT edit
+INSTALL.md
+LICENSE.md
+MANIFEST
+README.md
+makefile
+run-tests.py
+setup.cfg
+setup.py
+tox.ini
+bin/markdown_py
+docs/_template.html
+docs/authors.txt
+docs/basic.css
+docs/change_log.txt
+docs/cli.txt
+docs/default.css
+docs/index.txt
+docs/install.txt
+docs/py.png
+docs/reference.txt
+docs/release-2.0.1.txt
+docs/release-2.0.2.txt
+docs/release-2.0.txt
+docs/release-2.1.0.txt
+docs/release-2.1.1.txt
+docs/release-2.2.0.txt
+docs/release-2.2.1.txt
+docs/release-2.3.txt
+docs/release-2.4.txt
+docs/release-2.5.txt
+docs/siteindex.txt
+docs/test_suite.txt
+docs/extensions/abbreviations.txt
+docs/extensions/admonition.txt
+docs/extensions/api.txt
+docs/extensions/attr_list.txt
+docs/extensions/code_hilite.txt
+docs/extensions/definition_lists.txt
+docs/extensions/extra.txt
+docs/extensions/fenced_code_blocks.txt
+docs/extensions/footnotes.txt
+docs/extensions/header_id.txt
+docs/extensions/index.txt
+docs/extensions/meta_data.txt
+docs/extensions/nl2br.txt
+docs/extensions/sane_lists.txt
+docs/extensions/smart_strong.txt
+docs/extensions/smarty.txt
+docs/extensions/tables.txt
+docs/extensions/toc.txt
+docs/extensions/wikilinks.txt
+markdown/__init__.py
+markdown/__main__.py
+markdown/__version__.py
+markdown/blockparser.py
+markdown/blockprocessors.py
+markdown/inlinepatterns.py
+markdown/odict.py
+markdown/postprocessors.py
+markdown/preprocessors.py
+markdown/serializers.py
+markdown/treeprocessors.py
+markdown/util.py
+markdown/extensions/__init__.py
+markdown/extensions/abbr.py
+markdown/extensions/admonition.py
+markdown/extensions/attr_list.py
+markdown/extensions/codehilite.py
+markdown/extensions/def_list.py
+markdown/extensions/extra.py
+markdown/extensions/fenced_code.py
+markdown/extensions/footnotes.py
+markdown/extensions/headerid.py
+markdown/extensions/meta.py
+markdown/extensions/nl2br.py
+markdown/extensions/sane_lists.py
+markdown/extensions/smart_strong.py
+markdown/extensions/smarty.py
+markdown/extensions/tables.py
+markdown/extensions/toc.py
+markdown/extensions/wikilinks.py
+tests/__init__.py
+tests/plugins.py
+tests/test_apis.py
+tests/test_extensions.py
+tests/basic/amps-and-angle-encoding.html
+tests/basic/amps-and-angle-encoding.txt
+tests/basic/angle-links-and-img.html
+tests/basic/angle-links-and-img.txt
+tests/basic/auto-links.html
+tests/basic/auto-links.txt
+tests/basic/backlash-escapes.html
+tests/basic/backlash-escapes.txt
+tests/basic/blockquotes-with-code-blocks.html
+tests/basic/blockquotes-with-code-blocks.txt
+tests/basic/codeblock-in-list.html
+tests/basic/codeblock-in-list.txt
+tests/basic/hard-wrapped.html
+tests/basic/hard-wrapped.txt
+tests/basic/horizontal-rules.html
+tests/basic/horizontal-rules.txt
+tests/basic/inline-html-advanced.html
+tests/basic/inline-html-advanced.txt
+tests/basic/inline-html-comments.html
+tests/basic/inline-html-comments.txt
+tests/basic/inline-html-simple.html
+tests/basic/inline-html-simple.txt
+tests/basic/links-inline.html
+tests/basic/links-inline.txt
+tests/basic/links-reference.html
+tests/basic/links-reference.txt
+tests/basic/literal-quotes.html
+tests/basic/literal-quotes.txt
+tests/basic/markdown-documentation-basics.html
+tests/basic/markdown-documentation-basics.txt
+tests/basic/markdown-syntax.html
+tests/basic/markdown-syntax.txt
+tests/basic/nested-blockquotes.html
+tests/basic/nested-blockquotes.txt
+tests/basic/ordered-and-unordered-list.html
+tests/basic/ordered-and-unordered-list.txt
+tests/basic/strong-and-em-together.html
+tests/basic/strong-and-em-together.txt
+tests/basic/tabs.html
+tests/basic/tabs.txt
+tests/basic/tidyness.html
+tests/basic/tidyness.txt
+tests/extensions/admonition.html
+tests/extensions/admonition.txt
+tests/extensions/attr_list.html
+tests/extensions/attr_list.txt
+tests/extensions/codehilite.html
+tests/extensions/codehilite.txt
+tests/extensions/fenced_code.html
+tests/extensions/fenced_code.txt
+tests/extensions/github_flavored.html
+tests/extensions/github_flavored.txt
+tests/extensions/nl2br_w_attr_list.html
+tests/extensions/nl2br_w_attr_list.txt
+tests/extensions/sane_lists.html
+tests/extensions/sane_lists.txt
+tests/extensions/smarty.html
+tests/extensions/smarty.txt
+tests/extensions/test.cfg
+tests/extensions/toc.html
+tests/extensions/toc.txt
+tests/extensions/toc_invalid.html
+tests/extensions/toc_invalid.txt
+tests/extensions/toc_nested.html
+tests/extensions/toc_nested.txt
+tests/extensions/toc_nested2.html
+tests/extensions/toc_nested2.txt
+tests/extensions/toc_out_of_order.html
+tests/extensions/toc_out_of_order.txt
+tests/extensions/wikilinks.html
+tests/extensions/wikilinks.txt
+tests/extensions/extra/abbr.html
+tests/extensions/extra/abbr.txt
+tests/extensions/extra/def-in-list.html
+tests/extensions/extra/def-in-list.txt
+tests/extensions/extra/extra_config.html
+tests/extensions/extra/extra_config.txt
+tests/extensions/extra/footnote.html
+tests/extensions/extra/footnote.txt
+tests/extensions/extra/footnote_many_footnotes.html
+tests/extensions/extra/footnote_many_footnotes.txt
+tests/extensions/extra/footnote_placeholder.html
+tests/extensions/extra/footnote_placeholder.txt
+tests/extensions/extra/loose_def_list.html
+tests/extensions/extra/loose_def_list.txt
+tests/extensions/extra/markdown-syntax.html
+tests/extensions/extra/markdown-syntax.txt
+tests/extensions/extra/named_markers.html
+tests/extensions/extra/named_markers.txt
+tests/extensions/extra/raw-html.html
+tests/extensions/extra/raw-html.txt
+tests/extensions/extra/simple_def-lists.html
+tests/extensions/extra/simple_def-lists.txt
+tests/extensions/extra/tables.html
+tests/extensions/extra/tables.txt
+tests/extensions/extra/tables_and_attr_list.html
+tests/extensions/extra/tables_and_attr_list.txt
+tests/extensions/extra/test.cfg
+tests/misc/CRLF_line_ends.html
+tests/misc/CRLF_line_ends.txt
+tests/misc/adjacent-headers.html
+tests/misc/adjacent-headers.txt
+tests/misc/amp-in-url.html
+tests/misc/amp-in-url.txt
+tests/misc/ampersand.html
+tests/misc/ampersand.txt
+tests/misc/arabic.html
+tests/misc/arabic.txt
+tests/misc/attributes-image-ref.html
+tests/misc/attributes-image-ref.txt
+tests/misc/attributes2.html
+tests/misc/attributes2.txt
+tests/misc/autolinks_with_asterisks.html
+tests/misc/autolinks_with_asterisks.txt
+tests/misc/autolinks_with_asterisks_russian.html
+tests/misc/autolinks_with_asterisks_russian.txt
+tests/misc/backtick-escape.html
+tests/misc/backtick-escape.txt
+tests/misc/bidi.html
+tests/misc/bidi.txt
+tests/misc/blank-block-quote.html
+tests/misc/blank-block-quote.txt
+tests/misc/blank_lines_in_codeblocks.html
+tests/misc/blank_lines_in_codeblocks.txt
+tests/misc/block_html5.html
+tests/misc/block_html5.txt
+tests/misc/block_html_attr.html
+tests/misc/block_html_attr.txt
+tests/misc/block_html_simple.html
+tests/misc/block_html_simple.txt
+tests/misc/blockquote-below-paragraph.html
+tests/misc/blockquote-below-paragraph.txt
+tests/misc/blockquote-hr.html
+tests/misc/blockquote-hr.txt
+tests/misc/blockquote.html
+tests/misc/blockquote.txt
+tests/misc/bold_links.html
+tests/misc/bold_links.txt
+tests/misc/br.html
+tests/misc/br.txt
+tests/misc/bracket_re.html
+tests/misc/bracket_re.txt
+tests/misc/brackets-in-img-title.html
+tests/misc/brackets-in-img-title.txt
+tests/misc/code-first-line.html
+tests/misc/code-first-line.txt
+tests/misc/comments.html
+tests/misc/comments.txt
+tests/misc/div.html
+tests/misc/div.txt
+tests/misc/em-around-links.html
+tests/misc/em-around-links.txt
+tests/misc/em_strong.html
+tests/misc/em_strong.txt
+tests/misc/email.html
+tests/misc/email.txt
+tests/misc/escaped_chars_in_js.html
+tests/misc/escaped_chars_in_js.txt
+tests/misc/escaped_links.html
+tests/misc/escaped_links.txt
+tests/misc/funky-list.html
+tests/misc/funky-list.txt
+tests/misc/h1.html
+tests/misc/h1.txt
+tests/misc/hash.html
+tests/misc/hash.txt
+tests/misc/header-in-lists.html
+tests/misc/header-in-lists.txt
+tests/misc/headers.html
+tests/misc/headers.txt
+tests/misc/hline.html
+tests/misc/hline.txt
+tests/misc/html-comments.html
+tests/misc/html-comments.txt
+tests/misc/html.html
+tests/misc/html.txt
+tests/misc/image-2.html
+tests/misc/image-2.txt
+tests/misc/image.html
+tests/misc/image.txt
+tests/misc/image_in_links.html
+tests/misc/image_in_links.txt
+tests/misc/ins-at-start-of-paragraph.html
+tests/misc/ins-at-start-of-paragraph.txt
+tests/misc/inside_html.html
+tests/misc/inside_html.txt
+tests/misc/japanese.html
+tests/misc/japanese.txt
+tests/misc/lazy-block-quote.html
+tests/misc/lazy-block-quote.txt
+tests/misc/link-with-parenthesis.html
+tests/misc/link-with-parenthesis.txt
+tests/misc/lists.html
+tests/misc/lists.txt
+tests/misc/lists2.html
+tests/misc/lists2.txt
+tests/misc/lists3.html
+tests/misc/lists3.txt
+tests/misc/lists4.html
+tests/misc/lists4.txt
+tests/misc/lists5.html
+tests/misc/lists5.txt
+tests/misc/lists6.html
+tests/misc/lists6.txt
+tests/misc/lists7.html
+tests/misc/lists7.txt
+tests/misc/lists8.html
+tests/misc/lists8.txt
+tests/misc/markup-inside-p.html
+tests/misc/markup-inside-p.txt
+tests/misc/mismatched-tags.html
+tests/misc/mismatched-tags.txt
+tests/misc/missing-link-def.html
+tests/misc/missing-link-def.txt
+tests/misc/more_comments.html
+tests/misc/more_comments.txt
+tests/misc/multi-line-tags.html
+tests/misc/multi-line-tags.txt
+tests/misc/multi-paragraph-block-quote.html
+tests/misc/multi-paragraph-block-quote.txt
+tests/misc/multi-test.html
+tests/misc/multi-test.txt
+tests/misc/multiline-comments.html
+tests/misc/multiline-comments.txt
+tests/misc/nested-lists.html
+tests/misc/nested-lists.txt
+tests/misc/nested-patterns.html
+tests/misc/nested-patterns.txt
+tests/misc/normalize.html
+tests/misc/normalize.txt
+tests/misc/numeric-entity.html
+tests/misc/numeric-entity.txt
+tests/misc/para-with-hr.html
+tests/misc/para-with-hr.txt
+tests/misc/php.html
+tests/misc/php.txt
+tests/misc/pre.html
+tests/misc/pre.txt
+tests/misc/raw_whitespace.html
+tests/misc/raw_whitespace.txt
+tests/misc/russian.html
+tests/misc/russian.txt
+tests/misc/smart_em.html
+tests/misc/smart_em.txt
+tests/misc/some-test.html
+tests/misc/some-test.txt
+tests/misc/span.html
+tests/misc/span.txt
+tests/misc/strong-with-underscores.html
+tests/misc/strong-with-underscores.txt
+tests/misc/stronintags.html
+tests/misc/stronintags.txt
+tests/misc/tabs-in-lists.html
+tests/misc/tabs-in-lists.txt
+tests/misc/two-spaces.html
+tests/misc/two-spaces.txt
+tests/misc/uche.html
+tests/misc/uche.txt
+tests/misc/underscores.html
+tests/misc/underscores.txt
+tests/misc/url_spaces.html
+tests/misc/url_spaces.txt
+tests/options/html4.html
+tests/options/html4.txt
+tests/options/lazy_ol_off.html
+tests/options/lazy_ol_off.txt
+tests/options/no-attributes.html
+tests/options/no-attributes.txt
+tests/options/no-smart-emphasis.html
+tests/options/no-smart-emphasis.txt
+tests/options/test.cfg
+tests/php/test.cfg
+tests/php/extra/test.cfg
+tests/pl/Tests_2004/Amps and angle encoding.html
+tests/pl/Tests_2004/Auto links.html
+tests/pl/Tests_2004/Backslash escapes.html
+tests/pl/Tests_2004/Blockquotes with code blocks.html
+tests/pl/Tests_2004/Hard-wrapped paragraphs with list-like lines.html
+tests/pl/Tests_2004/Horizontal rules.html
+tests/pl/Tests_2004/Inline HTML (Advanced).html
+tests/pl/Tests_2004/Inline HTML (Simple).html
+tests/pl/Tests_2004/Inline HTML comments.html
+tests/pl/Tests_2004/Links, inline style.html
+tests/pl/Tests_2004/Links, reference style.html
+tests/pl/Tests_2004/Literal quotes in titles.html
+tests/pl/Tests_2004/Markdown Documentation - Basics.html
+tests/pl/Tests_2004/Markdown Documentation - Syntax.html
+tests/pl/Tests_2004/Nested blockquotes.html
+tests/pl/Tests_2004/Ordered and unordered lists.html
+tests/pl/Tests_2004/Strong and em together.html
+tests/pl/Tests_2004/Tabs.html
+tests/pl/Tests_2004/Tidyness.html
+tests/pl/Tests_2004/Yuri-Attributes.html
+tests/pl/Tests_2004/Yuri-Email.html
+tests/pl/Tests_2004/Yuri-Footnotes.html
+tests/pl/Tests_2004/Yuri-Links-in-Headers.html
+tests/pl/Tests_2004/test.cfg
+tests/pl/Tests_2007/Amps and angle encoding.html
+tests/pl/Tests_2007/Auto links.html
+tests/pl/Tests_2007/Backslash escapes.html
+tests/pl/Tests_2007/Blockquotes with code blocks.html
+tests/pl/Tests_2007/Code Blocks.html
+tests/pl/Tests_2007/Code Spans.html
+tests/pl/Tests_2007/Hard-wrapped paragraphs with list-like lines.html
+tests/pl/Tests_2007/Horizontal rules.html
+tests/pl/Tests_2007/Images.html
+tests/pl/Tests_2007/Inline HTML (Advanced).html
+tests/pl/Tests_2007/Inline HTML (Simple).html
+tests/pl/Tests_2007/Inline HTML comments.html
+tests/pl/Tests_2007/Links, inline style.html
+tests/pl/Tests_2007/Links, reference style.html
+tests/pl/Tests_2007/Links, shortcut references.html
+tests/pl/Tests_2007/Literal quotes in titles.html
+tests/pl/Tests_2007/Markdown Documentation - Basics.html
+tests/pl/Tests_2007/Markdown Documentation - Syntax.html
+tests/pl/Tests_2007/Nested blockquotes.html
+tests/pl/Tests_2007/Ordered and unordered lists.html
+tests/pl/Tests_2007/Strong and em together.html
+tests/pl/Tests_2007/Tabs.html
+tests/pl/Tests_2007/Tidyness.html
+tests/pl/Tests_2007/test.cfg
+tests/safe_mode/html_then_blockquote.html
+tests/safe_mode/html_then_blockquote.txt
+tests/safe_mode/inline-html-advanced.html
+tests/safe_mode/inline-html-advanced.txt
+tests/safe_mode/inline-html-comments.html
+tests/safe_mode/inline-html-comments.txt
+tests/safe_mode/inline-html-simple.html
+tests/safe_mode/inline-html-simple.txt
+tests/safe_mode/link-targets.html
+tests/safe_mode/link-targets.txt
+tests/safe_mode/remove.html
+tests/safe_mode/remove.txt
+tests/safe_mode/replace.html
+tests/safe_mode/replace.txt
+tests/safe_mode/script_tags.html
+tests/safe_mode/script_tags.txt
+tests/safe_mode/test.cfg
+tests/safe_mode/unsafe_urls.html
+tests/safe_mode/unsafe_urls.txt
-Metadata-Version: 1.0\r
-Name: Markdown\r
-Version: 2.4\r
-Summary: Python implementation of Markdown.\r
-Home-page: http://packages.python.org/Markdown/\r
-Author: Waylan Limberg\r
-Author-email: waylan [at] gmail.com\r
-License: BSD License\r
-Download-URL: http://pypi.python.org/packages/source/M/Markdown/Markdown-2.4.tar.gz\r
-Description: This is a Python implementation of John Gruber's Markdown_. \r
- It is almost completely compliant with the reference implementation,\r
- though there are a few known issues. See Features_ for information \r
- on what exactly is supported and what is not. Additional features are \r
- supported by the `Available Extensions`_.\r
- \r
- .. _Markdown: http://daringfireball.net/projects/markdown/\r
- .. _Features: http://packages.python.org/Markdown/index.html#Features\r
- .. _`Available Extensions`: http://packages.python.org/Markdown/extensions/index.html\r
- \r
- Support\r
- =======\r
- \r
- You may ask for help and discuss various other issues on the\r
- `mailing list`_ and report bugs on the `bug tracker`_.\r
- \r
- .. _`mailing list`: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss\r
- .. _`bug tracker`: http://github.com/waylan/Python-Markdown/issues\r
- \r
-Platform: UNKNOWN\r
-Classifier: Development Status :: 5 - Production/Stable\r
-Classifier: License :: OSI Approved :: BSD License\r
-Classifier: Operating System :: OS Independent\r
-Classifier: Programming Language :: Python\r
-Classifier: Programming Language :: Python :: 2\r
-Classifier: Programming Language :: Python :: 2.6\r
-Classifier: Programming Language :: Python :: 2.7\r
-Classifier: Programming Language :: Python :: 3\r
-Classifier: Programming Language :: Python :: 3.1\r
-Classifier: Programming Language :: Python :: 3.2\r
-Classifier: Programming Language :: Python :: 3.3\r
-Classifier: Topic :: Communications :: Email :: Filters\r
-Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries\r
-Classifier: Topic :: Internet :: WWW/HTTP :: Site Management\r
-Classifier: Topic :: Software Development :: Documentation\r
-Classifier: Topic :: Software Development :: Libraries :: Python Modules\r
-Classifier: Topic :: Text Processing :: Filters\r
-Classifier: Topic :: Text Processing :: Markup :: HTML\r
+Metadata-Version: 1.0
+Name: Markdown
+Version: 2.5
+Summary: Python implementation of Markdown.
+Home-page: https://pythonhosted.org/Markdown/
+Author: Waylan Limberg
+Author-email: waylan [at] gmail.com
+License: BSD License
+Download-URL: http://pypi.python.org/packages/source/M/Markdown/Markdown-2.5.tar.gz
+Description: This is a Python implementation of John Gruber's Markdown_.
+ It is almost completely compliant with the reference implementation,
+ though there are a few known issues. See Features_ for information
+ on what exactly is supported and what is not. Additional features are
+ supported by the `Available Extensions`_.
+
+ .. _Markdown: http://daringfireball.net/projects/markdown/
+ .. _Features: https://pythonhosted.org/Markdown/index.html#Features
+ .. _`Available Extensions`: https://pythonhosted.org/Markdown/extensions/index.html
+
+ Support
+ =======
+
+ You may ask for help and discuss various other issues on the
+ `mailing list`_ and report bugs on the `bug tracker`_.
+
+ .. _`mailing list`: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss
+ .. _`bug tracker`: http://github.com/waylan/Python-Markdown/issues
+
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.2
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Topic :: Communications :: Email :: Filters
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries
+Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
+Classifier: Topic :: Software Development :: Documentation
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Text Processing :: Filters
+Classifier: Topic :: Text Processing :: Markup :: HTML
-[Python-Markdown][]\r
-===================\r
-\r
-This is a Python implementation of John Gruber's [Markdown][]. \r
-It is almost completely compliant with the reference implementation,\r
-though there are a few known issues. See [Features][] for information \r
-on what exactly is supported and what is not. Additional features are \r
-supported by the [Available Extensions][].\r
-\r
-[Python-Markdown]: http://packages.python.org/Markdown/\r
-[Markdown]: http://daringfireball.net/projects/markdown/\r
-[Features]: http://packages.python.org/Markdown/index.html#Features\r
-[Available Extensions]: http://packages.python.org/Markdown/extensions/index.html\r
-\r
-\r
-Documentation\r
--------------\r
-\r
-Installation and usage documentation is available in the `docs/` directory\r
-of the distribution and on the project website at \r
-<http://packages.python.org/Markdown/>.\r
-\r
-Support\r
--------\r
-\r
-You may ask for help and discuss various other issues on the [mailing list][] and report bugs on the [bug tracker][].\r
-\r
-[mailing list]: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss\r
-[bug tracker]: http://github.com/waylan/Python-Markdown/issues \r
-\r
+[Python-Markdown][]
+===================
+
+[](https://travis-ci.org/waylan/Python-Markdown)
+[](https://coveralls.io/r/waylan/Python-Markdown?branch=master)
+[](https://pypi.python.org/pypi/Markdown#downloads)
+[](http://pypi.python.org/pypi/Markdown)
+[](http://opensource.org/licenses/BSD-3-Clause)
+
+This is a Python implementation of John Gruber's [Markdown][].
+It is almost completely compliant with the reference implementation,
+though there are a few known issues. See [Features][] for information
+on what exactly is supported and what is not. Additional features are
+supported by the [Available Extensions][].
+
+[Python-Markdown]: https://pythonhosted.org/Markdown/
+[Markdown]: http://daringfireball.net/projects/markdown/
+[Features]: https://pythonhosted.org/Markdown/index.html#Features
+[Available Extensions]: https://pythonhosted.org/Markdown/extensions/index.html
+
+
+Documentation
+-------------
+
+Installation and usage documentation is available in the `docs/` directory
+of the distribution and on the project website at
+<https://pythonhosted.org/Markdown/>.
+
+Support
+-------
+
+You may ask for help and discuss various other issues on the [mailing list][] and report bugs on the [bug tracker][].
+
+[mailing list]: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss
+[bug tracker]: http://github.com/waylan/Python-Markdown/issues
-#!/usr/bin/env python\r
-"""\r
-Python Markdown, the Command Line Script\r
-========================================\r
-\r
-This is the command line script for Python Markdown.\r
-\r
-Basic use from the command line:\r
-\r
- markdown source.txt > destination.html\r
-\r
-Run "markdown --help" to see more options.\r
-\r
-See markdown/__init__.py for information on using Python Markdown as a module.\r
-\r
-## Authors and License\r
-\r
-Started by [Manfred Stienstra](http://www.dwerg.net/). Continued and\r
-maintained by [Yuri Takhteyev](http://www.freewisdom.org), [Waylan\r
-Limberg](http://achinghead.com/) and [Artem Yunusov](http://blog.splyer.com).\r
-\r
-Contact: markdown@freewisdom.org\r
-\r
-Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)\r
-Copyright 200? Django Software Foundation (OrderedDict implementation)\r
-Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)\r
-Copyright 2004 Manfred Stienstra (the original version)\r
-\r
-License: BSD (see docs/LICENSE for details).\r
-"""\r
-\r
-if __name__ == '__main__':\r
- from markdown.__main__ import run\r
- run()\r
+#!/usr/bin/env python
+"""
+Python Markdown, the Command Line Script
+========================================
+
+This is the command line script for Python Markdown.
+
+Basic use from the command line:
+
+ markdown source.txt > destination.html
+
+Run "markdown --help" to see more options.
+
+See markdown/__init__.py for information on using Python Markdown as a module.
+
+## Authors and License
+
+Started by [Manfred Stienstra](http://www.dwerg.net/). Continued and
+maintained by [Yuri Takhteyev](http://www.freewisdom.org), [Waylan
+Limberg](http://achinghead.com/) and [Artem Yunusov](http://blog.splyer.com).
+
+Contact: markdown@freewisdom.org
+
+Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
+Copyright 200? Django Software Foundation (OrderedDict implementation)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see docs/LICENSE for details).
+"""
+
+if __name__ == '__main__':
+ from markdown.__main__ import run
+ run()
-<!DOCTYPE html>\r
-<html>\r
-<head>\r
-<meta charset=utf-8>\r
-<title>%(page_title)s</title>\r
-<link rel="stylesheet" href="%(base)sdefault.css" type="text/css">\r
-</head>\r
-<body>\r
-\r
-<div class="related">\r
- <h3>Navigation</h3>\r
- <ul>\r
- <li class="right" style="margin-right: 10px">\r
- <a href="%(base)ssiteindex.html" title="General Index">index</a></li>\r
- <li class="right">\r
- <a href="%(next_url)s" title="%(next_title)s"\r
- accesskey="N">next</a> |</li>\r
- <li class="right">\r
- <a href="%(prev_url)s" title="%(prev_title)s"\r
- accesskey="P">previous</a> |</li>\r
- <li><img src="%(base)spy.png" alt=""\r
- style="vertical-align: middle; margin-top: -1px"/></li>\r
- <li><a href="%(base)sindex.html">Python Markdown v%(version)s documentation</a> »</li>\r
- %(crumb)s\r
- </ul>\r
-</div> <!-- .related -->\r
-\r
-<div class="document">\r
- <div class="documentwrapper">\r
- <div class="bodywrapper">\r
- <div class="body">\r
-%(body)s\r
- </div> <!-- .body -->\r
- </div> <!-- .bodywrapper -->\r
- </div> <!-- .documentwrapper -->\r
-\r
- <div class="sphinxsidebar">\r
- <div class="sphinxsidebarwrapper">\r
- <h3>Table Of Contents</h3>\r
- %(toc)s\r
-\r
- <h4>Previous topic</h4>\r
- <p class="topless"><a href="%(prev_url)s"\r
- title="previous chapter">%(prev_title)s</a></p>\r
- <h4>Next topic</h4>\r
- <p class="topless"><a href="%(next_url)s"\r
- title="next chapter">%(next_title)s</a></p>\r
- <h3>This Page</h3>\r
- <ul class="this-page-menu">\r
- <li><a href="https://github.com/waylan/Python-Markdown/issues"\r
- >Report a Bug</a></li>\r
- <li><a href="%(source)s"\r
- rel="nofollow">Show Source</a></li>\r
- </ul>\r
- </div> <!-- .sphinxsidebarwrapper -->\r
- </div> <!-- .sphinxsidebar -->\r
-\r
- <div class="clearer"></div>\r
-</div> <!-- .document -->\r
-\r
-<div class="related">\r
- <h3>Navigation</h3>\r
- <ul>\r
- <li class="right" style="margin-right: 10px">\r
- <a href="%(base)ssiteindex.html" title="General Index">index</a></li>\r
- <li class="right">\r
- <a href="%(next_url)s" title="%(next_title)s"\r
- accesskey="N">next</a> |</li>\r
- <li class="right">\r
- <a href="%(prev_url)s" title="%(prev_title)s"\r
- accesskey="P">previous</a> |</li>\r
- <li><img src="%(base)spy.png" alt=""\r
- style="vertical-align: middle; margin-top: -1px"/></li>\r
- <li><a href="%(base)sindex.html">Python Markdown v%(version)s documentation</a> »</li>\r
- %(crumb)s\r
- </ul>\r
-</div> <!-- .related -->\r
-\r
-<div class="footer">© 2010-2012 Python Markdown Project</div>\r
-</body>\r
-</html>\r
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<title>%(page_title)s</title>
+<link rel="stylesheet" href="%(base)sdefault.css" type="text/css">
+</head>
+<body>
+
+<div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="%(base)ssiteindex.html" title="General Index">index</a></li>
+ <li class="right">
+ <a href="%(next_url)s" title="%(next_title)s"
+ accesskey="N">next</a> |</li>
+ <li class="right">
+ <a href="%(prev_url)s" title="%(prev_title)s"
+ accesskey="P">previous</a> |</li>
+ <li><img src="%(base)spy.png" alt=""
+ style="vertical-align: middle; margin-top: -1px"/></li>
+ <li><a href="%(base)sindex.html">Python Markdown v%(version)s documentation</a> »</li>
+ %(crumb)s
+ </ul>
+</div> <!-- .related -->
+
+<div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+%(body)s
+ </div> <!-- .body -->
+ </div> <!-- .bodywrapper -->
+ </div> <!-- .documentwrapper -->
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3>Table Of Contents</h3>
+ %(toc)s
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="%(prev_url)s"
+ title="previous chapter">%(prev_title)s</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="%(next_url)s"
+ title="next chapter">%(next_title)s</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="https://github.com/waylan/Python-Markdown/issues"
+ >Report a Bug</a></li>
+ <li><a href="%(source)s"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+ </div> <!-- .sphinxsidebarwrapper -->
+ </div> <!-- .sphinxsidebar -->
+
+ <div class="clearer"></div>
+</div> <!-- .document -->
+
+<div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="%(base)ssiteindex.html" title="General Index">index</a></li>
+ <li class="right">
+ <a href="%(next_url)s" title="%(next_title)s"
+ accesskey="N">next</a> |</li>
+ <li class="right">
+ <a href="%(prev_url)s" title="%(prev_title)s"
+ accesskey="P">previous</a> |</li>
+ <li><img src="%(base)spy.png" alt=""
+ style="vertical-align: middle; margin-top: -1px"/></li>
+ <li><a href="%(base)sindex.html">Python Markdown v%(version)s documentation</a> »</li>
+ %(crumb)s
+ </ul>
+</div> <!-- .related -->
+
+<div class="footer">© 2010-2012 Python Markdown Project</div>
+</body>
+</html>
-title: Authors\r
-prev_title: Release Notes for v2.0\r
-prev_url: release-2.0.html\r
-next_title: Table of Contents\r
-next_url: siteindex.html\r
-\r
-Primary Authors\r
-===============\r
-\r
-[Yuri Takteyev](http://freewisdom.org/)\r
-\r
-: Yuri has written much of the current code while procrastingating his Ph.D.\r
-\r
-[Waylan Limberg](http://achinghead.com/)\r
-\r
-: Waylan is the current maintainer of the code and has written much the current \r
- code base, included a complete refactor of the core. He started out by \r
- authoring mmany of the available extensions and later was asked to join Yuri, \r
- where he began fixing nummrious bugs, adding documentation and making general \r
- improvements to the existing codebase.\r
-\r
-Artem Yunusov\r
-\r
-: Artem, who as part of a 2008 GSoC project, refactored inline patterns, \r
- replaced the NanoDOM with ElementTree support and made various other \r
- improvements.\r
-\r
-[Manfed Stienstra](http://www.dwerg.net/)\r
-\r
-: Manfed wrote the original version of the script and is responsible for \r
- various parts of the existing codebase.\r
-\r
-David Wolever\r
-\r
-: David refactored the extension API and made other improvements\r
- as he helped to integrate Markdown into Dr.Project.\r
-\r
-Other Contributors\r
-==================\r
-\r
-The incomplete list of individuals below have provided patches or otherwise \r
-contributed to the project in various ways. We would like to thank everyone \r
-who has contributed to the progect in any way.\r
-\r
-* Eric Abrahamsen\r
-* Jeff Balogh\r
-* Sergej Chodarev\r
-* Chris Clark\r
-* Tiago Cogumbreiro\r
-* Kjell Magne Fauske\r
-* G. Clark Haynes\r
-* Daniel Krech\r
-* Steward Midwinter\r
-* Jack Miller\r
-* Neale Pickett\r
-* Paul Stansifer\r
-* John Szakmeister\r
-* Malcolm Tredinnick\r
-* Ben Wilson\r
-* and many others who helped by reporting bugs\r
+title: Authors
+prev_title: Release Notes for v2.0
+prev_url: release-2.0.html
+next_title: Table of Contents
+next_url: siteindex.html
+
+Primary Authors
+===============
+
+[Yuri Takteyev](http://freewisdom.org/)
+
+: Yuri has written much of the current code while procrastingating his Ph.D.
+
+[Waylan Limberg](http://achinghead.com/)
+
+: Waylan is the current maintainer of the code and has written much the current
+ code base, included a complete refactor of the core. He started out by
+ authoring mmany of the available extensions and later was asked to join Yuri,
+ where he began fixing nummrious bugs, adding documentation and making general
+ improvements to the existing codebase.
+
+Artem Yunusov
+
+: Artem, who as part of a 2008 GSoC project, refactored inline patterns,
+ replaced the NanoDOM with ElementTree support and made various other
+ improvements.
+
+[Manfed Stienstra](http://www.dwerg.net/)
+
+: Manfed wrote the original version of the script and is responsible for
+ various parts of the existing codebase.
+
+David Wolever
+
+: David refactored the extension API and made other improvements
+ as he helped to integrate Markdown into Dr.Project.
+
+Other Contributors
+==================
+
+The incomplete list of individuals below have provided patches or otherwise
+contributed to the project in various ways. We would like to thank everyone
+who has contributed to the progect in any way.
+
+* Eric Abrahamsen
+* Jeff Balogh
+* Sergej Chodarev
+* Chris Clark
+* Tiago Cogumbreiro
+* Kjell Magne Fauske
+* G. Clark Haynes
+* Daniel Krech
+* Steward Midwinter
+* Jack Miller
+* Neale Pickett
+* Paul Stansifer
+* John Szakmeister
+* Malcolm Tredinnick
+* Ben Wilson
+* and many others who helped by reporting bugs
-/**\r
- * Sphinx stylesheet -- basic theme\r
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
- */\r
-\r
-/* -- main layout ----------------------------------------------------------- */\r
-\r
-div.clearer {\r
- clear: both;\r
-}\r
-\r
-/* -- relbar ---------------------------------------------------------------- */\r
-\r
-div.related {\r
- width: 100%;\r
- font-size: 90%;\r
-}\r
-\r
-div.related h3 {\r
- display: none;\r
-}\r
-\r
-div.related ul {\r
- margin: 0;\r
- padding: 0 0 0 10px;\r
- list-style: none;\r
-}\r
-\r
-div.related li {\r
- display: inline;\r
-}\r
-\r
-div.related li.right {\r
- float: right;\r
- margin-right: 5px;\r
-}\r
-\r
-/* -- sidebar --------------------------------------------------------------- */\r
-\r
-div.sphinxsidebarwrapper {\r
- padding: 10px 5px 0 10px;\r
-}\r
-\r
-div.sphinxsidebar {\r
- float: left;\r
- width: 230px;\r
- margin-left: -100%;\r
- font-size: 90%;\r
-}\r
-\r
-div.sphinxsidebar ul {\r
- list-style: none;\r
-}\r
-\r
-div.sphinxsidebar ul ul,\r
-div.sphinxsidebar ul.want-points {\r
- margin-left: 20px;\r
- list-style: square;\r
-}\r
-\r
-div.sphinxsidebar ul ul {\r
- margin-top: 0;\r
- margin-bottom: 0;\r
-}\r
-\r
-div.sphinxsidebar form {\r
- margin-top: 10px;\r
-}\r
-\r
-div.sphinxsidebar input {\r
- border: 1px solid #98dbcc;\r
- font-family: sans-serif;\r
- font-size: 1em;\r
-}\r
-\r
-img {\r
- border: 0;\r
-}\r
-\r
-/* -- search page ----------------------------------------------------------- */\r
-\r
-ul.search {\r
- margin: 10px 0 0 20px;\r
- padding: 0;\r
-}\r
-\r
-ul.search li {\r
- padding: 5px 0 5px 20px;\r
- background-image: url(file.png);\r
- background-repeat: no-repeat;\r
- background-position: 0 7px;\r
-}\r
-\r
-ul.search li a {\r
- font-weight: bold;\r
-}\r
-\r
-ul.search li div.context {\r
- color: #888;\r
- margin: 2px 0 0 30px;\r
- text-align: left;\r
-}\r
-\r
-ul.keywordmatches li.goodmatch a {\r
- font-weight: bold;\r
-}\r
-\r
-/* -- index page ------------------------------------------------------------ */\r
-\r
-table.contentstable {\r
- width: 90%;\r
-}\r
-\r
-table.contentstable p.biglink {\r
- line-height: 150%;\r
-}\r
-\r
-a.biglink {\r
- font-size: 1.3em;\r
-}\r
-\r
-span.linkdescr {\r
- font-style: italic;\r
- padding-top: 5px;\r
- font-size: 90%;\r
-}\r
-\r
-/* -- general index --------------------------------------------------------- */\r
-\r
-table.indextable td {\r
- text-align: left;\r
- vertical-align: top;\r
-}\r
-\r
-table.indextable dl, table.indextable dd {\r
- margin-top: 0;\r
- margin-bottom: 0;\r
-}\r
-\r
-table.indextable tr.pcap {\r
- height: 10px;\r
-}\r
-\r
-table.indextable tr.cap {\r
- margin-top: 10px;\r
- background-color: #f2f2f2;\r
-}\r
-\r
-img.toggler {\r
- margin-right: 3px;\r
- margin-top: 3px;\r
- cursor: pointer;\r
-}\r
-\r
-/* -- general body styles --------------------------------------------------- */\r
-\r
-a.headerlink {\r
- visibility: hidden;\r
-}\r
-\r
-h1:hover > a.headerlink,\r
-h2:hover > a.headerlink,\r
-h3:hover > a.headerlink,\r
-h4:hover > a.headerlink,\r
-h5:hover > a.headerlink,\r
-h6:hover > a.headerlink,\r
-dt:hover > a.headerlink {\r
- visibility: visible;\r
-}\r
-\r
-div.body p.caption {\r
- text-align: inherit;\r
-}\r
-\r
-div.body td {\r
- text-align: left;\r
-}\r
-\r
-.field-list ul {\r
- padding-left: 1em;\r
-}\r
-\r
-.first {\r
- margin-top: 0 !important;\r
-}\r
-\r
-p.rubric {\r
- margin-top: 30px;\r
- font-weight: bold;\r
-}\r
-\r
-/* -- sidebars -------------------------------------------------------------- */\r
-\r
-div.sidebar {\r
- margin: 0 0 0.5em 1em;\r
- border: 1px solid #ddb;\r
- padding: 7px 7px 0 7px;\r
- background-color: #ffe;\r
- width: 40%;\r
- float: right;\r
-}\r
-\r
-p.sidebar-title {\r
- font-weight: bold;\r
-}\r
-\r
-/* -- topics ---------------------------------------------------------------- */\r
-\r
-div.topic {\r
- border: 1px solid #ccc;\r
- padding: 7px 7px 0 7px;\r
- margin: 10px 0 10px 0;\r
-}\r
-\r
-p.topic-title {\r
- font-size: 1.1em;\r
- font-weight: bold;\r
- margin-top: 10px;\r
-}\r
-\r
-/* -- admonitions ----------------------------------------------------------- */\r
-\r
-div.admonition {\r
- margin-top: 10px;\r
- margin-bottom: 10px;\r
- padding: 7px;\r
-}\r
-\r
-div.admonition dt {\r
- font-weight: bold;\r
-}\r
-\r
-div.admonition dl {\r
- margin-bottom: 0;\r
-}\r
-\r
-p.admonition-title {\r
- margin: 0px 10px 5px 0px;\r
- font-weight: bold;\r
-}\r
-\r
-div.body p.centered {\r
- text-align: center;\r
- margin-top: 25px;\r
-}\r
-\r
-/* -- tables ---------------------------------------------------------------- */\r
-\r
-table {\r
- border: 0 solid #dce;\r
- border-collapse: collapse;\r
-}\r
-\r
-table td, table th {\r
- padding: 2px 5px 2px 5px;\r
-}\r
-\r
-table td {\r
- border: 1px solid #ddd;\r
- background-color: #eef;\r
-}\r
-\r
-table td p.last, table th p.last {\r
- margin-bottom: 0;\r
-}\r
-\r
-table.field-list td, table.field-list th {\r
- border: 0 !important;\r
-}\r
-\r
-table.footnote td, table.footnote th {\r
- border: 0 !important;\r
-}\r
-\r
-table th {\r
- border: 1px solid #cac;\r
- background-color: #ede;\r
-}\r
-\r
-th {\r
- text-align: left;\r
- padding-right: 5px;\r
-}\r
-\r
-th.head {\r
- text-align: center;\r
-}\r
-\r
-/* -- other body styles ----------------------------------------------------- */\r
-\r
-dl {\r
- margin-bottom: 15px;\r
-}\r
-\r
-dd p {\r
- margin-top: 0px;\r
-}\r
-\r
-dd ul, dd table {\r
- margin-bottom: 10px;\r
-}\r
-\r
-dd {\r
- margin-top: 3px;\r
- margin-bottom: 10px;\r
- margin-left: 30px;\r
-}\r
-\r
-dt:target, .highlight {\r
- background-color: #fbe54e;\r
-}\r
-\r
-dl.glossary dt {\r
- font-weight: bold;\r
- font-size: 1.1em;\r
-}\r
-\r
-.field-list ul {\r
- margin: 0;\r
- padding-left: 1em;\r
-}\r
-\r
-.field-list p {\r
- margin: 0;\r
-}\r
-\r
-.refcount {\r
- color: #060;\r
-}\r
-\r
-.optional {\r
- font-size: 1.3em;\r
-}\r
-\r
-.versionmodified {\r
- font-style: italic;\r
-}\r
-\r
-p.deprecated {\r
- background-color: #ffe4e4;\r
- border: 1px solid #f66;\r
- padding: 7px\r
-}\r
-\r
-.system-message {\r
- background-color: #fda;\r
- padding: 5px;\r
- border: 3px solid red;\r
-}\r
-\r
-.footnote:target {\r
- background-color: #ffa;\r
-}\r
-\r
-.impl-detail {\r
- margin-top: 10px;\r
- margin-bottom: 10px;\r
- padding: 7px;\r
- border: 1px solid #ccc;\r
-}\r
-\r
-.impl-detail .compound-first {\r
- margin-top: 0;\r
-}\r
-\r
-.impl-detail .compound-last {\r
- margin-bottom: 0;\r
-}\r
-\r
-/* -- code displays --------------------------------------------------------- */\r
-\r
-pre {\r
- overflow: auto;\r
- overflow-y: hidden;\r
-}\r
-\r
-code {\r
- font-size: 1.1em;\r
-}\r
-\r
-td.linenos pre {\r
- padding: 5px 0px;\r
- border: 0;\r
- background-color: transparent;\r
- color: #aaa;\r
-}\r
-\r
-table.highlighttable {\r
- margin-left: 0.5em;\r
-}\r
-\r
-table.highlighttable td {\r
- padding: 0 0.5em 0 0.5em;\r
-}\r
-\r
-tt.descname {\r
- background-color: transparent;\r
- font-weight: bold;\r
- font-size: 1.2em;\r
-}\r
-\r
-tt.descclassname {\r
- background-color: transparent;\r
-}\r
-\r
-tt.xref, a tt {\r
- background-color: transparent;\r
- font-weight: bold;\r
-}\r
-\r
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {\r
- background-color: transparent;\r
-}\r
-\r
-/* -- math display ---------------------------------------------------------- */\r
-\r
-img.math {\r
- vertical-align: middle;\r
-}\r
-\r
-div.body div.math p {\r
- text-align: center;\r
-}\r
-\r
-span.eqno {\r
- float: right;\r
-}\r
-\r
-/* -- printout stylesheet --------------------------------------------------- */\r
-\r
-@media print {\r
- div.document,\r
- div.documentwrapper,\r
- div.bodywrapper {\r
- margin: 0 !important;\r
- width: 100%;\r
- }\r
-\r
- div.sphinxsidebar,\r
- div.related,\r
- div.footer,\r
- #top-link {\r
- display: none;\r
- }\r
-}\r
+/**
+ * Sphinx stylesheet -- basic theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+img {
+ border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+ visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.field-list ul {
+ padding-left: 1em;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px 7px 0 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px 7px 0 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+div.admonition dl {
+ margin-bottom: 0;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table {
+ border: 0 solid #dce;
+ border-collapse: collapse;
+}
+
+table td, table th {
+ padding: 2px 5px 2px 5px;
+}
+
+table td {
+ border: 1px solid #ddd;
+ background-color: #eef;
+}
+
+table td p.last, table th p.last {
+ margin-bottom: 0;
+}
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+ border: 0 !important;
+}
+
+table th {
+ border: 1px solid #cac;
+ background-color: #ede;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+th.head {
+ text-align: center;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+dt:target, .highlight {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.refcount {
+ color: #060;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+p.deprecated {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+ padding: 7px
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.impl-detail {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+ border: 1px solid #ccc;
+}
+
+.impl-detail .compound-first {
+ margin-top: 0;
+}
+
+.impl-detail .compound-last {
+ margin-bottom: 0;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden;
+}
+
+code {
+ font-size: 1.1em;
+}
+
+td.linenos pre {
+ padding: 5px 0px;
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ margin-left: 0.5em;
+}
+
+table.highlighttable td {
+ padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+tt.descclassname {
+ background-color: transparent;
+}
+
+tt.xref, a tt {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ background-color: transparent;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+}
-title: Change Log\r
-prev_title: Test Suite\r
-prev_url: test_suite.html\r
-next_title: Release Notes for v2.4\r
-next_url: release-2.4.html\r
-\r
-Python-Markdown Changelog\r
-=========================\r
-\r
-__: Released version 2.4.0 ([Notes](release-2.4.html))\r
-\r
-Mar 22, 2013: Released version 2.3.1 (a bugfix release).\r
-\r
-Mar 14, 2013: Released version 2.3.0 ([Notes](release-2.3.html))\r
-\r
-Nov 4, 2012: Released version 2.2.1 ([Notes](release-2.2.1.html)).\r
-\r
-Jul 5, 2012: Released version 2.2.0 ([Notes](release-2.2.0.html)).\r
-\r
-Jan 22, 2012: Released version 2.1.1 ([Notes](release-2.1.1.html)).\r
-\r
-Nov 24, 2011: Released version 2.1.0 ([Notes](release-2.1.0.html)).\r
-\r
-Oct 7, 2009: Released version 2.0.3.\r
-\r
-Sept 28, 2009: Released version 2.0.2 ([Notes](release-2.0.2.html)).\r
-\r
-May 20, 2009: Released version 2.0.1 ([Notes](release-2.0.1.html)).\r
-\r
-Mar 30, 2009: Released version 2.0 ([Notes](release-2.0.html)).\r
-\r
-Mar 8, 2009: Release Candidate 2.0-rc-1.\r
-\r
-Feb 2009: Added support for multi-level lists to new Blockprocessors.\r
-\r
-Jan 2009: Added HTML 4 output as an option (thanks Eric Abrahamsen)\r
-\r
-Nov 2008: Added Definistion List ext. Replaced old core with BlockProcessors.\r
-Broken up into multiple files.\r
-\r
-Oct 2008: Changed logging behavior to work better with other systems.\r
-Refactored tree tarversing. Added treap implementation, then replaced with\r
-OrderedDEict. Renamed various processors to better reflect what they actually\r
-do. Refactored footnote ext to match php Extra's output.\r
-\r
-Sept 2008: Moved prettifyTree to a Postprocessor, replaced wikilink ext\r
-with wikilinks (note the s) ext (uses bracketed links instead of CamelCase)\r
-and various bug fixes.\r
-\r
-August 18 2008: Reorganized directory structure. Added a 'docs' dir\r
-and moved all extensions into a 'markdown-extensions' package.\r
-Added additional documentation and a few bug fixes. (v2.0-beta)\r
-\r
-August 4 2008: Updated included extensions to ElementTree. Added a\r
-seperate commanline script. (v2.0-alpha)\r
-\r
-July 2008: Switched from home-grown NanoDOM to ElementTree and\r
-various related bugs (thanks Artem Yunusov).\r
-\r
-June 2008: Fixed issues with nested inline patterns and cleaned\r
-up testing framework (thanks Artem Yunusov).\r
-\r
-May 2008: Added a number of additional extensions to the\r
-distribution and other minor changes. Moved repo to git from svn.\r
-\r
-Mar 2008: Refactored extension api to accept either an\r
-extension name (as a string) or an instance of an extension\r
-(Thanks David Wolever). Fixed various bugs and added doc strings.\r
-\r
-Feb 2008: Various bugfixes mostly regarding extensions.\r
-\r
-Feb 18, 2008: Version 1.7.\r
-\r
-Feb 13, 2008: A little code cleanup and better documentation\r
-and inheritance for pre/post proccessors.\r
-\r
-Feb 9, 2008: Doublequotes no longer html escaped and rawhtml\r
-honors `<?foo>`, `<@foo>`, and `<%foo>` for those who run markdown on\r
-template syntax.\r
-\r
-Dec 12, 2007: Updated docs. Removed encoding arg from Markdown\r
-and markdown as per list discussion. Clean up in prep for 1.7.\r
-\r
-Nov 29, 2007: Added support for images inside links. Also fixed\r
-a few bugs in the footnote extension.\r
-\r
-Nov 19, 2007: `message` now uses python's logging module. Also removed\r
-limit imposed by recursion in `_process_section()`. You can now parse as\r
-long of a document as your memory can handle.\r
-\r
-Nov 5, 2007: Moved safe_mode code to a textPostprocessor and added\r
-escaping option.\r
-\r
-Nov 3, 2007: Fixed convert method to accept empty strings.\r
-\r
-Oct 30, 2007: Fixed BOM removal (thanks Malcolm Tredinnick). Fixed\r
-infinite loop in bracket regex for inline links.\r
-\r
-Oct 11, 2007: LineBreaks is now an inlinePattern. Fixed HR in\r
-blockquotes. Refactored _processSection method (see tracker #1793419).\r
-\r
-Oct 9, 2007: Added textPreprocessor (from 1.6b).\r
-\r
-Oct 8, 2008: Fixed Lazy Blockquote. Fixed code block on first line.\r
-Fixed empty inline image link.\r
-\r
-Oct 7, 2007: Limit recursion on inlinePatterns. Added a 'safe' tag\r
-to htmlStash.\r
-\r
-March 18, 2007: Fixed or merged a bunch of minor bugs, including\r
-multi-line comments and markup inside links. (Tracker #s: 1683066,\r
-1671153, 1661751, 1627935, 1544371, 1458139.) -> v. 1.6b\r
-\r
-Oct 10, 2006: Fixed a bug that caused some text to be lost after\r
-comments. Added "safe mode" (user's html tags are removed).\r
-\r
-Sept 6, 2006: Added exception for PHP tags when handling html blocks.\r
-\r
-August 7, 2006: Incorporated Sergej Chodarev's patch to fix a problem\r
-with ampersand normalization and html blocks.\r
-\r
-July 10, 2006: Switched to using optparse. Added proper support for\r
-unicode.\r
-\r
-July 9, 2006: Fixed the `<!--@address.com>` problem (Tracker #1501354).\r
-\r
-May 18, 2006: Stopped catching unquoted titles in reference links.\r
-Stopped creating blank headers.\r
-\r
-May 15, 2006: A bug with lists, recursion on block-level elements,\r
-run-in headers, spaces before headers, unicode input (thanks to Aaron\r
-Swartz). Sourceforge tracker #s: 1489313, 1489312, 1489311, 1488370,\r
-1485178, 1485176. (v. 1.5)\r
-\r
-Mar. 24, 2006: Switched to a not-so-recursive algorithm with\r
-_handleInline. (Version 1.4)\r
-\r
-Mar. 15, 2006: Replaced some instance variables with class variables\r
-(a patch from Stelios Xanthakis). Chris Clark's new regexps that do\r
-not trigger midword underlining.\r
-\r
-Feb. 28, 2006: Clean-up and command-line handling by Stewart\r
-Midwinter. (Version 1.3)\r
-\r
-Feb. 24, 2006: Fixed a bug with the last line of the list appearing\r
-again as a separate paragraph. Incorporated Chris Clark's "mailto"\r
-patch. Added support for `<br />` at the end of lines ending in two or\r
-more spaces. Fixed a crashing bug when using ImageReferencePattern.\r
-Added several utility methods to Nanodom. (Version 1.2)\r
-\r
-Jan. 31, 2006: Added `hr` and `hr/` to BLOCK_LEVEL_ELEMENTS and\r
-changed `<hr/>` to `<hr />`. (Thanks to Sergej Chodarev.)\r
-\r
-Nov. 26, 2005: Fixed a bug with certain tabbed lines inside lists\r
-getting wrapped in `<pre><code>`. (v. 1.1)\r
-\r
-Nov. 19, 2005: Made `<!...`, `<?...`, etc. behave like block-level\r
-HTML tags.\r
-\r
-Nov. 14, 2005: Added entity code and email autolink fix by Tiago\r
-Cogumbreiro. Fixed some small issues with backticks to get 100%\r
-compliance with John's test suite. (v. 1.0)\r
-\r
-Nov. 7, 2005: Added an unlink method for documents to aid with memory\r
-collection (per Doug Sauder's suggestion).\r
-\r
-Oct. 29, 2005: Restricted a set of html tags that get treated as\r
-block-level elements.\r
-\r
-Sept. 18, 2005: Refactored the whole script to make it easier to\r
-customize it and made footnote functionality into an extension.\r
-(v. 0.9)\r
-\r
-Sept. 5, 2005: Fixed a bug with multi-paragraph footnotes. Added\r
-attribute support.\r
-\r
-Sept. 1, 2005: Changed the way headers are handled to allow inline\r
-syntax in headers (e.g. links) and got the lists to use p-tags\r
-correctly (v. 0.8)\r
-\r
-Aug. 29, 2005: Added flexible tabs, fixed a few small issues, added\r
-basic support for footnotes. Got rid of xml.dom.minidom and added\r
-pretty-printing. (v. 0.7)\r
-\r
-Aug. 13, 2005: Fixed a number of small bugs in order to conform to the\r
-test suite. (v. 0.6)\r
-\r
-Aug. 11, 2005: Added support for inline html and entities, inline\r
-images, autolinks, underscore emphasis. Cleaned up and refactored the\r
-code, added some more comments.\r
-\r
-Feb. 19, 2005: Rewrote the handling of high-level elements to allow\r
-multi-line list items and all sorts of nesting.\r
-\r
-Feb. 3, 2005: Reference-style links, single-line lists, backticks,\r
-escape, emphasis in the beginning of the paragraph.\r
-\r
-Nov. 2004: Added links, blockquotes, html blocks to Manfred\r
-Stienstra's code\r
-\r
-Apr. 2004: Manfred's version at <http://www.dwerg.net/projects/markdown/>\r
-\r
+title: Change Log
+prev_title: Test Suite
+prev_url: test_suite.html
+next_title: Release Notes for v2.5
+next_url: release-2.5.html
+
+Python-Markdown Changelog
+=========================
+
+[TBD]: Released version 2.5.0 ([Notes](release-2.5.html))
+
+Feb 16, 2014: Released version 2.4.0 ([Notes](release-2.4.html))
+
+Mar 22, 2013: Released version 2.3.1 (a bugfix release).
+
+Mar 14, 2013: Released version 2.3.0 ([Notes](release-2.3.html))
+
+Nov 4, 2012: Released version 2.2.1 ([Notes](release-2.2.1.html)).
+
+Jul 5, 2012: Released version 2.2.0 ([Notes](release-2.2.0.html)).
+
+Jan 22, 2012: Released version 2.1.1 ([Notes](release-2.1.1.html)).
+
+Nov 24, 2011: Released version 2.1.0 ([Notes](release-2.1.0.html)).
+
+Oct 7, 2009: Released version 2.0.3.
+
+Sept 28, 2009: Released version 2.0.2 ([Notes](release-2.0.2.html)).
+
+May 20, 2009: Released version 2.0.1 ([Notes](release-2.0.1.html)).
+
+Mar 30, 2009: Released version 2.0 ([Notes](release-2.0.html)).
+
+Mar 8, 2009: Release Candidate 2.0-rc-1.
+
+Feb 2009: Added support for multi-level lists to new Blockprocessors.
+
+Jan 2009: Added HTML 4 output as an option (thanks Eric Abrahamsen)
+
+Nov 2008: Added Definistion List ext. Replaced old core with BlockProcessors.
+Broken up into multiple files.
+
+Oct 2008: Changed logging behavior to work better with other systems.
+Refactored tree tarversing. Added treap implementation, then replaced with
+OrderedDEict. Renamed various processors to better reflect what they actually
+do. Refactored footnote ext to match php Extra's output.
+
+Sept 2008: Moved prettifyTree to a Postprocessor, replaced wikilink ext
+with wikilinks (note the s) ext (uses bracketed links instead of CamelCase)
+and various bug fixes.
+
+August 18 2008: Reorganized directory structure. Added a 'docs' dir
+and moved all extensions into a 'markdown-extensions' package.
+Added additional documentation and a few bug fixes. (v2.0-beta)
+
+August 4 2008: Updated included extensions to ElementTree. Added a
+seperate commanline script. (v2.0-alpha)
+
+July 2008: Switched from home-grown NanoDOM to ElementTree and
+various related bugs (thanks Artem Yunusov).
+
+June 2008: Fixed issues with nested inline patterns and cleaned
+up testing framework (thanks Artem Yunusov).
+
+May 2008: Added a number of additional extensions to the
+distribution and other minor changes. Moved repo to git from svn.
+
+Mar 2008: Refactored extension api to accept either an
+extension name (as a string) or an instance of an extension
+(Thanks David Wolever). Fixed various bugs and added doc strings.
+
+Feb 2008: Various bugfixes mostly regarding extensions.
+
+Feb 18, 2008: Version 1.7.
+
+Feb 13, 2008: A little code cleanup and better documentation
+and inheritance for pre/post proccessors.
+
+Feb 9, 2008: Doublequotes no longer html escaped and rawhtml
+honors `<?foo>`, `<@foo>`, and `<%foo>` for those who run markdown on
+template syntax.
+
+Dec 12, 2007: Updated docs. Removed encoding arg from Markdown
+and markdown as per list discussion. Clean up in prep for 1.7.
+
+Nov 29, 2007: Added support for images inside links. Also fixed
+a few bugs in the footnote extension.
+
+Nov 19, 2007: `message` now uses python's logging module. Also removed
+limit imposed by recursion in `_process_section()`. You can now parse as
+long of a document as your memory can handle.
+
+Nov 5, 2007: Moved safe_mode code to a textPostprocessor and added
+escaping option.
+
+Nov 3, 2007: Fixed convert method to accept empty strings.
+
+Oct 30, 2007: Fixed BOM removal (thanks Malcolm Tredinnick). Fixed
+infinite loop in bracket regex for inline links.
+
+Oct 11, 2007: LineBreaks is now an inlinePattern. Fixed HR in
+blockquotes. Refactored _processSection method (see tracker #1793419).
+
+Oct 9, 2007: Added textPreprocessor (from 1.6b).
+
+Oct 8, 2008: Fixed Lazy Blockquote. Fixed code block on first line.
+Fixed empty inline image link.
+
+Oct 7, 2007: Limit recursion on inlinePatterns. Added a 'safe' tag
+to htmlStash.
+
+March 18, 2007: Fixed or merged a bunch of minor bugs, including
+multi-line comments and markup inside links. (Tracker #s: 1683066,
+1671153, 1661751, 1627935, 1544371, 1458139.) -> v. 1.6b
+
+Oct 10, 2006: Fixed a bug that caused some text to be lost after
+comments. Added "safe mode" (user's html tags are removed).
+
+Sept 6, 2006: Added exception for PHP tags when handling html blocks.
+
+August 7, 2006: Incorporated Sergej Chodarev's patch to fix a problem
+with ampersand normalization and html blocks.
+
+July 10, 2006: Switched to using optparse. Added proper support for
+unicode.
+
+July 9, 2006: Fixed the `<!--@address.com>` problem (Tracker #1501354).
+
+May 18, 2006: Stopped catching unquoted titles in reference links.
+Stopped creating blank headers.
+
+May 15, 2006: A bug with lists, recursion on block-level elements,
+run-in headers, spaces before headers, unicode input (thanks to Aaron
+Swartz). Sourceforge tracker #s: 1489313, 1489312, 1489311, 1488370,
+1485178, 1485176. (v. 1.5)
+
+Mar. 24, 2006: Switched to a not-so-recursive algorithm with
+_handleInline. (Version 1.4)
+
+Mar. 15, 2006: Replaced some instance variables with class variables
+(a patch from Stelios Xanthakis). Chris Clark's new regexps that do
+not trigger midword underlining.
+
+Feb. 28, 2006: Clean-up and command-line handling by Stewart
+Midwinter. (Version 1.3)
+
+Feb. 24, 2006: Fixed a bug with the last line of the list appearing
+again as a separate paragraph. Incorporated Chris Clark's "mailto"
+patch. Added support for `<br />` at the end of lines ending in two or
+more spaces. Fixed a crashing bug when using ImageReferencePattern.
+Added several utility methods to Nanodom. (Version 1.2)
+
+Jan. 31, 2006: Added `hr` and `hr/` to BLOCK_LEVEL_ELEMENTS and
+changed `<hr/>` to `<hr />`. (Thanks to Sergej Chodarev.)
+
+Nov. 26, 2005: Fixed a bug with certain tabbed lines inside lists
+getting wrapped in `<pre><code>`. (v. 1.1)
+
+Nov. 19, 2005: Made `<!...`, `<?...`, etc. behave like block-level
+HTML tags.
+
+Nov. 14, 2005: Added entity code and email autolink fix by Tiago
+Cogumbreiro. Fixed some small issues with backticks to get 100%
+compliance with John's test suite. (v. 1.0)
+
+Nov. 7, 2005: Added an unlink method for documents to aid with memory
+collection (per Doug Sauder's suggestion).
+
+Oct. 29, 2005: Restricted a set of html tags that get treated as
+block-level elements.
+
+Sept. 18, 2005: Refactored the whole script to make it easier to
+customize it and made footnote functionality into an extension.
+(v. 0.9)
+
+Sept. 5, 2005: Fixed a bug with multi-paragraph footnotes. Added
+attribute support.
+
+Sept. 1, 2005: Changed the way headers are handled to allow inline
+syntax in headers (e.g. links) and got the lists to use p-tags
+correctly (v. 0.8)
+
+Aug. 29, 2005: Added flexible tabs, fixed a few small issues, added
+basic support for footnotes. Got rid of xml.dom.minidom and added
+pretty-printing. (v. 0.7)
+
+Aug. 13, 2005: Fixed a number of small bugs in order to conform to the
+test suite. (v. 0.6)
+
+Aug. 11, 2005: Added support for inline html and entities, inline
+images, autolinks, underscore emphasis. Cleaned up and refactored the
+code, added some more comments.
+
+Feb. 19, 2005: Rewrote the handling of high-level elements to allow
+multi-line list items and all sorts of nesting.
+
+Feb. 3, 2005: Reference-style links, single-line lists, backticks,
+escape, emphasis in the beginning of the paragraph.
+
+Nov. 2004: Added links, blockquotes, html blocks to Manfred
+Stienstra's code
+
+Apr. 2004: Manfred's version at <http://www.dwerg.net/projects/markdown/>
+
-title: Command Line\r
-prev_title: Library Reference\r
-prev_url: reference.html\r
-next_title: Extensions\r
-next_url: extensions/index.html\r
-\r
-\r
-Using Python-Markdown on the Command Line\r
-=========================================\r
-\r
-While Python-Markdown is primarily a python library, a command line script is \r
-included as well. While there are many other command line implementations \r
-of Markdown, you may not have them installed, or you may prefer to use \r
-Python-Markdown's various extensions.\r
-\r
-Generally, you will want to have the Markdown library fully installed on your\r
-system to run the command line script. See the \r
-[Installation instructions](install.html) for details.\r
-\r
-Python-Markdown's command line script takes advantage of Python's `-m` flag.\r
-Therefore, assuming the python executable is on your system path, use the \r
-following format:\r
-\r
- $ python -m markdown [options] [args]\r
-\r
-That will run the module as a script with the options and args provided. \r
-\r
-!!! Note \r
- Unfortunately, Python 2.6 does not fully support the `-m` flag. Therefore, you \r
- may need to specify the module in which the command line script exists \r
- (`markdown.__main__`):\r
-\r
- $ python -m markdown.__main__ [options] [args]\r
-\r
-At its most basic usage, one would simply pass in a file name as the only argument:\r
-\r
- $ python -m markdown input_file.txt\r
-\r
-Piping input and output (on STDIN and STDOUT) is fully supported as well. \r
-For example:\r
-\r
- $ echo "Some **Markdown** text." | python -m markdown > output.html\r
-\r
-Use the `--help` option for a list all available options and args:\r
-\r
- $ python -m markdown --help\r
-\r
-If you don't want to call the python executable directly (using the `-m` flag), \r
-follow the instructions below to use a wrapper script:\r
-\r
-Setup\r
------\r
-\r
-Upon installation, the ``markdown_py`` script will have been copied to\r
-your Python "Scripts" directory. Different systems require different methods to\r
-ensure that any files in the Python "Scripts" directory are on your system \r
-path.\r
-\r
-* **Windows**:\r
-\r
- Assuming a default install of Python on Windows, your "Scripts" directory \r
- is most likely something like ``C:\\Python26\Scripts``. Verify the location\r
- of your "Scripts" directory and add it to you system path.\r
-\r
- Calling ``markdown_py`` from the command line will call the wrapper batch \r
- file ``markdown_py.bat`` in the "Scripts" directory created during install.\r
-\r
-* __*nix__ (Linux, OSX, BSD, Unix, etc.):\r
-\r
- As each *nix distribution is different and we can't possibly document all \r
- of them here, we'll provide a few helpful pointers:\r
-\r
- * Some systems will automatically install the script on your path. Try it \r
- and see if it works. Just run ``markdown_py`` from the command line.\r
-\r
- * Other systems may maintain a separate "Scripts" ("bin") directory which \r
- you need to add to your path. Find it (check with your distribution) and\r
- either add it to your path or make a symbolic link to it from your path.\r
-\r
- * If you are sure ``markdown_py`` is on your path, but it still isn't being\r
- found, check the permissions of the file and make sure it is executable.\r
-\r
- As an alternative, you could just ``cd`` into the directory which contains\r
- the source distribution, and run it from there. However, remember that your\r
- markdown text files will not likely be in that directory, so it is much \r
- more convenient to have ``markdown_py`` on your path.\r
-\r
-!!!Note \r
- Python-Markdown uses "markdown_py" as a script name because\r
- the Perl implementation has already taken the more obvious name "markdown".\r
- Additionally, the default Python configuration on some systems would cause a \r
- script named "markdown.py" to fail by importing itself rather than the markdown\r
- library. Therefore, the script has been named "markdown_py" as a compromise. If\r
- you prefer a different name for the script on your system, it is suggested that\r
- you create a symbolic link to `markdown_py` with your preferred name.\r
-\r
-Usage\r
------\r
-\r
-To use ``markdown_py`` from the command line, run it as \r
-\r
- $ markdown_py input_file.txt\r
-\r
-or \r
-\r
- $ markdown_py input_file.txt > output_file.html\r
-\r
-For a complete list of options, run\r
-\r
- $ markdown_py --help\r
-\r
-Using Extensions\r
-----------------\r
-\r
-For an extension to be run from the command line it must be provided in a module\r
-on your python path (see the [Extension API](extensions/api.html) for details).\r
-It can then be invoked by the name of that module:\r
-\r
- $ markdown_py -x footnotes text_with_footnotes.txt > output.html\r
-\r
-If the extension supports config options, you can pass them in as well:\r
-\r
- $ markdown_py -x "footnotes(PLACE_MARKER=~~~~~~~~)" input.txt\r
-\r
+title: Command Line
+prev_title: Library Reference
+prev_url: reference.html
+next_title: Extensions
+next_url: extensions/index.html
+
+
+Using Python-Markdown on the Command Line
+=========================================
+
+While Python-Markdown is primarily a python library, a command line script is
+included as well. While there are many other command line implementations
+of Markdown, you may not have them installed, or you may prefer to use
+Python-Markdown's various extensions.
+
+Generally, you will want to have the Markdown library fully installed on your
+system to run the command line script. See the
+[Installation instructions](install.html) for details.
+
+Python-Markdown's command line script takes advantage of Python's `-m` flag.
+Therefore, assuming the python executable is on your system path, use the
+following format:
+
+ $ python -m markdown [options] [args]
+
+That will run the module as a script with the options and args provided.
+
+At its most basic usage, one would simply pass in a file name as the only argument:
+
+ $ python -m markdown input_file.txt
+
+Piping input and output (on STDIN and STDOUT) is fully supported as well.
+For example:
+
+ $ echo "Some **Markdown** text." | python -m markdown > output.html
+
+Use the `--help` option for a list all available options and args:
+
+ $ python -m markdown --help
+
+If you don't want to call the python executable directly (using the `-m` flag),
+follow the instructions below to use a wrapper script:
+
+Setup
+-----
+
+Upon installation, the ``markdown_py`` script will have been copied to
+your Python "Scripts" directory. Different systems require different methods to
+ensure that any files in the Python "Scripts" directory are on your system
+path.
+
+* **Windows**:
+
+ Assuming a default install of Python on Windows, your "Scripts" directory
+ is most likely something like ``C:\\Python26\Scripts``. Verify the location
+ of your "Scripts" directory and add it to you system path.
+
+ Calling ``markdown_py`` from the command line will call the wrapper batch
+ file ``markdown_py.bat`` in the "Scripts" directory created during install.
+
+* __*nix__ (Linux, OSX, BSD, Unix, etc.):
+
+ As each *nix distribution is different and we can't possibly document all
+ of them here, we'll provide a few helpful pointers:
+
+ * Some systems will automatically install the script on your path. Try it
+ and see if it works. Just run ``markdown_py`` from the command line.
+
+ * Other systems may maintain a separate "Scripts" ("bin") directory which
+ you need to add to your path. Find it (check with your distribution) and
+ either add it to your path or make a symbolic link to it from your path.
+
+ * If you are sure ``markdown_py`` is on your path, but it still isn't being
+ found, check the permissions of the file and make sure it is executable.
+
+ As an alternative, you could just ``cd`` into the directory which contains
+ the source distribution, and run it from there. However, remember that your
+ markdown text files will not likely be in that directory, so it is much
+ more convenient to have ``markdown_py`` on your path.
+
+!!!Note
+ Python-Markdown uses "markdown_py" as a script name because
+ the Perl implementation has already taken the more obvious name "markdown".
+ Additionally, the default Python configuration on some systems would cause a
+ script named "markdown.py" to fail by importing itself rather than the markdown
+ library. Therefore, the script has been named "markdown_py" as a compromise. If
+ you prefer a different name for the script on your system, it is suggested that
+ you create a symbolic link to `markdown_py` with your preferred name.
+
+Usage
+-----
+
+To use ``markdown_py`` from the command line, run it as
+
+ $ markdown_py input_file.txt
+
+or
+
+ $ markdown_py input_file.txt > output_file.html
+
+For a complete list of options, run
+
+ $ markdown_py --help
+
+Using Extensions
+----------------
+
+To load a Python-Markdown extension from the command line use the `-x`
+(or `--extension`) option. The extension module must be on your `PYTHONPATH`
+(see the [Extension API](extensions/api.html) for details). The extension can
+then be invoked by the name of that module using Python's dot syntax:
+
+ $ python -m markdown -x path.to.module input.txt
+
+To load multiple extensions, specify an `-x` option for each extension:
+
+ $ python -m markdown -x markdown.extensions.footnotes -x markdown.extensions.codehilite input.txt
+
+If the extension supports configuration options (see the documentation for the
+extension you are using to determine what settings it supports, if any), you
+can pass them in as well:
+
+ $ python -m markdown -x markdown.extensions.footnotes -c config.yml input.txt
+
+The `-c` (or `--extension_configs`) option accepts a file name. The file must be in
+either the [YAML] or [JSON] format and contain YAML or JSON data that would map to
+a Python Dictionary in the format required by the [`extension_configs`][ec] keyword
+of the `markdown.Markdown` class. Therefore, the file `config.yaml` referenced in the
+above example might look like this:
+
+ markdown.extensions.footnotes:
+ PLACE_MARKER: ~~~~~~~~
+ UNIQUE_IDS: True
+
+Note that while the `--extension_configs` option does specify the "markdown.extensions.footnotes"
+extension, you still need to load the extension with the `-x` option, or the configs for that
+extension will be ignored.
+
+The `--extension_configs` option will only support YAML config files if [PyYaml] is
+installed on your system. JSON should work with no additional dependencies. The format
+of your config file is automatically detected.
+
+!!!warning
+ The previously documented method of appending the extension configs as a string to the
+ extension name will be deprecated in Python-Markdown version 2.6. The `--extension_configs`
+ option should be used instead. See the [2.5 release notes] for more information.
+
+[ec]: reference.html#extension_configs
+[YAML]: http://yaml.org/
+[JSON]: http://json.org/
+[PyYAML]: http://pyyaml.org/
+[2.5 release notes]: release-2.5.txt
+
-/*\r
- * default.css_t\r
- * ~~~~~~~~~~~~~\r
- *\r
- * Sphinx stylesheet -- default theme.\r
- *\r
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.\r
- * :license: BSD, see LICENSE for details.\r
- *\r
- */\r
-\r
-@import url("basic.css");\r
-\r
-/* -- page layout ----------------------------------------------------------- */\r
-\r
-body {\r
- font-family: sans-serif;\r
- font-size: 100%;\r
- background-color: #11303d;\r
- color: #000;\r
- margin: 0;\r
- padding: 0;\r
-}\r
-\r
-div.document {\r
- background-color: #1c4e63;\r
-}\r
-\r
-div.documentwrapper {\r
- float: left;\r
- width: 100%;\r
-}\r
-\r
-div.bodywrapper {\r
- margin: 0 0 0 230px;\r
-}\r
-\r
-div.body {\r
- background-color: #ffffff;\r
- color: #000000;\r
- padding: 0 20px 30px 20px;\r
-}\r
-\r
-div.footer {\r
- color: #ffffff;\r
- width: 100%;\r
- padding: 9px 0 9px 0;\r
- text-align: center;\r
- font-size: 75%;\r
-}\r
-\r
-div.footer a {\r
- color: #ffffff;\r
- text-decoration: underline;\r
-}\r
-\r
-div.related {\r
- background-color: #133f52;\r
- line-height: 30px;\r
- color: #ffffff;\r
-}\r
-\r
-div.related a {\r
- color: #ffffff;\r
-}\r
-\r
-div.sphinxsidebar {\r
-}\r
-\r
-div.sphinxsidebar h3 {\r
- font-family: 'Trebuchet MS', sans-serif;\r
- color: #ffffff;\r
- font-size: 1.4em;\r
- font-weight: normal;\r
- margin: 0;\r
- padding: 0;\r
-}\r
-\r
-div.sphinxsidebar h3 a {\r
- color: #ffffff;\r
-}\r
-\r
-div.sphinxsidebar h4 {\r
- font-family: 'Trebuchet MS', sans-serif;\r
- color: #ffffff;\r
- font-size: 1.3em;\r
- font-weight: normal;\r
- margin: 5px 0 0 0;\r
- padding: 0;\r
-}\r
-\r
-div.sphinxsidebar p {\r
- color: #ffffff;\r
-}\r
-\r
-div.sphinxsidebar p.topless {\r
- margin: 5px 10px 10px 10px;\r
-}\r
-\r
-div.sphinxsidebar ul {\r
- margin: 10px;\r
- padding: 0;\r
- color: #ffffff;\r
-}\r
-\r
-div.sphinxsidebar a {\r
- color: #98dbcc;\r
-}\r
-\r
-div.sphinxsidebar input {\r
- border: 1px solid #98dbcc;\r
- font-family: sans-serif;\r
- font-size: 1em;\r
-}\r
-\r
-\r
-/* for collapsible sidebar */\r
-div#sidebarbutton {\r
- background-color: #3c6e83;\r
-}\r
-\r
-\r
-/* -- hyperlink styles ------------------------------------------------------ */\r
-\r
-a {\r
- color: #355f7c;\r
- text-decoration: none;\r
-}\r
-\r
-a:visited {\r
- color: #355f7c;\r
- text-decoration: none;\r
-}\r
-\r
-a:hover {\r
- text-decoration: underline;\r
-}\r
-\r
-\r
-\r
-/* -- body styles ----------------------------------------------------------- */\r
-\r
-div.body h1,\r
-div.body h2,\r
-div.body h3,\r
-div.body h4,\r
-div.body h5,\r
-div.body h6 {\r
- font-family: 'Trebuchet MS', sans-serif;\r
- background-color: #f2f2f2;\r
- font-weight: normal;\r
- color: #20435c;\r
- border-bottom: 1px solid #ccc;\r
- margin: 20px -20px 10px -20px;\r
- padding: 3px 0 3px 10px;\r
-}\r
-\r
-div.body h1 { margin-top: 0; font-size: 200%; }\r
-div.body h2 { font-size: 160%; }\r
-div.body h3 { font-size: 140%; }\r
-div.body h4 { font-size: 120%; }\r
-div.body h5 { font-size: 110%; }\r
-div.body h6 { font-size: 100%; }\r
-\r
-a.headerlink {\r
- color: #c60f0f;\r
- font-size: 0.8em;\r
- padding: 0 4px 0 4px;\r
- text-decoration: none;\r
-}\r
-\r
-a.headerlink:hover {\r
- background-color: #c60f0f;\r
- color: white;\r
-}\r
-\r
-div.body p, div.body dd, div.body li {\r
- text-align: justify;\r
- line-height: 130%;\r
-}\r
-\r
-div.admonition p.admonition-title + p {\r
- display: inline;\r
-}\r
-\r
-div.admonition p {\r
- margin-bottom: 5px;\r
-}\r
-\r
-div.admonition pre {\r
- margin-bottom: 5px;\r
-}\r
-\r
-div.admonition ul, div.admonition ol {\r
- margin-bottom: 5px;\r
-}\r
-\r
-div.note {\r
- background-color: #eee;\r
- border: 1px solid #ccc;\r
-}\r
-\r
-div.seealso {\r
- background-color: #ffc;\r
- border: 1px solid #ff6;\r
-}\r
-\r
-div.topic {\r
- background-color: #eee;\r
-}\r
-\r
-div.warning {\r
- background-color: #ffe4e4;\r
- border: 1px solid #f66;\r
-}\r
-\r
-p.admonition-title {\r
- display: inline;\r
-}\r
-\r
-p.admonition-title:after {\r
- content: ":";\r
-}\r
-\r
-pre {\r
- padding: 5px;\r
- background-color: #eeffcc;\r
- color: #333333;\r
- line-height: 120%;\r
- border: 1px solid #ac9;\r
- border-left: none;\r
- border-right: none;\r
-}\r
-\r
-tt {\r
- background-color: #ecf0f3;\r
- padding: 0 1px 0 1px;\r
- font-size: 0.95em;\r
-}\r
-\r
-th {\r
- background-color: #ede;\r
-}\r
-\r
-.warning tt {\r
- background: #efc2c2;\r
-}\r
-\r
-.note tt {\r
- background: #d6d6d6;\r
-}\r
-\r
-.viewcode-back {\r
- font-family: sans-serif;\r
-}\r
-\r
-div.viewcode-block:target {\r
- background-color: #f4debf;\r
- border-top: 1px solid #ac9;\r
- border-bottom: 1px solid #ac9;\r
+/*
+ * default.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- default theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+ font-family: sans-serif;
+ font-size: 100%;
+ background-color: #11303d;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+div.document {
+ background-color: #1c4e63;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+div.body {
+ background-color: #ffffff;
+ color: #000000;
+ padding: 0 20px 30px 20px;
+}
+
+div.footer {
+ color: #ffffff;
+ width: 100%;
+ padding: 9px 0 9px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #ffffff;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #133f52;
+ line-height: 30px;
+ color: #ffffff;
+}
+
+div.related a {
+ color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: #ffffff;
+ font-size: 1.4em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+ color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: #ffffff;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 5px 0 0 0;
+ padding: 0;
+}
+
+div.sphinxsidebar p {
+ color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ padding: 0;
+ color: #ffffff;
+}
+
+div.sphinxsidebar a {
+ color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+
+/* for collapsible sidebar */
+div#sidebarbutton {
+ background-color: #3c6e83;
+}
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:visited {
+ color: #355f7c;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ font-family: 'Trebuchet MS', sans-serif;
+ background-color: #f2f2f2;
+ font-weight: normal;
+ color: #20435c;
+ border-bottom: 1px solid #ccc;
+ margin: 20px -20px 10px -20px;
+ padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+ color: #c60f0f;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ background-color: #c60f0f;
+ color: white;
+}
+
+div.body p, div.body dd, div.body li {
+ text-align: justify;
+ line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+ display: inline;
+}
+
+div.admonition p {
+ margin-bottom: 5px;
+}
+
+div.admonition pre {
+ margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+ margin-bottom: 5px;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.topic {
+ background-color: #eee;
+}
+
+div.warning {
+ background-color: #ffe4e4;
+ border: 1px solid #f66;
+}
+
+p.admonition-title {
+ display: inline;
+}
+
+p.admonition-title:after {
+ content: ":";
+}
+
+pre {
+ padding: 5px;
+ background-color: #eeffcc;
+ color: #333333;
+ line-height: 120%;
+ border: 1px solid #ac9;
+ border-left: none;
+ border-right: none;
+}
+
+tt {
+ background-color: #ecf0f3;
+ padding: 0 1px 0 1px;
+ font-size: 0.95em;
+}
+
+th {
+ background-color: #ede;
+}
+
+.warning tt {
+ background: #efc2c2;
+}
+
+.note tt {
+ background: #d6d6d6;
+}
+
+.viewcode-back {
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ background-color: #f4debf;
+ border-top: 1px solid #ac9;
+ border-bottom: 1px solid #ac9;
}
\ No newline at end of file
-title: Abbreviations Extension\r
-prev_title: Extra Extension\r
-prev_url: extra.html\r
-next_title: Attribute Lists Extension\r
-next_url: attr_list.html\r
-\r
-Abbreviations\r
-=============\r
-\r
-Summary\r
--------\r
-\r
-The Abbreviations extension adds the ability to define abbreviations. \r
-Specifically, any defined abbreviation is wrapped in an `<abbr>` tag.\r
-\r
-The Abbreviations extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Abbreviations are defined using the syntax established in \r
-[PHP Markdown Extra][php].\r
-\r
-[php]: http://www.michelf.com/projects/php-markdown/extra/#abbr\r
-\r
-Thus, the following text (taken from the above referenced PHP documentation):\r
-\r
- The HTML specification \r
- is maintained by the W3C.\r
- \r
- *[HTML]: Hyper Text Markup Language\r
- *[W3C]: World Wide Web Consortium\r
-\r
-will be rendered as:\r
-\r
- <p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification \r
- is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `abbr`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Abbreviations Extension
+prev_title: Extra Extension
+prev_url: extra.html
+next_title: Attribute Lists Extension
+next_url: attr_list.html
+
+Abbreviations
+=============
+
+Summary
+-------
+
+The Abbreviations extension adds the ability to define abbreviations.
+Specifically, any defined abbreviation is wrapped in an `<abbr>` tag.
+
+The Abbreviations extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Abbreviations are defined using the syntax established in
+[PHP Markdown Extra][php].
+
+[php]: http://www.michelf.com/projects/php-markdown/extra/#abbr
+
+Thus, the following text (taken from the above referenced PHP documentation):
+
+ The HTML specification
+ is maintained by the W3C.
+
+ *[HTML]: Hyper Text Markup Language
+ *[W3C]: World Wide Web Consortium
+
+will be rendered as:
+
+ <p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification
+ is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.abbr`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: Admonition Extension\r
-prev_title: Smart Strong Extension\r
-prev_url: smart_strong.html\r
-next_title: CodeHilite Extension\r
-next_url: code_hilite.html\r
-\r
-Admonition\r
-==========\r
-\r
-Summary\r
--------\r
-\r
-The Admonition extension adds [rST-style][rST] admonitions to Markdown documents.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-!!! Warning\r
- This Extension is experimental and subject to change without notice.\r
- Consider yourself warned.\r
-\r
-[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions\r
-\r
-Syntax\r
-------\r
-\r
-Admonitions are created using the following syntax:\r
-\r
- !!! type "optional explicit title within double quotes"\r
- Any number of other indented markdown elements.\r
-\r
- This is the second paragraph.\r
-\r
-`type` will be used as the CSS classname and as default title. It must be a\r
-single word. So, for instance:\r
-\r
- !!! note\r
- You should note that the title will be automatically capitalized.\r
-\r
-will render:\r
-\r
- <div class="admonition note">\r
- <p class="admonition-title">Note</p>\r
- <p>You should note that the title will be automatically capitalized.</p>\r
- </div>\r
-\r
-Optionally, you can use custom titles. For instance:\r
-\r
- !!! danger "Don't try this at home"\r
- ...\r
-\r
-will render:\r
-\r
- <div class="admonition danger">\r
- <p class="admonition-title">Don't try this at home</p>\r
- <p>...</p>\r
- </div>\r
-\r
-If you don't want a title, use a blank string `""`:\r
-\r
- !!! important ""\r
- This is a admonition box without a title.\r
-\r
-results in:\r
-\r
- <div class="admonition important">\r
- <p>This is a admonition box without a title.</p>\r
- </div>\r
-\r
-\r
-rST suggests the following `types`, but you're free to use whatever you want:\r
- attention, caution, danger, error, hint, important, note, tip, warning.\r
-\r
-Styling\r
--------\r
-\r
-There is no CSS included as part of this extension. Look up the default\r
-[Sphinx][sphinx] theme if you need inspiration.\r
-\r
-[sphinx]: http://sphinx.pocoo.org/\r
+title: Admonition Extension
+prev_title: Smart Strong Extension
+prev_url: smart_strong.html
+next_title: CodeHilite Extension
+next_url: code_hilite.html
+
+Admonition
+==========
+
+Summary
+-------
+
+The Admonition extension adds [rST-style][rST] admonitions to Markdown documents.
+
+This extension is included in the standard Markdown library.
+
+[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions
+
+Syntax
+------
+
+Admonitions are created using the following syntax:
+
+ !!! type "optional explicit title within double quotes"
+ Any number of other indented markdown elements.
+
+ This is the second paragraph.
+
+`type` will be used as the CSS classname and as default title. It must be a
+single word. So, for instance:
+
+ !!! note
+ You should note that the title will be automatically capitalized.
+
+will render:
+
+ <div class="admonition note">
+ <p class="admonition-title">Note</p>
+ <p>You should note that the title will be automatically capitalized.</p>
+ </div>
+
+Optionally, you can use custom titles. For instance:
+
+ !!! danger "Don't try this at home"
+ ...
+
+will render:
+
+ <div class="admonition danger">
+ <p class="admonition-title">Don't try this at home</p>
+ <p>...</p>
+ </div>
+
+If you don't want a title, use a blank string `""`:
+
+ !!! important ""
+ This is a admonition box without a title.
+
+results in:
+
+ <div class="admonition important">
+ <p>This is a admonition box without a title.</p>
+ </div>
+
+
+rST suggests the following `types`, but you're free to use whatever you want:
+ attention, caution, danger, error, hint, important, note, tip, warning.
+
+Styling
+-------
+
+There is no CSS included as part of this extension. Look up the default
+[Sphinx][sphinx] theme if you need inspiration.
+
+[sphinx]: http://sphinx.pocoo.org/
-title: Extensions API\r
-prev_title: WikiLinks Extension\r
-prev_url: wikilinks.html\r
-next_title: Test Suite\r
-next_url: ../test_suite.html\r
-\r
-Writing Extensions for Python-Markdown\r
-======================================\r
-\r
-Python-Markdown includes an API for extension writers to plug their own \r
-custom functionality and/or syntax into the parser. There are preprocessors\r
-which allow you to alter the source before it is passed to the parser, \r
-inline patterns which allow you to add, remove or override the syntax of\r
-any inline elements, and postprocessors which allow munging of the\r
-output of the parser before it is returned. If you really want to dive in, \r
-there are also blockprocessors which are part of the core BlockParser.\r
-\r
-As the parser builds an [ElementTree][] object which is later rendered \r
-as Unicode text, there are also some helpers provided to ease manipulation of \r
-the tree. Each part of the API is discussed in its respective section below. \r
-Additionally, reading the source of some [Available Extensions][] may be \r
-helpful. For example, the [Footnotes][] extension uses most of the features \r
-documented here.\r
-\r
-Preprocessors {: #preprocessors }\r
----------------------------------\r
-\r
-Preprocessors munge the source text before it is passed into the Markdown \r
-core. This is an excellent place to clean up bad syntax, extract things the \r
-parser may otherwise choke on and perhaps even store it for later retrieval.\r
-\r
-Preprocessors should inherit from ``markdown.preprocessors.Preprocessor`` and \r
-implement a ``run`` method with one argument ``lines``. The ``run`` method of \r
-each Preprocessor will be passed the entire source text as a list of Unicode \r
-strings. Each string will contain one line of text. The ``run`` method should \r
-return either that list, or an altered list of Unicode strings.\r
-\r
-A pseudo example:\r
-\r
- from markdown.preprocessors import Preprocessor\r
-\r
- class MyPreprocessor(Preprocessor):\r
- def run(self, lines):\r
- new_lines = []\r
- for line in lines:\r
- m = MYREGEX.match(line)\r
- if m:\r
- # do stuff\r
- else:\r
- new_lines.append(line)\r
- return new_lines\r
-\r
-Inline Patterns {: #inlinepatterns }\r
-------------------------------------\r
-\r
-Inline Patterns implement the inline HTML element syntax for Markdown such as\r
-``*emphasis*`` or ``[links](http://example.com)``. Pattern objects should be \r
-instances of classes that inherit from ``markdown.inlinepatterns.Pattern`` or \r
-one of its children. Each pattern object uses a single regular expression and \r
-must have the following methods:\r
-\r
-* **``getCompiledRegExp()``**: \r
-\r
- Returns a compiled regular expression.\r
-\r
-* **``handleMatch(m)``**: \r
-\r
- Accepts a match object and returns an ElementTree element of a plain \r
- Unicode string.\r
-\r
-Note that any regular expression returned by ``getCompiledRegExp`` must capture\r
-the whole block. Therefore, they should all start with ``r'^(.*?)'`` and end\r
-with ``r'(.*?)!'``. When using the default ``getCompiledRegExp()`` method \r
-provided in the ``Pattern`` you can pass in a regular expression without that \r
-and ``getCompiledRegExp`` will wrap your expression for you and set the \r
-`re.DOTALL` and `re.UNICODE` flags. This means that the first group of your \r
-match will be ``m.group(2)`` as ``m.group(1)`` will match everything before the\r
-pattern.\r
-\r
-For an example, consider this simplified emphasis pattern:\r
-\r
- from markdown.inlinepatterns import Pattern\r
- from markdown.util import etree\r
-\r
- class EmphasisPattern(Pattern):\r
- def handleMatch(self, m):\r
- el = etree.Element('em')\r
- el.text = m.group(3)\r
- return el\r
-\r
-As discussed in [Integrating Your Code Into Markdown][], an instance of this\r
-class will need to be provided to Markdown. That instance would be created\r
-like so:\r
-\r
- # an oversimplified regex\r
- MYPATTERN = r'\*([^*]+)\*'\r
- # pass in pattern and create instance\r
- emphasis = EmphasisPattern(MYPATTERN)\r
-\r
-Actually it would not be necessary to create that pattern (and not just because\r
-a more sophisticated emphasis pattern already exists in Markdown). The fact is,\r
-that example pattern is not very DRY. A pattern for `**strong**` text would\r
-be almost identical, with the exception that it would create a 'strong' element.\r
-Therefore, Markdown provides a number of generic pattern classes that can \r
-provide some common functionality. For example, both emphasis and strong are\r
-implemented with separate instances of the ``SimpleTagPattern`` listed below.\r
-Feel free to use or extend any of the Pattern classes found at `markdown.inlinepatterns`.\r
-\r
-**Generic Pattern Classes**\r
-\r
-* **``SimpleTextPattern(pattern)``**:\r
-\r
- Returns simple text of ``group(2)`` of a ``pattern``.\r
-\r
-* **``SimpleTagPattern(pattern, tag)``**:\r
-\r
- Returns an element of type "`tag`" with a text attribute of ``group(3)``\r
- of a ``pattern``. ``tag`` should be a string of a HTML element (i.e.: 'em').\r
-\r
-* **``SubstituteTagPattern(pattern, tag)``**:\r
-\r
- Returns an element of type "`tag`" with no children or text (i.e.: 'br').\r
-\r
-There may be other Pattern classes in the Markdown source that you could extend\r
-or use as well. Read through the source and see if there is anything you can \r
-use. You might even get a few ideas for different approaches to your specific\r
-situation.\r
-\r
-Treeprocessors {: #treeprocessors }\r
------------------------------------\r
-\r
-Treeprocessors manipulate an ElemenTree object after it has passed through the\r
-core BlockParser. This is where additional manipulation of the tree takes\r
-place. Additionally, the InlineProcessor is a Treeprocessor which steps through\r
-the tree and runs the InlinePatterns on the text of each Element in the tree.\r
-\r
-A Treeprocessor should inherit from ``markdown.treeprocessors.Treeprocessor``,\r
-over-ride the ``run`` method which takes one argument ``root`` (an Elementree \r
-object) and returns either that root element or a modified root element.\r
-\r
-A pseudo example:\r
-\r
- from markdown.treeprocessors import Treeprocessor\r
-\r
- class MyTreeprocessor(Treeprocessor):\r
- def run(self, root):\r
- #do stuff\r
- return my_modified_root\r
-\r
-For specifics on manipulating the ElementTree, see \r
-[Working with the ElementTree][] below.\r
-\r
-Postprocessors {: #postprocessors }\r
------------------------------------\r
-\r
-Postprocessors manipulate the document after the ElementTree has been \r
-serialized into a string. Postprocessors should be used to work with the\r
-text just before output.\r
-\r
-A Postprocessor should inherit from ``markdown.postprocessors.Postprocessor`` \r
-and over-ride the ``run`` method which takes one argument ``text`` and returns \r
-a Unicode string.\r
-\r
-Postprocessors are run after the ElementTree has been serialized back into \r
-Unicode text. For example, this may be an appropriate place to add a table of \r
-contents to a document:\r
-\r
- from markdown.postprocessors import Postprocessor\r
-\r
- class TocPostprocessor(Postprocessor):\r
- def run(self, text):\r
- return MYMARKERRE.sub(MyToc, text)\r
-\r
-BlockParser {: #blockparser }\r
------------------------------\r
-\r
-Sometimes, pre/tree/postprocessors and Inline Patterns aren't going to do what \r
-you need. Perhaps you want a new type of block type that needs to be integrated \r
-into the core parsing. In such a situation, you can add/change/remove \r
-functionality of the core ``BlockParser``. The BlockParser is composed of a\r
-number of Blockproccessors. The BlockParser steps through each block of text\r
-(split by blank lines) and passes each block to the appropriate Blockprocessor.\r
-That Blockprocessor parses the block and adds it to the ElementTree. The\r
-[Definition Lists][] extension would be a good example of an extension that\r
-adds/modifies Blockprocessors.\r
-\r
-A Blockprocessor should inherit from ``markdown.blockprocessors.BlockProcessor``\r
-and implement both the ``test`` and ``run`` methods.\r
-\r
-The ``test`` method is used by BlockParser to identify the type of block.\r
-Therefore the ``test`` method must return a boolean value. If the test returns\r
-``True``, then the BlockParser will call that Blockprocessor's ``run`` method.\r
-If it returns ``False``, the BlockParser will move on to the next \r
-BlockProcessor.\r
-\r
-The **``test``** method takes two arguments:\r
-\r
-* **``parent``**: The parent etree Element of the block. This can be useful as\r
- the block may need to be treated differently if it is inside a list, for\r
- example.\r
-\r
-* **``block``**: A string of the current block of text. The test may be a \r
- simple string method (such as ``block.startswith(some_text)``) or a complex \r
- regular expression.\r
-\r
-The **``run``** method takes two arguments:\r
-\r
-* **``parent``**: A pointer to the parent etree Element of the block. The run \r
- method will most likely attach additional nodes to this parent. Note that\r
- nothing is returned by the method. The Elementree object is altered in place.\r
-\r
-* **``blocks``**: A list of all remaining blocks of the document. Your run \r
- method must remove (pop) the first block from the list (which it altered in\r
- place - not returned) and parse that block. You may find that a block of text\r
- legitimately contains multiple block types. Therefore, after processing the \r
- first type, your processor can insert the remaining text into the beginning\r
- of the ``blocks`` list for future parsing.\r
-\r
-Please be aware that a single block can span multiple text blocks. For example,\r
-The official Markdown syntax rules state that a blank line does not end a\r
-Code Block. If the next block of text is also indented, then it is part of\r
-the previous block. Therefore, the BlockParser was specifically designed to \r
-address these types of situations. If you notice the ``CodeBlockProcessor``,\r
-in the core, you will note that it checks the last child of the ``parent``.\r
-If the last child is a code block (``<pre><code>...</code></pre>``), then it\r
-appends that block to the previous code block rather than creating a new \r
-code block.\r
-\r
-Each BlockProcessor has the following utility methods available:\r
-\r
-* **``lastChild(parent)``**: \r
-\r
- Returns the last child of the given etree Element or ``None`` if it had no \r
- children.\r
-\r
-* **``detab(text)``**: \r
-\r
- Removes one level of indent (four spaces by default) from the front of each\r
- line of the given text string.\r
-\r
-* **``looseDetab(text, level)``**: \r
-\r
- Removes "level" levels of indent (defaults to 1) from the front of each line \r
- of the given text string. However, this methods allows secondary lines to \r
- not be indented as does some parts of the Markdown syntax.\r
-\r
-Each BlockProcessor also has a pointer to the containing BlockParser instance at\r
-``self.parser``, which can be used to check or alter the state of the parser.\r
-The BlockParser tracks it's state in a stack at ``parser.state``. The state\r
-stack is an instance of the ``State`` class.\r
-\r
-**``State``** is a subclass of ``list`` and has the additional methods:\r
-\r
-* **``set(state)``**: \r
-\r
- Set a new state to string ``state``. The new state is appended to the end \r
- of the stack.\r
-\r
-* **``reset()``**: \r
-\r
- Step back one step in the stack. The last state at the end is removed from \r
- the stack.\r
-\r
-* **``isstate(state)``**: \r
-\r
- Test that the top (current) level of the stack is of the given string \r
- ``state``.\r
-\r
-Note that to ensure that the state stack doesn't become corrupted, each time a\r
-state is set for a block, that state *must* be reset when the parser finishes\r
-parsing that block.\r
-\r
-An instance of the **``BlockParser``** is found at ``Markdown.parser``.\r
-``BlockParser`` has the following methods:\r
-\r
-* **``parseDocument(lines)``**: \r
-\r
- Given a list of lines, an ElementTree object is returned. This should be \r
- passed an entire document and is the only method the ``Markdown`` class \r
- calls directly.\r
-\r
-* **``parseChunk(parent, text)``**: \r
-\r
- Parses a chunk of markdown text composed of multiple blocks and attaches \r
- those blocks to the ``parent`` Element. The ``parent`` is altered in place \r
- and nothing is returned. Extensions would most likely use this method for \r
- block parsing.\r
-\r
-* **``parseBlocks(parent, blocks)``**: \r
-\r
- Parses a list of blocks of text and attaches those blocks to the ``parent``\r
- Element. The ``parent`` is altered in place and nothing is returned. This \r
- method will generally only be used internally to recursively parse nested \r
- blocks of text.\r
-\r
-While is is not recommended, an extension could subclass or completely replace\r
-the ``BlockParser``. The new class would have to provide the same public API.\r
-However, be aware that other extensions may expect the core parser provided\r
-and will not work with such a drastically different parser.\r
-\r
-Working with the ElementTree {: #working_with_et }\r
---------------------------------------------------\r
-\r
-As mentioned, the Markdown parser converts a source document to an \r
-[ElementTree][] object before serializing that back to Unicode text. \r
-Markdown has provided some helpers to ease that manipulation within the context \r
-of the Markdown module.\r
-\r
-First, to get access to the ElementTree module import ElementTree from \r
-``markdown`` rather than importing it directly. This will ensure you are using \r
-the same version of ElementTree as markdown. The module is found at \r
-``markdown.util.etree`` within Markdown.\r
-\r
- from markdown.util import etree\r
- \r
-``markdown.util.etree`` tries to import ElementTree from any known location, \r
-first as a standard library module (from ``xml.etree`` in Python 2.5), then as \r
-a third party package (``Elementree``). In each instance, ``cElementTree`` is \r
-tried first, then ``ElementTree`` if the faster C implementation is not \r
-available on your system.\r
-\r
-Sometimes you may want text inserted into an element to be parsed by \r
-[InlinePatterns][]. In such a situation, simply insert the text as you normally\r
-would and the text will be automatically run through the InlinePatterns. \r
-However, if you do *not* want some text to be parsed by InlinePatterns,\r
-then insert the text as an ``AtomicString``.\r
-\r
- from markdown.util import AtomicString\r
- some_element.text = AtomicString(some_text)\r
-\r
-Here's a basic example which creates an HTML table (note that the contents of \r
-the second cell (``td2``) will be run through InlinePatterns latter):\r
-\r
- table = etree.Element("table") \r
- table.set("cellpadding", "2") # Set cellpadding to 2\r
- tr = etree.SubElement(table, "tr") # Add child tr to table\r
- td1 = etree.SubElement(tr, "td") # Add child td1 to tr\r
- td1.text = markdown.util.AtomicString("Cell content") # Add plain text content\r
- td2 = etree.SubElement(tr, "td") # Add second td to tr\r
- td2.text = "*text* with **inline** formatting." # Add markup text\r
- table.tail = "Text after table" # Add text after table\r
-\r
-You can also manipulate an existing tree. Consider the following example which \r
-adds a ``class`` attribute to ``<a>`` elements:\r
-\r
- def set_link_class(self, element):\r
- for child in element: \r
- if child.tag == "a":\r
- child.set("class", "myclass") #set the class attribute\r
- set_link_class(child) # run recursively on children\r
-\r
-For more information about working with ElementTree see the ElementTree\r
-[Documentation](http://effbot.org/zone/element-index.htm) \r
-([Python Docs](http://docs.python.org/lib/module-xml.etree.ElementTree.html)).\r
-\r
-Integrating Your Code Into Markdown {: #integrating_into_markdown }\r
--------------------------------------------------------------------\r
-\r
-Once you have the various pieces of your extension built, you need to tell \r
-Markdown about them and ensure that they are run in the proper sequence. \r
-Markdown accepts an ``Extension`` instance for each extension. Therefore, you\r
-will need to define a class that extends ``markdown.extensions.Extension`` and \r
-over-rides the ``extendMarkdown`` method. Within this class you will manage \r
-configuration options for your extension and attach the various processors and \r
-patterns to the Markdown instance. \r
-\r
-It is important to note that the order of the various processors and patterns \r
-matters. For example, if we replace ``http://...`` links with ``<a>`` elements, \r
-and *then* try to deal with inline html, we will end up with a mess. \r
-Therefore, the various types of processors and patterns are stored within an \r
-instance of the Markdown class in [OrderedDict][]s. Your ``Extension`` class \r
-will need to manipulate those OrderedDicts appropriately. You may insert \r
-instances of your processors and patterns into the appropriate location in an \r
-OrderedDict, remove a built-in instance, or replace a built-in instance with \r
-your own.\r
-\r
-### extendMarkdown {: #extendmarkdown }\r
-\r
-The ``extendMarkdown`` method of a ``markdown.extensions.Extension`` class \r
-accepts two arguments:\r
-\r
-* **``md``**:\r
-\r
- A pointer to the instance of the Markdown class. You should use this to \r
- access the [OrderedDict][]s of processors and patterns. They are found \r
- under the following attributes:\r
-\r
- * ``md.preprocessors``\r
- * ``md.inlinePatterns``\r
- * ``md.parser.blockprocessors``\r
- * ``md.treeprocessors``\r
- * ``md.postprocessors``\r
-\r
- Some other things you may want to access in the markdown instance are:\r
-\r
- * ``md.htmlStash``\r
- * ``md.output_formats``\r
- * ``md.set_output_format()``\r
- * ``md.output_format``\r
- * ``md.serializer``\r
- * ``md.registerExtension()``\r
- * ``md.html_replacement_text``\r
- * ``md.tab_length``\r
- * ``md.enable_attributes``\r
- * ``md.smart_emphasis``\r
-\r
-* **``md_globals``**:\r
-\r
- Contains all the various global variables within the markdown module.\r
-\r
-!!! Warning\r
- With access to the above items, theoretically you have the option to \r
- change anything through various [monkey_patching][] techniques. However, \r
- you should be aware that the various undocumented parts of markdown may \r
- change without notice and your monkey_patches may break with a new release.\r
- Therefore, what you really should be doing is inserting processors and \r
- patterns into the markdown pipeline. Consider yourself warned!\r
-\r
-[monkey_patching]: http://en.wikipedia.org/wiki/Monkey_patch\r
-\r
-A simple example:\r
-\r
- from markdown.extensions import Extension\r
-\r
- class MyExtension(Extension):\r
- def extendMarkdown(self, md, md_globals):\r
- # Insert instance of 'mypattern' before 'references' pattern\r
- md.inlinePatterns.add('mypattern', MyPattern(md), '<references')\r
-\r
-### OrderedDict {: #ordereddict }\r
-\r
-An OrderedDict is a dictionary like object that retains the order of it's\r
-items. The items are ordered in the order in which they were appended to\r
-the OrderedDict. However, an item can also be inserted into the OrderedDict\r
-in a specific location in relation to the existing items.\r
-\r
-Think of OrderedDict as a combination of a list and a dictionary as it has \r
-methods common to both. For example, you can get and set items using the \r
-``od[key] = value`` syntax and the methods ``keys()``, ``values()``, and \r
-``items()`` work as expected with the keys, values and items returned in the \r
-proper order. At the same time, you can use ``insert()``, ``append()``, and \r
-``index()`` as you would with a list.\r
-\r
-Generally speaking, within Markdown extensions you will be using the special \r
-helper method ``add()`` to add additional items to an existing OrderedDict. \r
-\r
-The ``add()`` method accepts three arguments:\r
-\r
-* **``key``**: A string. The key is used for later reference to the item.\r
-\r
-* **``value``**: The object instance stored in this item.\r
-\r
-* **``location``**: Optional. The items location in relation to other items. \r
-\r
- Note that the location can consist of a few different values:\r
-\r
- * The special strings ``"_begin"`` and ``"_end"`` insert that item at the \r
- beginning or end of the OrderedDict respectively. \r
- \r
- * A less-than sign (``<``) followed by an existing key (i.e.: \r
- ``"<somekey"``) inserts that item before the existing key.\r
- \r
- * A greater-than sign (``>``) followed by an existing key (i.e.: \r
- ``">somekey"``) inserts that item after the existing key. \r
-\r
-Consider the following example:\r
-\r
- >>> from markdown.odict import OrderedDict\r
- >>> od = OrderedDict()\r
- >>> od['one'] = 1 # The same as: od.add('one', 1, '_begin')\r
- >>> od['three'] = 3 # The same as: od.add('three', 3, '>one')\r
- >>> od['four'] = 4 # The same as: od.add('four', 4, '_end')\r
- >>> od.items()\r
- [("one", 1), ("three", 3), ("four", 4)]\r
-\r
-Note that when building an OrderedDict in order, the extra features of the\r
-``add`` method offer no real value and are not necessary. However, when \r
-manipulating an existing OrderedDict, ``add`` can be very helpful. So let's \r
-insert another item into the OrderedDict.\r
-\r
- >>> od.add('two', 2, '>one') # Insert after 'one'\r
- >>> od.values()\r
- [1, 2, 3, 4]\r
-\r
-Now let's insert another item.\r
-\r
- >>> od.add('twohalf', 2.5, '<three') # Insert before 'three'\r
- >>> od.keys()\r
- ["one", "two", "twohalf", "three", "four"]\r
-\r
-Note that we also could have set the location of "twohalf" to be 'after two'\r
-(i.e.: ``'>two'``). However, it's unlikely that you will have control over the \r
-order in which extensions will be loaded, and this could affect the final \r
-sorted order of an OrderedDict. For example, suppose an extension adding \r
-'twohalf' in the above examples was loaded before a separate extension which \r
-adds 'two'. You may need to take this into consideration when adding your \r
-extension components to the various markdown OrderedDicts.\r
-\r
-Once an OrderedDict is created, the items are available via key:\r
-\r
- MyNode = od['somekey']\r
-\r
-Therefore, to delete an existing item:\r
-\r
- del od['somekey']\r
-\r
-To change the value of an existing item (leaving location unchanged):\r
-\r
- od['somekey'] = MyNewObject()\r
-\r
-To change the location of an existing item:\r
-\r
- t.link('somekey', '<otherkey')\r
-\r
-### registerExtension {: #registerextension }\r
-\r
-Some extensions may need to have their state reset between multiple runs of the\r
-Markdown class. For example, consider the following use of the [Footnotes][] \r
-extension:\r
-\r
- md = markdown.Markdown(extensions=['footnotes'])\r
- html1 = md.convert(text_with_footnote)\r
- md.reset()\r
- html2 = md.convert(text_without_footnote)\r
-\r
-Without calling ``reset``, the footnote definitions from the first document will\r
-be inserted into the second document as they are still stored within the class\r
-instance. Therefore the ``Extension`` class needs to define a ``reset`` method\r
-that will reset the state of the extension (i.e.: ``self.footnotes = {}``).\r
-However, as many extensions do not have a need for ``reset``, ``reset`` is only\r
-called on extensions that are registered.\r
-\r
-To register an extension, call ``md.registerExtension`` from within your \r
-``extendMarkdown`` method:\r
-\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- md.registerExtension(self)\r
- # insert processors and patterns here\r
-\r
-Then, each time ``reset`` is called on the Markdown instance, the ``reset`` \r
-method of each registered extension will be called as well. You should also\r
-note that ``reset`` will be called on each registered extension after it is\r
-initialized the first time. Keep that in mind when over-riding the extension's\r
-``reset`` method.\r
-\r
-### Config Settings {: #configsettings }\r
-\r
-If an extension uses any parameters that the user may want to change,\r
-those parameters should be stored in ``self.config`` of your \r
-``markdown.Extension`` class in the following format:\r
-\r
- self.config = {parameter_1_name : [value1, description1],\r
- parameter_2_name : [value2, description2] }\r
-\r
-When stored this way the config parameters can be over-ridden from the\r
-command line or at the time Markdown is initiated:\r
-\r
- markdown.py -x myextension(SOME_PARAM=2) inputfile.txt > output.txt\r
-\r
-Note that parameters should always be assumed to be set to string\r
-values, and should be converted at run time. For example:\r
-\r
- i = int(self.getConfig("SOME_PARAM"))\r
-\r
-### makeExtension {: #makeextension }\r
-\r
-As noted in the [library reference] an instance of an extension can be passed\r
-directly to Markdown. In fact, this is the prefered way to use third-party \r
-extensions.\r
-\r
-For example:\r
-\r
- import markdown\r
- import myextension\r
- configs = {...}\r
- myext = myextension.MyExtension(configs=configs)\r
- md = markdown.Markdown(extensions=[myext])\r
-\r
-This is especially useful if you need to implement a large number of extensions \r
-with more than one residing in a module.\r
-\r
-However, for historical reasons, Markdown also accepts "named" third party \r
-extensions. In that case, only one extension can be defined per module\r
-and that extension must define a module-level function called \r
-`makeExtension` that takes an optional parameter consisting of a dictionary \r
-of configuration over-rides and returns an instance of the extension. For example:\r
-\r
- class MyExtension(markdown.extensions.Extension)\r
- # Define extension here...\r
-\r
- def makeExtension(configs=None):\r
- return MyExtension(configs=configs)\r
-\r
-When Markdown is passed the "name" of your extension as a string, it will import \r
-the module and call the `makeExtension` function to initiate your extension.\r
-\r
-The "name" of your extension must be a string consisting of the importable path to\r
-your module using Python's dot notation. Therefore, if you are providing a library\r
-to your users and would like to include a custom markdown extensions within your \r
-library, that extension would be named `"mylib.mdext.myext"` where `mylib/mdext/myext.py`\r
-contains the `makeExtension` function and the `mylib` directory is on the PYTHONPATH.\r
-\r
-You may have noted that the extensions packaged with Python-Markdown do not\r
-use Python's dot notation in their names. This is because they are \r
-all part of the `markdown.extensions` package. If a "name" contains any dots \r
-(`.`), then it will be imported as-is. Otherwise, Markdown will first try to \r
-import from `markdown.extensions.extname` and upon failure, `mdx_extname` where\r
-`"extname"` is the "name" passed to Markdown.\r
-\r
-!!! Note\r
- While the `mdx_extname` method of naming extensions is still supported, it \r
- remains solely for historical reasons to support the various existing \r
- third-party extensions. This method is discouraged going forward and support\r
- may be removed in a future release.\r
-\r
-[Preprocessors]: #preprocessors\r
-[InlinePatterns]: #inlinepatterns\r
-[Treeprocessors]: #treeprocessors\r
-[Postprocessors]: #postprocessors\r
-[BlockParser]: #blockparser\r
-[Working with the ElementTree]: #working_with_et\r
-[Integrating your code into Markdown]: #integrating_into_markdown\r
-[extendMarkdown]: #extendmarkdown\r
-[OrderedDict]: #ordereddict\r
-[registerExtension]: #registerextension\r
-[Config Settings]: #configsettings\r
-[makeExtension]: #makeextension\r
-[ElementTree]: http://effbot.org/zone/element-index.htm\r
-[Available Extensions]: index.html \r
-[Footnotes]: footnotes.html\r
-[Definition Lists]: definition_lists.html\r
-[library reference]: ../reference.html\r
+title: Extensions API
+prev_title: WikiLinks Extension
+prev_url: wikilinks.html
+next_title: Test Suite
+next_url: ../test_suite.html
+
+Writing Extensions for Python-Markdown
+======================================
+
+Python-Markdown includes an API for extension writers to plug their own
+custom functionality and/or syntax into the parser. There are preprocessors
+which allow you to alter the source before it is passed to the parser,
+inline patterns which allow you to add, remove or override the syntax of
+any inline elements, and postprocessors which allow munging of the
+output of the parser before it is returned. If you really want to dive in,
+there are also blockprocessors which are part of the core BlockParser.
+
+As the parser builds an [ElementTree][] object which is later rendered
+as Unicode text, there are also some helpers provided to ease manipulation of
+the tree. Each part of the API is discussed in its respective section below.
+Additionally, reading the source of some [Available Extensions][] may be
+helpful. For example, the [Footnotes][] extension uses most of the features
+documented here.
+
+Preprocessors {: #preprocessors }
+---------------------------------
+
+Preprocessors munge the source text before it is passed into the Markdown
+core. This is an excellent place to clean up bad syntax, extract things the
+parser may otherwise choke on and perhaps even store it for later retrieval.
+
+Preprocessors should inherit from ``markdown.preprocessors.Preprocessor`` and
+implement a ``run`` method with one argument ``lines``. The ``run`` method of
+each Preprocessor will be passed the entire source text as a list of Unicode
+strings. Each string will contain one line of text. The ``run`` method should
+return either that list, or an altered list of Unicode strings.
+
+A pseudo example:
+
+ from markdown.preprocessors import Preprocessor
+
+ class MyPreprocessor(Preprocessor):
+ def run(self, lines):
+ new_lines = []
+ for line in lines:
+ m = MYREGEX.match(line)
+ if m:
+ # do stuff
+ else:
+ new_lines.append(line)
+ return new_lines
+
+Inline Patterns {: #inlinepatterns }
+------------------------------------
+
+Inline Patterns implement the inline HTML element syntax for Markdown such as
+``*emphasis*`` or ``[links](http://example.com)``. Pattern objects should be
+instances of classes that inherit from ``markdown.inlinepatterns.Pattern`` or
+one of its children. Each pattern object uses a single regular expression and
+must have the following methods:
+
+* **``getCompiledRegExp()``**:
+
+ Returns a compiled regular expression.
+
+* **``handleMatch(m)``**:
+
+ Accepts a match object and returns an ElementTree element of a plain
+ Unicode string.
+
+Note that any regular expression returned by ``getCompiledRegExp`` must capture
+the whole block. Therefore, they should all start with ``r'^(.*?)'`` and end
+with ``r'(.*?)!'``. When using the default ``getCompiledRegExp()`` method
+provided in the ``Pattern`` you can pass in a regular expression without that
+and ``getCompiledRegExp`` will wrap your expression for you and set the
+`re.DOTALL` and `re.UNICODE` flags. This means that the first group of your
+match will be ``m.group(2)`` as ``m.group(1)`` will match everything before the
+pattern.
+
+For an example, consider this simplified emphasis pattern:
+
+ from markdown.inlinepatterns import Pattern
+ from markdown.util import etree
+
+ class EmphasisPattern(Pattern):
+ def handleMatch(self, m):
+ el = etree.Element('em')
+ el.text = m.group(3)
+ return el
+
+As discussed in [Integrating Your Code Into Markdown][], an instance of this
+class will need to be provided to Markdown. That instance would be created
+like so:
+
+ # an oversimplified regex
+ MYPATTERN = r'\*([^*]+)\*'
+ # pass in pattern and create instance
+ emphasis = EmphasisPattern(MYPATTERN)
+
+Actually it would not be necessary to create that pattern (and not just because
+a more sophisticated emphasis pattern already exists in Markdown). The fact is,
+that example pattern is not very DRY. A pattern for `**strong**` text would
+be almost identical, with the exception that it would create a 'strong' element.
+Therefore, Markdown provides a number of generic pattern classes that can
+provide some common functionality. For example, both emphasis and strong are
+implemented with separate instances of the ``SimpleTagPattern`` listed below.
+Feel free to use or extend any of the Pattern classes found at `markdown.inlinepatterns`.
+
+**Generic Pattern Classes**
+
+* **``SimpleTextPattern(pattern)``**:
+
+ Returns simple text of ``group(2)`` of a ``pattern``.
+
+* **``SimpleTagPattern(pattern, tag)``**:
+
+ Returns an element of type "`tag`" with a text attribute of ``group(3)``
+ of a ``pattern``. ``tag`` should be a string of a HTML element (i.e.: 'em').
+
+* **``SubstituteTagPattern(pattern, tag)``**:
+
+ Returns an element of type "`tag`" with no children or text (i.e.: 'br').
+
+There may be other Pattern classes in the Markdown source that you could extend
+or use as well. Read through the source and see if there is anything you can
+use. You might even get a few ideas for different approaches to your specific
+situation.
+
+Treeprocessors {: #treeprocessors }
+-----------------------------------
+
+Treeprocessors manipulate an ElemenTree object after it has passed through the
+core BlockParser. This is where additional manipulation of the tree takes
+place. Additionally, the InlineProcessor is a Treeprocessor which steps through
+the tree and runs the InlinePatterns on the text of each Element in the tree.
+
+A Treeprocessor should inherit from ``markdown.treeprocessors.Treeprocessor``,
+over-ride the ``run`` method which takes one argument ``root`` (an Elementree
+object) and returns either that root element or a modified root element.
+
+A pseudo example:
+
+ from markdown.treeprocessors import Treeprocessor
+
+ class MyTreeprocessor(Treeprocessor):
+ def run(self, root):
+ #do stuff
+ return my_modified_root
+
+For specifics on manipulating the ElementTree, see
+[Working with the ElementTree][] below.
+
+Postprocessors {: #postprocessors }
+-----------------------------------
+
+Postprocessors manipulate the document after the ElementTree has been
+serialized into a string. Postprocessors should be used to work with the
+text just before output.
+
+A Postprocessor should inherit from ``markdown.postprocessors.Postprocessor``
+and over-ride the ``run`` method which takes one argument ``text`` and returns
+a Unicode string.
+
+Postprocessors are run after the ElementTree has been serialized back into
+Unicode text. For example, this may be an appropriate place to add a table of
+contents to a document:
+
+ from markdown.postprocessors import Postprocessor
+
+ class TocPostprocessor(Postprocessor):
+ def run(self, text):
+ return MYMARKERRE.sub(MyToc, text)
+
+BlockParser {: #blockparser }
+-----------------------------
+
+Sometimes, pre/tree/postprocessors and Inline Patterns aren't going to do what
+you need. Perhaps you want a new type of block type that needs to be integrated
+into the core parsing. In such a situation, you can add/change/remove
+functionality of the core ``BlockParser``. The BlockParser is composed of a
+number of Blockproccessors. The BlockParser steps through each block of text
+(split by blank lines) and passes each block to the appropriate Blockprocessor.
+That Blockprocessor parses the block and adds it to the ElementTree. The
+[Definition Lists][] extension would be a good example of an extension that
+adds/modifies Blockprocessors.
+
+A Blockprocessor should inherit from ``markdown.blockprocessors.BlockProcessor``
+and implement both the ``test`` and ``run`` methods.
+
+The ``test`` method is used by BlockParser to identify the type of block.
+Therefore the ``test`` method must return a boolean value. If the test returns
+``True``, then the BlockParser will call that Blockprocessor's ``run`` method.
+If it returns ``False``, the BlockParser will move on to the next
+BlockProcessor.
+
+The **``test``** method takes two arguments:
+
+* **``parent``**: The parent etree Element of the block. This can be useful as
+ the block may need to be treated differently if it is inside a list, for
+ example.
+
+* **``block``**: A string of the current block of text. The test may be a
+ simple string method (such as ``block.startswith(some_text)``) or a complex
+ regular expression.
+
+The **``run``** method takes two arguments:
+
+* **``parent``**: A pointer to the parent etree Element of the block. The run
+ method will most likely attach additional nodes to this parent. Note that
+ nothing is returned by the method. The Elementree object is altered in place.
+
+* **``blocks``**: A list of all remaining blocks of the document. Your run
+ method must remove (pop) the first block from the list (which it altered in
+ place - not returned) and parse that block. You may find that a block of text
+ legitimately contains multiple block types. Therefore, after processing the
+ first type, your processor can insert the remaining text into the beginning
+ of the ``blocks`` list for future parsing.
+
+Please be aware that a single block can span multiple text blocks. For example,
+The official Markdown syntax rules state that a blank line does not end a
+Code Block. If the next block of text is also indented, then it is part of
+the previous block. Therefore, the BlockParser was specifically designed to
+address these types of situations. If you notice the ``CodeBlockProcessor``,
+in the core, you will note that it checks the last child of the ``parent``.
+If the last child is a code block (``<pre><code>...</code></pre>``), then it
+appends that block to the previous code block rather than creating a new
+code block.
+
+Each BlockProcessor has the following utility methods available:
+
+* **``lastChild(parent)``**:
+
+ Returns the last child of the given etree Element or ``None`` if it had no
+ children.
+
+* **``detab(text)``**:
+
+ Removes one level of indent (four spaces by default) from the front of each
+ line of the given text string.
+
+* **``looseDetab(text, level)``**:
+
+ Removes "level" levels of indent (defaults to 1) from the front of each line
+ of the given text string. However, this methods allows secondary lines to
+ not be indented as does some parts of the Markdown syntax.
+
+Each BlockProcessor also has a pointer to the containing BlockParser instance at
+``self.parser``, which can be used to check or alter the state of the parser.
+The BlockParser tracks it's state in a stack at ``parser.state``. The state
+stack is an instance of the ``State`` class.
+
+**``State``** is a subclass of ``list`` and has the additional methods:
+
+* **``set(state)``**:
+
+ Set a new state to string ``state``. The new state is appended to the end
+ of the stack.
+
+* **``reset()``**:
+
+ Step back one step in the stack. The last state at the end is removed from
+ the stack.
+
+* **``isstate(state)``**:
+
+ Test that the top (current) level of the stack is of the given string
+ ``state``.
+
+Note that to ensure that the state stack doesn't become corrupted, each time a
+state is set for a block, that state *must* be reset when the parser finishes
+parsing that block.
+
+An instance of the **``BlockParser``** is found at ``Markdown.parser``.
+``BlockParser`` has the following methods:
+
+* **``parseDocument(lines)``**:
+
+ Given a list of lines, an ElementTree object is returned. This should be
+ passed an entire document and is the only method the ``Markdown`` class
+ calls directly.
+
+* **``parseChunk(parent, text)``**:
+
+ Parses a chunk of markdown text composed of multiple blocks and attaches
+ those blocks to the ``parent`` Element. The ``parent`` is altered in place
+ and nothing is returned. Extensions would most likely use this method for
+ block parsing.
+
+* **``parseBlocks(parent, blocks)``**:
+
+ Parses a list of blocks of text and attaches those blocks to the ``parent``
+ Element. The ``parent`` is altered in place and nothing is returned. This
+ method will generally only be used internally to recursively parse nested
+ blocks of text.
+
+While is is not recommended, an extension could subclass or completely replace
+the ``BlockParser``. The new class would have to provide the same public API.
+However, be aware that other extensions may expect the core parser provided
+and will not work with such a drastically different parser.
+
+Working with the ElementTree {: #working_with_et }
+--------------------------------------------------
+
+As mentioned, the Markdown parser converts a source document to an
+[ElementTree][] object before serializing that back to Unicode text.
+Markdown has provided some helpers to ease that manipulation within the context
+of the Markdown module.
+
+First, to get access to the ElementTree module import ElementTree from
+``markdown`` rather than importing it directly. This will ensure you are using
+the same version of ElementTree as markdown. The module is found at
+``markdown.util.etree`` within Markdown.
+
+ from markdown.util import etree
+
+``markdown.util.etree`` tries to import ElementTree from any known location,
+first as a standard library module (from ``xml.etree`` in Python 2.5), then as
+a third party package (``Elementree``). In each instance, ``cElementTree`` is
+tried first, then ``ElementTree`` if the faster C implementation is not
+available on your system.
+
+Sometimes you may want text inserted into an element to be parsed by
+[InlinePatterns][]. In such a situation, simply insert the text as you normally
+would and the text will be automatically run through the InlinePatterns.
+However, if you do *not* want some text to be parsed by InlinePatterns,
+then insert the text as an ``AtomicString``.
+
+ from markdown.util import AtomicString
+ some_element.text = AtomicString(some_text)
+
+Here's a basic example which creates an HTML table (note that the contents of
+the second cell (``td2``) will be run through InlinePatterns latter):
+
+ table = etree.Element("table")
+ table.set("cellpadding", "2") # Set cellpadding to 2
+ tr = etree.SubElement(table, "tr") # Add child tr to table
+ td1 = etree.SubElement(tr, "td") # Add child td1 to tr
+ td1.text = markdown.util.AtomicString("Cell content") # Add plain text content
+ td2 = etree.SubElement(tr, "td") # Add second td to tr
+ td2.text = "*text* with **inline** formatting." # Add markup text
+ table.tail = "Text after table" # Add text after table
+
+You can also manipulate an existing tree. Consider the following example which
+adds a ``class`` attribute to ``<a>`` elements:
+
+ def set_link_class(self, element):
+ for child in element:
+ if child.tag == "a":
+ child.set("class", "myclass") #set the class attribute
+ set_link_class(child) # run recursively on children
+
+For more information about working with ElementTree see the ElementTree
+[Documentation](http://effbot.org/zone/element-index.htm)
+([Python Docs](http://docs.python.org/lib/module-xml.etree.ElementTree.html)).
+
+Integrating Your Code Into Markdown {: #integrating_into_markdown }
+-------------------------------------------------------------------
+
+Once you have the various pieces of your extension built, you need to tell
+Markdown about them and ensure that they are run in the proper sequence.
+Markdown accepts an ``Extension`` instance for each extension. Therefore, you
+will need to define a class that extends ``markdown.extensions.Extension`` and
+over-rides the ``extendMarkdown`` method. Within this class you will manage
+configuration options for your extension and attach the various processors and
+patterns to the Markdown instance.
+
+It is important to note that the order of the various processors and patterns
+matters. For example, if we replace ``http://...`` links with ``<a>`` elements,
+and *then* try to deal with inline html, we will end up with a mess.
+Therefore, the various types of processors and patterns are stored within an
+instance of the Markdown class in [OrderedDict][]s. Your ``Extension`` class
+will need to manipulate those OrderedDicts appropriately. You may insert
+instances of your processors and patterns into the appropriate location in an
+OrderedDict, remove a built-in instance, or replace a built-in instance with
+your own.
+
+### extendMarkdown {: #extendmarkdown }
+
+The ``extendMarkdown`` method of a ``markdown.extensions.Extension`` class
+accepts two arguments:
+
+* **``md``**:
+
+ A pointer to the instance of the Markdown class. You should use this to
+ access the [OrderedDict][]s of processors and patterns. They are found
+ under the following attributes:
+
+ * ``md.preprocessors``
+ * ``md.inlinePatterns``
+ * ``md.parser.blockprocessors``
+ * ``md.treeprocessors``
+ * ``md.postprocessors``
+
+ Some other things you may want to access in the markdown instance are:
+
+ * ``md.htmlStash``
+ * ``md.output_formats``
+ * ``md.set_output_format()``
+ * ``md.output_format``
+ * ``md.serializer``
+ * ``md.registerExtension()``
+ * ``md.html_replacement_text``
+ * ``md.tab_length``
+ * ``md.enable_attributes``
+ * ``md.smart_emphasis``
+
+* **``md_globals``**:
+
+ Contains all the various global variables within the markdown module.
+
+!!! Warning
+ With access to the above items, theoretically you have the option to
+ change anything through various [monkey_patching][] techniques. However,
+ you should be aware that the various undocumented parts of markdown may
+ change without notice and your monkey_patches may break with a new release.
+ Therefore, what you really should be doing is inserting processors and
+ patterns into the markdown pipeline. Consider yourself warned!
+
+[monkey_patching]: http://en.wikipedia.org/wiki/Monkey_patch
+
+A simple example:
+
+ from markdown.extensions import Extension
+
+ class MyExtension(Extension):
+ def extendMarkdown(self, md, md_globals):
+ # Insert instance of 'mypattern' before 'references' pattern
+ md.inlinePatterns.add('mypattern', MyPattern(md), '<references')
+
+### OrderedDict {: #ordereddict }
+
+An OrderedDict is a dictionary like object that retains the order of it's
+items. The items are ordered in the order in which they were appended to
+the OrderedDict. However, an item can also be inserted into the OrderedDict
+in a specific location in relation to the existing items.
+
+Think of OrderedDict as a combination of a list and a dictionary as it has
+methods common to both. For example, you can get and set items using the
+``od[key] = value`` syntax and the methods ``keys()``, ``values()``, and
+``items()`` work as expected with the keys, values and items returned in the
+proper order. At the same time, you can use ``insert()``, ``append()``, and
+``index()`` as you would with a list.
+
+Generally speaking, within Markdown extensions you will be using the special
+helper method ``add()`` to add additional items to an existing OrderedDict.
+
+The ``add()`` method accepts three arguments:
+
+* **``key``**: A string. The key is used for later reference to the item.
+
+* **``value``**: The object instance stored in this item.
+
+* **``location``**: Optional. The items location in relation to other items.
+
+ Note that the location can consist of a few different values:
+
+ * The special strings ``"_begin"`` and ``"_end"`` insert that item at the
+ beginning or end of the OrderedDict respectively.
+
+ * A less-than sign (``<``) followed by an existing key (i.e.:
+ ``"<somekey"``) inserts that item before the existing key.
+
+ * A greater-than sign (``>``) followed by an existing key (i.e.:
+ ``">somekey"``) inserts that item after the existing key.
+
+Consider the following example:
+
+ >>> from markdown.odict import OrderedDict
+ >>> od = OrderedDict()
+ >>> od['one'] = 1 # The same as: od.add('one', 1, '_begin')
+ >>> od['three'] = 3 # The same as: od.add('three', 3, '>one')
+ >>> od['four'] = 4 # The same as: od.add('four', 4, '_end')
+ >>> od.items()
+ [("one", 1), ("three", 3), ("four", 4)]
+
+Note that when building an OrderedDict in order, the extra features of the
+``add`` method offer no real value and are not necessary. However, when
+manipulating an existing OrderedDict, ``add`` can be very helpful. So let's
+insert another item into the OrderedDict.
+
+ >>> od.add('two', 2, '>one') # Insert after 'one'
+ >>> od.values()
+ [1, 2, 3, 4]
+
+Now let's insert another item.
+
+ >>> od.add('twohalf', 2.5, '<three') # Insert before 'three'
+ >>> od.keys()
+ ["one", "two", "twohalf", "three", "four"]
+
+Note that we also could have set the location of "twohalf" to be 'after two'
+(i.e.: ``'>two'``). However, it's unlikely that you will have control over the
+order in which extensions will be loaded, and this could affect the final
+sorted order of an OrderedDict. For example, suppose an extension adding
+'twohalf' in the above examples was loaded before a separate extension which
+adds 'two'. You may need to take this into consideration when adding your
+extension components to the various markdown OrderedDicts.
+
+Once an OrderedDict is created, the items are available via key:
+
+ MyNode = od['somekey']
+
+Therefore, to delete an existing item:
+
+ del od['somekey']
+
+To change the value of an existing item (leaving location unchanged):
+
+ od['somekey'] = MyNewObject()
+
+To change the location of an existing item:
+
+ t.link('somekey', '<otherkey')
+
+### registerExtension {: #registerextension }
+
+Some extensions may need to have their state reset between multiple runs of the
+Markdown class. For example, consider the following use of the [Footnotes][]
+extension:
+
+ md = markdown.Markdown(extensions=['footnotes'])
+ html1 = md.convert(text_with_footnote)
+ md.reset()
+ html2 = md.convert(text_without_footnote)
+
+Without calling ``reset``, the footnote definitions from the first document will
+be inserted into the second document as they are still stored within the class
+instance. Therefore the ``Extension`` class needs to define a ``reset`` method
+that will reset the state of the extension (i.e.: ``self.footnotes = {}``).
+However, as many extensions do not have a need for ``reset``, ``reset`` is only
+called on extensions that are registered.
+
+To register an extension, call ``md.registerExtension`` from within your
+``extendMarkdown`` method:
+
+
+ def extendMarkdown(self, md, md_globals):
+ md.registerExtension(self)
+ # insert processors and patterns here
+
+Then, each time ``reset`` is called on the Markdown instance, the ``reset``
+method of each registered extension will be called as well. You should also
+note that ``reset`` will be called on each registered extension after it is
+initialized the first time. Keep that in mind when over-riding the extension's
+``reset`` method.
+
+### Config Settings {: #configsettings }
+
+If an extension uses any parameters that the user may want to change,
+those parameters should be stored in ``self.config`` of your
+``markdown.extensions.Extension`` class in the following format:
+
+ class MyExtension(markdown.extensions.Extension):
+ def __init__(self, **kwargs):
+ self.config = {'option1' : ['value1', 'description1'],
+ 'option2' : ['value2', 'description2'] }
+ super(MyExtension, self).__init__(**kwargs)
+
+When implemented this way the config parameters can be over-ridden at
+run time (thus the call to `super`). For example:
+
+ markdown.Markdown(extensions=[MyExtension(option1='other value'])
+
+Note that if a keyword is passed in that is not already defined in
+`self.config`, then a `KeyError` is raised.
+
+The `markdown.extensions.Extension` class and its subclasses have the
+following methods available to assist in working with config settings:
+
+* **``getConfig(key [, default])``**:
+
+ Returns the stored value for the given `key` or `default` if the `key`
+ does not exist. If not set, `default` returns an empty string.
+
+* **``getConfigs()``**:
+
+ Returns a dict of all key/value pairs.
+
+* **``getConfigInfo()``**:
+
+ Returns all config descriptions as a list of tuples.
+
+* **``setConfig(key, value)``**:
+
+ Sets a config setting for `key` with the given `value`. If `key` is
+ unknown, a `KeyError` is raised. If the previous value of `key` was
+ a boolean value, then `value` is converted to a boolean value. If
+ the previous value of `key` is `None`, then `value` is converted to
+ a boolean value except when it is `None`. No conversion takes place
+ when the previous value of `key` is a string.
+
+* **``setConfigs(items)``**:
+
+ Sets multiple config settings given a dict of key/value pairs.
+
+### makeExtension {: #makeextension }
+
+As noted in the [library reference] an instance of an extension can be passed
+directly to Markdown. In fact, this is the prefered way to use third-party
+extensions.
+
+For example:
+
+ import markdown
+ import myextension
+ myext = myextension.MyExtension(option='value')
+ md = markdown.Markdown(extensions=[myext])
+
+Markdown also accepts "named" third party extensions for those occassions
+when it is impractical to import an extension directly (from the command line or from
+within templates).
+
+The "name" of your extension must be a string consisting of the importable path to
+your module using Python's dot notation. Therefore, if you are providing a library
+to your users and would like to include a custom markdown extension within your
+library, that extension would be named `"mylib.mdext.myext"` where `mylib/mdext/myext.py`
+contains the extension and the `mylib` directory is on the PYTHONPATH.
+
+The string can also include the name of the class seperated by a colon.
+Therefore, if you were to import the class like this:
+
+ from path.to.module import SomeExtensionClass
+
+Then the named extension would comprise this string:
+
+ "path.to.module:SomeExtensionClass"
+
+You do not need to do anything special to support this feature. As long as your extension
+class is able to be imported, a user can include it with the above syntax.
+
+The above two methods are especially useful if you need to implement a large number of
+extensions with more than one residing in a module. However, if you do not want to require
+that your users include the class name in their string, you must define only one extension
+per module and that module must contain a module-level function called `makeExtension`
+that accepts `**kwargs` and returns an extension instance.
+
+For example:
+
+ class MyExtension(markdown.extensions.Extension)
+ # Define extension here...
+
+ def makeExtension(**kwargs):
+ return MyExtension(**kwargs)
+
+When Markdown is passed the "name" of your extension as a dot notation string, it will import
+the module and call the `makeExtension` function to initiate your extension.
+
+
+[Preprocessors]: #preprocessors
+[InlinePatterns]: #inlinepatterns
+[Treeprocessors]: #treeprocessors
+[Postprocessors]: #postprocessors
+[BlockParser]: #blockparser
+[Working with the ElementTree]: #working_with_et
+[Integrating your code into Markdown]: #integrating_into_markdown
+[extendMarkdown]: #extendmarkdown
+[OrderedDict]: #ordereddict
+[registerExtension]: #registerextension
+[Config Settings]: #configsettings
+[makeExtension]: #makeextension
+[ElementTree]: http://effbot.org/zone/element-index.htm
+[Available Extensions]: index.html
+[Footnotes]: footnotes.html
+[Definition Lists]: definition_lists.html
+[library reference]: ../reference.html
-title: Attribute Lists Extension\r
-prev_title: Abbreviations Extension\r
-prev_url: abbreviations.html\r
-next_title: Definition Lists Extension\r
-next_url: definition_lists.html\r
-\r
-Attribute Lists\r
-===============\r
-\r
-Summary\r
--------\r
-\r
-The Attribute Lists extension adds a syntax to define attributes on the various\r
-HTML elements in markdown's output.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-The basic syntax was inspired by [Maruku][]'s Attribute Lists feature.\r
-\r
-[Maruku]: http://maruku.rubyforge.org/proposal.html#attribute_lists\r
-\r
-### The List ###\r
-\r
-An example attribute list might look like this:\r
-\r
- {: #someid .someclass somekey='some value' }\r
-\r
-A word which starts with a hash (`#`) will set the id of an element.\r
-\r
-A word which starts with a dot (`.`) will be added to the list of classes \r
-assigned to an element.\r
-\r
-A key/value pair (`somekey='some value'`) will assign that pair to the element.\r
-\r
-Be aware that while the dot syntax will add to a class, using key/value pairs\r
-will always override the previously defined attribute. Consider the following:\r
-\r
- {: #id1 .class1 id=id2 class="class2 class3" .class4 }\r
-\r
-The above example would result in the following attributes being defined:\r
-\r
- id="id2" class="class2 class3 class4"\r
-\r
-### Block Level ###\r
-\r
-To define attributes for a block level element, the attribute list should\r
-be defined on the last line of the block by itself.\r
-\r
- This is a paragraph.\r
- {: #an_id .a_class }\r
-\r
-The above results in the following output:\r
-\r
- <p id="an_id" class="a_class">This is a paragraph.</p>\r
-\r
-The one exception is headers, as they are only ever allowed on one line.\r
-\r
- A setext style header {: #setext}\r
- =================================\r
-\r
- ### A hash style header ### {: #hash }\r
-\r
-The above results in the following output:\r
-\r
- <h1 id="setext">A setext style header</h1>\r
- <h3 id="hash">A hash style header</h3>\r
-\r
-### Inline ###\r
-\r
-To define attributes on inline elements, the attribute list should be defined \r
-immediately after the inline element with no whitespace.\r
-\r
- [link](http://example.com){: class="foo bar" title="Some title!" }\r
-\r
-The above results in the following output:\r
-\r
- <p><a href="http://example.com" class="foo bar" title="Some title!">link</a></p>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `attr_list`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Attribute Lists Extension
+prev_title: Abbreviations Extension
+prev_url: abbreviations.html
+next_title: Definition Lists Extension
+next_url: definition_lists.html
+
+Attribute Lists
+===============
+
+Summary
+-------
+
+The Attribute Lists extension adds a syntax to define attributes on the various
+HTML elements in markdown's output.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+The basic syntax was inspired by [Maruku][]'s Attribute Lists feature.
+
+[Maruku]: http://maruku.rubyforge.org/proposal.html#attribute_lists
+
+### The List ###
+
+An example attribute list might look like this:
+
+ {: #someid .someclass somekey='some value' }
+
+A word which starts with a hash (`#`) will set the id of an element.
+
+A word which starts with a dot (`.`) will be added to the list of classes
+assigned to an element.
+
+A key/value pair (`somekey='some value'`) will assign that pair to the element.
+
+Be aware that while the dot syntax will add to a class, using key/value pairs
+will always override the previously defined attribute. Consider the following:
+
+ {: #id1 .class1 id=id2 class="class2 class3" .class4 }
+
+The above example would result in the following attributes being defined:
+
+ id="id2" class="class2 class3 class4"
+
+### Block Level ###
+
+To define attributes for a block level element, the attribute list should
+be defined on the last line of the block by itself.
+
+ This is a paragraph.
+ {: #an_id .a_class }
+
+The above results in the following output:
+
+ <p id="an_id" class="a_class">This is a paragraph.</p>
+
+The one exception is headers, as they are only ever allowed on one line.
+
+ A setext style header {: #setext}
+ =================================
+
+ ### A hash style header ### {: #hash }
+
+The above results in the following output:
+
+ <h1 id="setext">A setext style header</h1>
+ <h3 id="hash">A hash style header</h3>
+
+### Inline ###
+
+To define attributes on inline elements, the attribute list should be defined
+immediately after the inline element with no whitespace.
+
+ [link](http://example.com){: class="foo bar" title="Some title!" }
+
+The above results in the following output:
+
+ <p><a href="http://example.com" class="foo bar" title="Some title!">link</a></p>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.attr_list`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: CodeHilite Extension\r
-prev_title: Admonition Extension\r
-prev_url: admonition.html\r
-next_title: HeaderId Extension\r
-next_url: header_id.html\r
-\r
-CodeHilite\r
-==========\r
-\r
-Summary\r
--------\r
-\r
-The CodeHilite extension adds code/syntax highlighting to standard\r
-Python-Markdown code blocks using [Pygments][].\r
-\r
-[Pygments]: http://pygments.org/\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Setup\r
------\r
-\r
-You will also need to [download][dl] and install the Pygments package on your\r
-`PYTHONPATH`. You will need to determine the appropriate CSS classes and create\r
-appropriate rules for them, which are either defined in or linked from the\r
-header of your HTML templates. See the excellent [documentation][] for more\r
-details. If no language is defined, Pygments will attempt to guess the\r
-language. When that fails, the code block will display as un-highlighted code.\r
-\r
-[dl]: http://pygments.org/download/\r
-[documentation]: http://pygments.org/docs\r
-\r
-!!! Note\r
- The css and/or javascript is not included as part of this extension\r
- but must be provided by the end user. The Pygments project provides\r
- default css styles which you may find to be a useful starting point.\r
-\r
-Syntax\r
-------\r
-\r
-The CodeHilite extension follows the same [syntax][] as regular Markdown code\r
-blocks, with one exception. The hiliter needs to know what language to use for\r
-the code block. There are three ways to tell the hiliter what language the code\r
-block contains and each one has a different result.\r
-\r
-!!! Note\r
- The format of the language identifier only effects the display of line numbers\r
- if `linenums` is set to `None` (the default). If set to `True` or `False`\r
- (see [Usage](#usage) below) the format of the identifier has no effect on the\r
- display of line numbers -- it only serves as a means to define the language\r
- of the code block.\r
-\r
-[syntax]: http://daringfireball.net/projects/markdown/syntax#precode\r
-\r
-### SheBang (with path) ###\r
-\r
-If the first line of the codeblock contains a shebang, the language is derived\r
-from that and line numbers are used.\r
-\r
- #!/usr/bin/python\r
- # Code goes here ...\r
-\r
-Will result in:\r
-\r
- #!/usr/bin/python\r
- # Code goes here ...\r
-\r
-### SheBang (no path) ###\r
-\r
-If the first line contains a shebang, but the shebang line does not contain a\r
-path (a single `/` or even a space), then that line is removed from the code\r
-block before processing. Line numbers are used.\r
-\r
- #!python\r
- # Code goes here ...\r
-\r
-Will result in:\r
-\r
- # Code goes here ...\r
-\r
-### Colons ###\r
-\r
-If the first line begins with three or more colons, the text following the\r
-colons identifies the language. The first line is removed from the code block\r
-before processing and line numbers are not used.\r
-\r
- :::python\r
- # Code goes here ...\r
-\r
-Will result in:\r
-\r
- # Code goes here ...\r
-\r
-Certain lines can be selected for emphasis with the colon syntax. When \r
-using Pygments' default css styles, emphasized lines have a yellow background. \r
-This is useful to direct the reader's attention to specific lines.\r
-\r
- :::python hl_lines="1 3"\r
- # This line is emphasized\r
- # This line isn't\r
- # This line is emphasized\r
-\r
-!!! Note\r
- `hl_lines` is named for Pygments' option meaning "highlighted lines".\r
-\r
-### When No Language is Defined ###\r
-\r
-CodeHilite is completely backwards compatible so that if a code block is\r
-encountered that does not define a language, the block is simply wrapped in\r
-`<pre>` tags and output. \r
-\r
- # Code goes here ...\r
-\r
-Will result in:\r
-\r
- # Code goes here ...\r
-\r
-Lets see the source for that:\r
-\r
- <div class="codehilite"><pre><code># Code goes here ...\r
- </code></pre></div>\r
-\r
-!!! Note\r
- When no language is defined, the Pygments highlighting engine will try to guess \r
- the language (unless `guess_lang` is set to `False`). Upon failure, the same \r
- behavior will happen as described above.\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `codehilite`\r
-as the name of the extension.\r
-\r
-See the [Library Reference](../reference.html#extensions) for information about\r
-configuring extensions.\r
-\r
-The following options are provided to configure the output:\r
-\r
-* **`linenums`**:\r
- Use line numbers. Possible values are `True` for yes, `False` for no and\r
- `None` for auto. Defaults to `None`.\r
-\r
- Using `True` will force every code block to have line numbers, even when\r
- using colons (`:::`) for language identification.\r
-\r
- Using `False` will turn off all line numbers, even when using SheBangs\r
- (`#!`) for language identification.\r
-\r
-* **`guess_lang`**:\r
- Automatic language detection. Defaults to `True`.\r
-\r
- Using `False` will prevent Pygments from guessing the language, and thus\r
- highlighting blocks only when you explicitly set the language.\r
-\r
-* **`css_class`**:\r
- Set CSS class name for the wrapper `<div>` tag. Defaults to\r
- `codehilite`.\r
-\r
-* **`pygments_style`**:\r
- Pygments HTML Formatter Style (ColorScheme). Defaults to `default`.\r
-\r
- !!! Note\r
- This is useful only when `noclasses` is set to `True`, otherwise the\r
- CSS styles must be provided by the end user.\r
-\r
-* **`noclasses`**:\r
- Use inline styles instead of CSS classes. Defaults to `False`.\r
+title: CodeHilite Extension
+prev_title: Admonition Extension
+prev_url: admonition.html
+next_title: HeaderId Extension
+next_url: header_id.html
+
+CodeHilite
+==========
+
+Summary
+-------
+
+The CodeHilite extension adds code/syntax highlighting to standard
+Python-Markdown code blocks using [Pygments][].
+
+[Pygments]: http://pygments.org/
+
+This extension is included in the standard Markdown library.
+
+Setup
+-----
+
+You will also need to [download][dl] and install the Pygments package on your
+`PYTHONPATH`. You will need to determine the appropriate CSS classes and create
+appropriate rules for them, which are either defined in or linked from the
+header of your HTML templates. See the excellent [documentation][] for more
+details. If no language is defined, Pygments will attempt to guess the
+language. When that fails, the code block will display as un-highlighted code.
+
+[dl]: http://pygments.org/download/
+[documentation]: http://pygments.org/docs
+
+!!! Note
+ The css and/or javascript is not included as part of this extension
+ but must be provided by the end user. The Pygments project provides
+ default css styles which you may find to be a useful starting point.
+
+Syntax
+------
+
+The CodeHilite extension follows the same [syntax][] as regular Markdown code
+blocks, with one exception. The hiliter needs to know what language to use for
+the code block. There are three ways to tell the hiliter what language the code
+block contains and each one has a different result.
+
+!!! Note
+ The format of the language identifier only effects the display of line numbers
+ if `linenums` is set to `None` (the default). If set to `True` or `False`
+ (see [Usage](#usage) below) the format of the identifier has no effect on the
+ display of line numbers -- it only serves as a means to define the language
+ of the code block.
+
+[syntax]: http://daringfireball.net/projects/markdown/syntax#precode
+
+### SheBang (with path) ###
+
+If the first line of the codeblock contains a shebang, the language is derived
+from that and line numbers are used.
+
+ #!/usr/bin/python
+ # Code goes here ...
+
+Will result in:
+
+ #!/usr/bin/python
+ # Code goes here ...
+
+### SheBang (no path) ###
+
+If the first line contains a shebang, but the shebang line does not contain a
+path (a single `/` or even a space), then that line is removed from the code
+block before processing. Line numbers are used.
+
+ #!python
+ # Code goes here ...
+
+Will result in:
+
+ # Code goes here ...
+
+### Colons ###
+
+If the first line begins with three or more colons, the text following the
+colons identifies the language. The first line is removed from the code block
+before processing and line numbers are not used.
+
+ :::python
+ # Code goes here ...
+
+Will result in:
+
+ # Code goes here ...
+
+Certain lines can be selected for emphasis with the colon syntax. When
+using Pygments' default css styles, emphasized lines have a yellow background.
+This is useful to direct the reader's attention to specific lines.
+
+ :::python hl_lines="1 3"
+ # This line is emphasized
+ # This line isn't
+ # This line is emphasized
+
+!!! Note
+ `hl_lines` is named for Pygments' option meaning "highlighted lines".
+
+### When No Language is Defined ###
+
+CodeHilite is completely backwards compatible so that if a code block is
+encountered that does not define a language, the block is simply wrapped in
+`<pre>` tags and output.
+
+ # Code goes here ...
+
+Will result in:
+
+ # Code goes here ...
+
+Lets see the source for that:
+
+ <div class="codehilite"><pre><code># Code goes here ...
+ </code></pre></div>
+
+!!! Note
+ When no language is defined, the Pygments highlighting engine will try to guess
+ the language (unless `guess_lang` is set to `False`). Upon failure, the same
+ behavior will happen as described above.
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.codehilite`
+as the name of the extension.
+
+See the [Library Reference](../reference.html#extensions) for information about
+configuring extensions.
+
+The following options are provided to configure the output:
+
+* **`linenums`**:
+ Use line numbers. Possible values are `True` for yes, `False` for no and
+ `None` for auto. Defaults to `None`.
+
+ Using `True` will force every code block to have line numbers, even when
+ using colons (`:::`) for language identification.
+
+ Using `False` will turn off all line numbers, even when using SheBangs
+ (`#!`) for language identification.
+
+* **`guess_lang`**:
+ Automatic language detection. Defaults to `True`.
+
+ Using `False` will prevent Pygments from guessing the language, and thus
+ highlighting blocks only when you explicitly set the language.
+
+* **`css_class`**:
+ Set CSS class name for the wrapper `<div>` tag. Defaults to
+ `codehilite`.
+
+* **`pygments_style`**:
+ Pygments HTML Formatter Style (ColorScheme). Defaults to `default`.
+
+ !!! Note
+ This is useful only when `noclasses` is set to `True`, otherwise the
+ CSS styles must be provided by the end user.
+
+* **`noclasses`**:
+ Use inline styles instead of CSS classes. Defaults to `False`.
-title: Definition Lists Extension\r
-prev_title: Attribute Lists Extension\r
-prev_url: attr_list.html\r
-next_title: Fenced Code Blocks Extension\r
-next_url: fenced_code_blocks.html\r
-\r
-Definition Lists\r
-================\r
-\r
-Summary\r
--------\r
-\r
-The Definition Lists extension adds the ability to create definition lists in\r
-Markdown documents.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Definition lists are defined using the syntax established in \r
-[PHP Markdown Extra][php].\r
-\r
-[php]: http://www.michelf.com/projects/php-markdown/extra/#def-list\r
-\r
-Thus, the following text (taken from the above referenced PHP documentation):\r
-\r
- Apple\r
- : Pomaceous fruit of plants of the genus Malus in \r
- the family Rosaceae.\r
-\r
- Orange\r
- : The fruit of an evergreen tree of the genus Citrus.\r
-\r
-will be rendered as:\r
-\r
- <dl>\r
- <dt>Apple</dt>\r
- <dd>Pomaceous fruit of plants of the genus Malus in \r
- the family Rosaceae.</dd>\r
-\r
- <dt>Orange</dt>\r
- <dd>The fruit of an evergreen tree of the genus Citrus.</dd>\r
- </dl>\r
-\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `def_list`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Definition Lists Extension
+prev_title: Attribute Lists Extension
+prev_url: attr_list.html
+next_title: Fenced Code Blocks Extension
+next_url: fenced_code_blocks.html
+
+Definition Lists
+================
+
+Summary
+-------
+
+The Definition Lists extension adds the ability to create definition lists in
+Markdown documents.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Definition lists are defined using the syntax established in
+[PHP Markdown Extra][php].
+
+[php]: http://www.michelf.com/projects/php-markdown/extra/#def-list
+
+Thus, the following text (taken from the above referenced PHP documentation):
+
+ Apple
+ : Pomaceous fruit of plants of the genus Malus in
+ the family Rosaceae.
+
+ Orange
+ : The fruit of an evergreen tree of the genus Citrus.
+
+will be rendered as:
+
+ <dl>
+ <dt>Apple</dt>
+ <dd>Pomaceous fruit of plants of the genus Malus in
+ the family Rosaceae.</dd>
+
+ <dt>Orange</dt>
+ <dd>The fruit of an evergreen tree of the genus Citrus.</dd>
+ </dl>
+
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.def_list`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: Extra Extension\r
-prev_title: Extensions\r
-prev_url: index.html\r
-next_title: Abreviations Extension\r
-next_url: abbreviations.html\r
-\r
-Python-Markdown Extra\r
-=====================\r
-\r
-Summary\r
--------\r
-\r
-A compilation of various Python-Markdown extensions that (mostly) imitates\r
-[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).\r
-\r
-The supported extensions include:\r
-\r
-* [Abbreviations](abbreviations.html)\r
-* [Attribute Lists](attr_list.html)\r
-* [Definition Lists](definition_lists.html)\r
-* [Fenced Code Blocks](fenced_code_blocks.html)\r
-* [Footnotes](footnotes.html)\r
-* [Tables](tables.html)\r
-* [Smart Strong](smart_strong.html)\r
-\r
-See each individual extension for syntax documentation. Extra and all its \r
-supported extensions are included in the standard Markdown library.\r
-\r
-Usage\r
------\r
-\r
-From the Python interpreter:\r
-\r
- >>> import markdown\r
- >>> html = markdown.markdown(text, ['extra'])\r
-\r
-There may be [additional extensions](index.html) that are distributed with\r
-Python-Markdown that are not included here in Extra. The features \r
-of those extensions are not part of PHP Markdown Extra, and \r
-therefore, not part of Python-Markdown Extra. If you really would \r
-like Extra to include additional extensions, we suggest creating \r
-your own clone of Extra under a different name \r
-(see the [Extension API](api.html)). \r
-\r
-Markdown Inside HTML Blocks\r
----------------------------\r
-\r
-Unlike the other Extra features, this feature is built into the markdown core and is turned on when `extra` is enabled.\r
-\r
-The content of any raw html block element can be Markdown-formatted simply by adding a `markdown` attribute to the opening tag. The markdown attribute will be stripped from the output, but all other attributes will be preserved.\r
-\r
-If the markdown value is set to `1` (recommended) or any value other than `span` or `block`, the default behavior will be executed: `p`,`h[1-6]`,`li`,`dd`,`dt`,`td`,`th`,`legend`, and `address` elements skip block parsing while others do not. If the default is overrident by a value of `span`, *block parsing will be skipped* regardless of tag. If the default is overriden by a value of `block`, *block parsing will occur* regardless of tag.\r
-\r
-#### Simple Example:\r
-```\r
-This is *true* markdown text.\r
-\r
-<div markdown="1">\r
-This is *true* markdown text.\r
-</div>\r
-```\r
-#### Result:\r
-```\r
-<p>This is <em>true</em> markdown text.</p>\r
-<div>\r
-<p>This is <em>true</em> markdown text.</p>\r
-</div>\r
-```\r
-\r
-### Nested Markdown Inside HTML BLocks\r
-Nested elements are more sensitive and must be used cautiously. To avoid unexpected results:\r
-\r
-* Only nest elements within block mode elements.\r
-* Follow the closing tag of inner elements with a blank line.\r
-* Only have one level of nesting.\r
-\r
-#### Complex Example:\r
-```\r
-<div markdown="1" name="Example">\r
-\r
-The text of the `Example` element.\r
-\r
-<div markdown="1" name="DefaultBlockMode">\r
-This text gets wrapped in `p` tags.\r
-</div>\r
-\r
-The tail of the `DefaultBlockMode` subelement.\r
-\r
-<p markdown="1" name="DefaultSpanMode">\r
-This text *is not* wrapped in additional `p` tags.\r
-</p>\r
-\r
-The tail of the `DefaultSpanMode` subelement.\r
-\r
-<div markdown="span" name="SpanModeOverride">\r
-This `div` block is not wrapped in paragraph tags.\r
-Note: Subelements are not required to have tail text.\r
-</div>\r
-\r
-<p markdown="block" name="BlockModeOverride">\r
-This `p` block *is* foolishly wrapped in further paragraph tags.\r
-</p>\r
-\r
-The tail of the `BlockModeOverride` subelement.\r
-\r
-<div name="RawHtml">\r
-Raw html blocks may also be nested.\r
-</div>\r
-\r
-</div>\r
-\r
-This text is after the markdown in html.\r
-```\r
-#### Result:\r
-```\r
-<div name="Example">\r
-<p>The text of the <code>Example</code> element.</p>\r
-<div name="DefaultBlockMode">\r
-<p>This text gets wrapped in <code>p</code> tags.</p>\r
-</div>\r
-<p>The tail of the <code>DefaultBlockMode</code> subelement.</p>\r
-<p name="DefaultSpanMode">\r
-This text <em>is not</em> wrapped in additional <code>p</code> tags.</p>\r
-<p>The tail of the <code>DefaultSpanMode</code> subelement.</p>\r
-<div name="SpanModeOverride">\r
-This <code>div</code> block is not wrapped in paragraph tags.\r
-Note: Subelements are not required to have tail text.</div>\r
-<p name="BlockModeOverride">\r
-<p>This <code>p</code> block <em>is</em> foolishly wrapped in further paragraph tags.</p>\r
-</p>\r
-<p>The tail of the <code>BlockModeOverride</code> subelement.</p>\r
-<div name="RawHtml">\r
-Raw html blocks may also be nested.\r
-</div>\r
-\r
-</div>\r
-<p>This text is after the markdown in html.</p>\r
-```\r
+title: Extra Extension
+prev_title: Extensions
+prev_url: index.html
+next_title: Abreviations Extension
+next_url: abbreviations.html
+
+Python-Markdown Extra
+=====================
+
+Summary
+-------
+
+A compilation of various Python-Markdown extensions that (mostly) imitates
+[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).
+
+The supported extensions include:
+
+* [Abbreviations](abbreviations.html)
+* [Attribute Lists](attr_list.html)
+* [Definition Lists](definition_lists.html)
+* [Fenced Code Blocks](fenced_code_blocks.html)
+* [Footnotes](footnotes.html)
+* [Tables](tables.html)
+* [Smart Strong](smart_strong.html)
+
+See each individual extension for syntax documentation. Extra and all its
+supported extensions are included in the standard Markdown library.
+
+Usage
+-----
+
+From the Python interpreter:
+
+ >>> import markdown
+ >>> html = markdown.markdown(text, ['markdown.extensions.extra'])
+
+There may be [additional extensions](index.html) that are distributed with
+Python-Markdown that are not included here in Extra. The features
+of those extensions are not part of PHP Markdown Extra, and
+therefore, not part of Python-Markdown Extra. If you really would
+like Extra to include additional extensions, we suggest creating
+your own clone of Extra under a different name
+(see the [Extension API](api.html)).
+
+Markdown Inside HTML Blocks
+---------------------------
+
+Unlike the other Extra features, this feature is built into the markdown core and is turned on when `markdown.extensions.extra` is enabled.
+
+The content of any raw html block element can be Markdown-formatted simply by adding a `markdown` attribute to the opening tag. The markdown attribute will be stripped from the output, but all other attributes will be preserved.
+
+If the markdown value is set to `1` (recommended) or any value other than `span` or `block`, the default behavior will be executed: `p`,`h[1-6]`,`li`,`dd`,`dt`,`td`,`th`,`legend`, and `address` elements skip block parsing while others do not. If the default is overrident by a value of `span`, *block parsing will be skipped* regardless of tag. If the default is overriden by a value of `block`, *block parsing will occur* regardless of tag.
+
+#### Simple Example:
+```
+This is *true* markdown text.
+
+<div markdown="1">
+This is *true* markdown text.
+</div>
+```
+#### Result:
+```
+<p>This is <em>true</em> markdown text.</p>
+<div>
+<p>This is <em>true</em> markdown text.</p>
+</div>
+```
+
+### Nested Markdown Inside HTML BLocks
+Nested elements are more sensitive and must be used cautiously. To avoid unexpected results:
+
+* Only nest elements within block mode elements.
+* Follow the closing tag of inner elements with a blank line.
+* Only have one level of nesting.
+
+#### Complex Example:
+```
+<div markdown="1" name="Example">
+
+The text of the `Example` element.
+
+<div markdown="1" name="DefaultBlockMode">
+This text gets wrapped in `p` tags.
+</div>
+
+The tail of the `DefaultBlockMode` subelement.
+
+<p markdown="1" name="DefaultSpanMode">
+This text *is not* wrapped in additional `p` tags.
+</p>
+
+The tail of the `DefaultSpanMode` subelement.
+
+<div markdown="span" name="SpanModeOverride">
+This `div` block is not wrapped in paragraph tags.
+Note: Subelements are not required to have tail text.
+</div>
+
+<p markdown="block" name="BlockModeOverride">
+This `p` block *is* foolishly wrapped in further paragraph tags.
+</p>
+
+The tail of the `BlockModeOverride` subelement.
+
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+
+</div>
+
+This text is after the markdown in html.
+```
+#### Result:
+```
+<div name="Example">
+<p>The text of the <code>Example</code> element.</p>
+<div name="DefaultBlockMode">
+<p>This text gets wrapped in <code>p</code> tags.</p>
+</div>
+<p>The tail of the <code>DefaultBlockMode</code> subelement.</p>
+<p name="DefaultSpanMode">
+This text <em>is not</em> wrapped in additional <code>p</code> tags.</p>
+<p>The tail of the <code>DefaultSpanMode</code> subelement.</p>
+<div name="SpanModeOverride">
+This <code>div</code> block is not wrapped in paragraph tags.
+Note: Subelements are not required to have tail text.</div>
+<p name="BlockModeOverride">
+<p>This <code>p</code> block <em>is</em> foolishly wrapped in further paragraph tags.</p>
+</p>
+<p>The tail of the <code>BlockModeOverride</code> subelement.</p>
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+
+</div>
+<p>This text is after the markdown in html.</p>
+```
-title: Fenced Code Blocks Extension\r
-prev_title: Definition Lists Extension\r
-prev_url: definition_lists.html\r
-next_title: Footnotes Extension\r
-next_url: footnotes.html\r
-\r
-Fenced Code Blocks\r
-==================\r
-\r
-Summary\r
--------\r
-\r
-The Fenced Code Blocks extension adds a secondary way to define code blocks,\r
-which overcomes a few limitations of the indented code blocks.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Fenced Code Blocks are defined using the syntax established in \r
-[PHP Markdown Extra][php].\r
-\r
-[php]: http://www.michelf.com/projects/php-markdown/extra/#fenced-code-blocks\r
-\r
-Thus, the following text (taken from the above referenced PHP documentation):\r
-\r
- This is a paragraph introducing:\r
-\r
- ~~~~~~~~~~~~~~~~~~~~\r
- a one-line code block\r
- ~~~~~~~~~~~~~~~~~~~~\r
-\r
-Fenced code blocks can have a blank line as the first and/or last line of a \r
-code block and they can also come immediately after a list item without becoming\r
-part of the list.\r
-\r
-!!! warning\r
-\r
- Fenced Code Blocks are only supported at the document root level.\r
- Therefore, they cannot be nested inside lists or blockquotes.\r
-\r
-### Language ###\r
-\r
-In addition to PHP Extra's syntax, you can define the language of the code \r
-block for use by syntax highlighters etc. The language will be assigned as a \r
-class attribute of the ``<code>`` element in the output. Therefore, you should \r
-define the language as you would a css class - ``.language``. For consistency \r
-with other markdown syntax, the language can *optionally* be wrapped in curly \r
-brackets:\r
-\r
- ~~~~{.python}\r
- # python code\r
- ~~~~\r
-\r
- ~~~~.html\r
- <p>HTML Document</p>\r
- ~~~~\r
-\r
-The above will output:\r
-\r
- <pre><code class="python"># python code\r
- </code></pre>\r
- \r
- <pre><code class="html"><p>HTML Document</p>\r
- </code></pre>\r
-\r
-[Github][]'s backtick (`\``) syntax is also supported:\r
-\r
- ```python\r
- # more python code\r
- ```\r
-\r
-[Github]: http://github.github.com/github-flavored-markdown/\r
-\r
-### Emphasized Lines ###\r
-\r
-If you would like to have your fenced code blocks highlighted with the \r
-[CodeHilite][] extension, simply enable that extension (remember that\r
-[Pygments][] is its dependency) and the language of your fenced code blocks\r
-will be passed in and highlighted appropriately.\r
-\r
-Similar to the [colon][] syntax of the CodeHilite extension, fenced code blocks\r
-can also have emphasized certain lines of code.\r
-\r
-The lines can be specified with PHP Extra's syntax:\r
-\r
- ~~~~{.python hl_lines="1 3"}\r
- # This line is emphasized\r
- # This line isn't\r
- # This line is emphasized\r
- ~~~~\r
-\r
-... or with GitHub's:\r
-\r
- ```python hl_lines="1 3"\r
- # This line is emphasized\r
- # This line isn't\r
- # This line is emphasized\r
- ```\r
-\r
-[CodeHilite]: code_hilite.html\r
-[Pygments]: http://pygments.org/\r
-[colon]: code_hilite.html#colons\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `fenced_code`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Fenced Code Blocks Extension
+prev_title: Definition Lists Extension
+prev_url: definition_lists.html
+next_title: Footnotes Extension
+next_url: footnotes.html
+
+Fenced Code Blocks
+==================
+
+Summary
+-------
+
+The Fenced Code Blocks extension adds a secondary way to define code blocks,
+which overcomes a few limitations of the indented code blocks.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Fenced Code Blocks are defined using the syntax established in
+[PHP Markdown Extra][php].
+
+[php]: http://www.michelf.com/projects/php-markdown/extra/#fenced-code-blocks
+
+Thus, the following text (taken from the above referenced PHP documentation):
+
+ This is a paragraph introducing:
+
+ ~~~~~~~~~~~~~~~~~~~~
+ a one-line code block
+ ~~~~~~~~~~~~~~~~~~~~
+
+Fenced code blocks can have a blank line as the first and/or last line of a
+code block and they can also come immediately after a list item without becoming
+part of the list.
+
+!!! warning
+
+ Fenced Code Blocks are only supported at the document root level.
+ Therefore, they cannot be nested inside lists or blockquotes.
+
+### Language ###
+
+In addition to PHP Extra's syntax, you can define the language of the code
+block for use by syntax highlighters etc. The language will be assigned as a
+class attribute of the ``<code>`` element in the output. Therefore, you should
+define the language as you would a css class - ``.language``. For consistency
+with other markdown syntax, the language can *optionally* be wrapped in curly
+brackets:
+
+ ~~~~{.python}
+ # python code
+ ~~~~
+
+ ~~~~.html
+ <p>HTML Document</p>
+ ~~~~
+
+The above will output:
+
+ <pre><code class="python"># python code
+ </code></pre>
+
+ <pre><code class="html"><p>HTML Document</p>
+ </code></pre>
+
+[Github][]'s backtick (`\``) syntax is also supported:
+
+ ```python
+ # more python code
+ ```
+
+[Github]: http://github.github.com/github-flavored-markdown/
+
+### Emphasized Lines ###
+
+If you would like to have your fenced code blocks highlighted with the
+[CodeHilite][] extension, simply enable that extension (remember that
+[Pygments][] is its dependency) and the language of your fenced code blocks
+will be passed in and highlighted appropriately.
+
+Similar to the [colon][] syntax of the CodeHilite extension, fenced code blocks
+can also have emphasized certain lines of code.
+
+The lines can be specified with PHP Extra's syntax:
+
+ ~~~~{.python hl_lines="1 3"}
+ # This line is emphasized
+ # This line isn't
+ # This line is emphasized
+ ~~~~
+
+... or with GitHub's:
+
+ ```python hl_lines="1 3"
+ # This line is emphasized
+ # This line isn't
+ # This line is emphasized
+ ```
+
+[CodeHilite]: code_hilite.html
+[Pygments]: http://pygments.org/
+[colon]: code_hilite.html#colons
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.fenced_code`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: Footnotes Extension\r
-prev_title: Fenced Code Blocks Extension\r
-prev_url: fenced_code_blocks.html\r
-next_title: Tables Extension\r
-next_url: tables.html\r
-\r
-Footnotes\r
-=========\r
-\r
-Summary\r
--------\r
-\r
-The Footnotes extension adds syntax for defining footnotes in Markdown\r
-documents.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Python-Markdown's Footnote syntax follows the generally accepted syntax of the \r
-Markdown community at large and almost exactly matches [PHP Markdown Extra][]'s\r
-implementation of footnotes. The only differences involve a few subtleties in \r
-the output.\r
-\r
-[PHP Markdown Extra]: http://michelf.com/projects/php-markdown/extra/#footnotes\r
-\r
-Example:\r
-\r
- Footnotes[^1] have a label[^@#$%] and the footnote's content.\r
-\r
- [^1]: This is a footnote content.\r
- [^@#$%]: A footnote on the label: "@#$%".\r
-\r
-A footnote label must start with a caret `^` and may contain any inline text \r
-(including spaces) between a set of square brackets `[]`. Only the first\r
-caret has any special meaning.\r
-\r
-A footnote content must start with the label followed by a colon and at least \r
-one space. The label used to define the content must exactly match the label used\r
-in the body (including capitalization and whitespace). The content would then \r
-follow the label either on the same line or on the next line. The content may \r
-contain multiple lines, paragraphs, code blocks, blockquotes and most any other \r
-markdown syntax. The additional lines must be indented one level (four spaces or \r
-one tab). \r
-\r
-When working with multiple blocks, it may be helpful to start the content on a \r
-separate line from the label which defines the content. This way the entire block \r
-is indented consistently and any errors are more easily discernible by the author.\r
-\r
- [^1]: \r
- The first paragraph of the definition.\r
-\r
- Paragraph two of the definition.\r
-\r
- > A blockquote with\r
- > multiple lines.\r
-\r
- a code block\r
-\r
- A final paragraph.\r
-\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `footnotes`\r
-as the name of the extension.\r
-\r
-See the [Library Reference](../reference.html#extensions) for information about\r
-configuring extensions.\r
-\r
-The following options are provided to configure the output:\r
-\r
-* **`PLACE_MARKER`**:\r
- A text string used to mark the position where the footnotes are rendered.\r
- Defaults to `///Footnotes Go Here///`.\r
-\r
- If the place marker text is not found in the document, the footnote\r
- definitions are placed at the end of the resulting HTML document.\r
-\r
-* **`UNIQUE_IDS`**:\r
- Whether to avoid collisions across multiple calls to `reset()`. Defaults to\r
- `False`.\r
- \r
-* **`BACKLINK_TEXT`**:\r
- The text string that links from the footnote definition back to the position\r
- in the document. Defaults to `↩`.\r
+title: Footnotes Extension
+prev_title: Fenced Code Blocks Extension
+prev_url: fenced_code_blocks.html
+next_title: Tables Extension
+next_url: tables.html
+
+Footnotes
+=========
+
+Summary
+-------
+
+The Footnotes extension adds syntax for defining footnotes in Markdown
+documents.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Python-Markdown's Footnote syntax follows the generally accepted syntax of the
+Markdown community at large and almost exactly matches [PHP Markdown Extra][]'s
+implementation of footnotes. The only differences involve a few subtleties in
+the output.
+
+[PHP Markdown Extra]: http://michelf.com/projects/php-markdown/extra/#footnotes
+
+Example:
+
+ Footnotes[^1] have a label[^@#$%] and the footnote's content.
+
+ [^1]: This is a footnote content.
+ [^@#$%]: A footnote on the label: "@#$%".
+
+A footnote label must start with a caret `^` and may contain any inline text
+(including spaces) between a set of square brackets `[]`. Only the first
+caret has any special meaning.
+
+A footnote content must start with the label followed by a colon and at least
+one space. The label used to define the content must exactly match the label used
+in the body (including capitalization and whitespace). The content would then
+follow the label either on the same line or on the next line. The content may
+contain multiple lines, paragraphs, code blocks, blockquotes and most any other
+markdown syntax. The additional lines must be indented one level (four spaces or
+one tab).
+
+When working with multiple blocks, it may be helpful to start the content on a
+separate line from the label which defines the content. This way the entire block
+is indented consistently and any errors are more easily discernible by the author.
+
+ [^1]:
+ The first paragraph of the definition.
+
+ Paragraph two of the definition.
+
+ > A blockquote with
+ > multiple lines.
+
+ a code block
+
+ A final paragraph.
+
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.footnotes`
+as the name of the extension.
+
+See the [Library Reference](../reference.html#extensions) for information about
+configuring extensions.
+
+The following options are provided to configure the output:
+
+* **`PLACE_MARKER`**:
+ A text string used to mark the position where the footnotes are rendered.
+ Defaults to `///Footnotes Go Here///`.
+
+ If the place marker text is not found in the document, the footnote
+ definitions are placed at the end of the resulting HTML document.
+
+* **`UNIQUE_IDS`**:
+ Whether to avoid collisions across multiple calls to `reset()`. Defaults to
+ `False`.
+
+* **`BACKLINK_TEXT`**:
+ The text string that links from the footnote definition back to the position
+ in the document. Defaults to `↩`.
-title: HeaderId Extension\r
-prev_title: CodeHilite Extension\r
-prev_url: code_hilite.html\r
-next_title: Meta-Data Extension\r
-next_url: meta_data.html\r
-\r
-HeaderId\r
-========\r
-\r
-Summary\r
--------\r
-\r
-The HeaderId extension automatically generates `id` attributes for the header\r
-elements (`h1`-`h6`) in the resulting HTML document.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-By default, all headers will automatically have unique `id` attributes \r
-generated based upon the text of the header (see below to turn this off). \r
-Note this example, in which all three headers would have the same `id`:\r
-\r
- #Header\r
- #Header\r
- #Header\r
-\r
-Results in:\r
-\r
- <h1 id="header">Header</h1>\r
- <h1 id="header_1">Header</h1>\r
- <h1 id="header_2">Header</h1>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `headerid`\r
-as the name of the extension.\r
-\r
-See the [Library Reference](../reference.html#extensions) for information about\r
-configuring extensions.\r
-\r
-The following options are provided to configure the output:\r
-\r
-* **`level`**: Base level for headers.\r
-\r
- Default: `1`\r
-\r
- The `level` setting allows you to automatically adjust the header levels to\r
- fit within the hierarchy of your html templates. For example, suppose the \r
- markdown text for a page should not contain any headers higher than level 3\r
- (`<h3>`). The following will accomplish that:\r
-\r
- >>> text = '''\r
- ... #Some Header\r
- ... ## Next Level'''\r
- >>> html = markdown.markdown(text, extensions=['headerid(level=3)'])\r
- >>> print html\r
- <h3 id="some_header">Some Header</h3>\r
- <h4 id="next_level">Next Level</h4>'\r
-\r
-* **`forceid`**: Force all headers to have an id.\r
-\r
- Default: `True`\r
-\r
- The `forceid` setting turns on or off the automatically generated ids for \r
- headers that do not have one explicitly defined (using the\r
- [Attribute List](attr_list.html) extension).\r
-\r
- >>> text = '''\r
- ... # Some Header\r
- ... # Header with ID # { #foo }'''\r
- >>> html = markdown.markdown(text, \r
- extensions=['attr_list', 'headerid(forceid=False)'])\r
- >>> print html\r
- <h1>Some Header</h1>\r
- <h1 id="foo">Header with ID</h1>\r
-\r
-* **`separator`**: Word separator. Character which replaces whitespace in id.\r
-\r
- Default: `-`\r
-\r
-* **`slugify`**: Callable to generate anchors.\r
-\r
- Default: `markdown.extensions.headerid.slugify`\r
-\r
- If you would like to use a different algorithm to define the ids, you can\r
- pass in a callable which takes two arguments:\r
-\r
- * `value`: The string to slugify.\r
- * `separator`: The Word Separator.\r
-\r
-Using with Meta-Data\r
---------------------\r
-\r
-The HeaderId extension also supports the [Meta-Data](meta_data.html) extension.\r
-Please see the documentation for that extension for specifics. The supported \r
-meta-data keywords are:\r
-\r
-* `header_level`\r
-* `header_forceid`\r
-\r
-When used, the meta-data will override the settings provided through the \r
-`extension_configs` interface. \r
-\r
-This document:\r
-\r
- header_level: 2\r
- header_forceid: Off\r
-\r
- # A Header\r
-\r
-\r
-Will result in the following output:\r
-\r
- <h2>A Header</h2>\r
+title: HeaderId Extension
+prev_title: CodeHilite Extension
+prev_url: code_hilite.html
+next_title: Meta-Data Extension
+next_url: meta_data.html
+
+HeaderId
+========
+
+Summary
+-------
+
+The HeaderId extension automatically generates `id` attributes for the header
+elements (`h1`-`h6`) in the resulting HTML document.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+By default, all headers will automatically have unique `id` attributes
+generated based upon the text of the header (see below to turn this off).
+Note this example, in which all three headers would have the same `id`:
+
+ #Header
+ #Header
+ #Header
+
+Results in:
+
+ <h1 id="header">Header</h1>
+ <h1 id="header_1">Header</h1>
+ <h1 id="header_2">Header</h1>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.headerid`
+as the name of the extension.
+
+See the [Library Reference](../reference.html#extensions) for information about
+configuring extensions.
+
+The following options are provided to configure the output:
+
+* **`level`**: Base level for headers.
+
+ Default: `1`
+
+ The `level` setting allows you to automatically adjust the header levels to
+ fit within the hierarchy of your html templates. For example, suppose the
+ markdown text for a page should not contain any headers higher than level 3
+ (`<h3>`). The following will accomplish that:
+
+ >>> text = '''
+ ... #Some Header
+ ... ## Next Level'''
+ >>> from markdown.extensions.headerid import HeaderIdExtension
+ >>> html = markdown.markdown(text, extensions=[HeaderIdExtension(level=3)])
+ >>> print html
+ <h3 id="some_header">Some Header</h3>
+ <h4 id="next_level">Next Level</h4>'
+
+* **`forceid`**: Force all headers to have an id.
+
+ Default: `True`
+
+ The `forceid` setting turns on or off the automatically generated ids for
+ headers that do not have one explicitly defined (using the
+ [Attribute List](attr_list.html) extension).
+
+ >>> text = '''
+ ... # Some Header
+ ... # Header with ID # { #foo }'''
+ >>> html = markdown.markdown(text,
+ extensions=['attr_list', HeaderIdExtension(forceid=False)])
+ >>> print html
+ <h1>Some Header</h1>
+ <h1 id="foo">Header with ID</h1>
+
+* **`separator`**: Word separator. Character which replaces whitespace in id.
+
+ Default: `-`
+
+* **`slugify`**: Callable to generate anchors.
+
+ Default: `markdown.extensions.headerid.slugify`
+
+ If you would like to use a different algorithm to define the ids, you can
+ pass in a callable which takes two arguments:
+
+ * `value`: The string to slugify.
+ * `separator`: The Word Separator.
+
+Using with Meta-Data
+--------------------
+
+The HeaderId extension also supports the [Meta-Data](meta_data.html) extension.
+Please see the documentation for that extension for specifics. The supported
+meta-data keywords are:
+
+* `header_level`
+* `header_forceid`
+
+When used, the meta-data will override the settings provided through the
+`extension_configs` interface.
+
+This document:
+
+ header_level: 2
+ header_forceid: Off
+
+ # A Header
+
+
+Will result in the following output:
+
+ <h2>A Header</h2>
-title: Extensions\r
-prev_title: Command Line\r
-prev_url: ../cli.html\r
-next_title: Extra Extension\r
-next_url: extra.html\r
-\r
-\r
-Available Extensions\r
-====================\r
-\r
-Python Markdown offers a flexible extension mechanism, which makes it possible\r
-to change and/or extend the behavior of the parser without having to edit the\r
-actual source files.\r
-\r
-To use an extension, pass it to markdown with the `extensions` keyword.\r
-\r
- markdown.markdown(some_text, extensions=[MyExtension(), 'path.to.my.ext', 'footnotes'])\r
-\r
-See the [Library Reference](../reference.html#extensions) for more details.\r
-\r
-From the command line, specify an extension with the `-x` option. \r
-\r
- $ python -m markdown -x footnotes -x tables input.txt > output.html\r
-\r
-See the [Command Line docs](../cli.html) or use the `--help` option for more details.\r
-\r
-!!! seealso "See Also"\r
- If you would like to write your own extensions, see the\r
- [Extension API](api.html) for details.\r
-\r
-Officially Supported Extensions\r
--------------------------------\r
-\r
-The extensions listed below are included with (at least) the most recent release\r
-and are officially supported by Python-Markdown. Any documentation is\r
-maintained here and all bug reports should be made to the project. If you\r
-have a typical install of Python-Markdown, these extensions are already\r
-available to you using the "name" listed in the second column below.\r
-\r
-Extension | "Name"\r
------------------------------------- | ---------------\r
-[Extra] | `extra`\r
- [Abbreviations][] | `abbr`\r
- [Attribute Lists][] | `attr_list`\r
- [Definition Lists][] | `def_list`\r
- [Fenced Code Blocks][] | `fenced_code`\r
- [Footnotes][] | `footnotes`\r
- [Tables][] | `tables`\r
- [Smart Strong][] | `smart_strong`\r
-[Admonition][] | `admonition`\r
-[CodeHilite][] | `codehilite`\r
-[HeaderId] | `headerid`\r
-[Meta-Data] | `meta`\r
-[New Line to Break] | `nl2br`\r
-[Sane Lists] | `sane_lists`\r
-[SmartyPants] | `smarty`\r
-[Table of Contents] | `toc`\r
-[WikiLinks] | `wikilinks`\r
-\r
-[Extra]: extra.html\r
-[Abbreviations]: abbreviations.html\r
-[Attribute Lists]: attr_list.html\r
-[Definition Lists]: definition_lists.html\r
-[Fenced Code Blocks]: fenced_code_blocks.html\r
-[Footnotes]: footnotes.html\r
-[Tables]: tables.html\r
-[Smart Strong]: smart_strong.html\r
-[Admonition]: admonition.html\r
-[CodeHilite]: code_hilite.html\r
-[HeaderId]: header_id.html\r
-[Meta-Data]: meta_data.html\r
-[New Line to Break]: nl2br.html\r
-[Sane Lists]: sane_lists.html\r
-[SmartyPants]: smarty.html\r
-[Table of Contents]: toc.html\r
-[WikiLinks]: wikilinks.html\r
-\r
-Third Party Extensions\r
-----------------------\r
-\r
-Various individuals and/or organizations have developed extensions which they\r
-have made available to the public. A [list of third party extensions][list]\r
-is maintained on the wiki for your convenience. The Python-Markdown team\r
-offers no official support for these extensions. Please see the developer of\r
-each extension for support.\r
-\r
-[list]: https://github.com/waylan/Python-Markdown/wiki/Third-Party-Extensions\r
+title: Extensions
+prev_title: Command Line
+prev_url: ../cli.html
+next_title: Extra Extension
+next_url: extra.html
+
+
+Available Extensions
+====================
+
+Python Markdown offers a flexible extension mechanism, which makes it possible
+to change and/or extend the behavior of the parser without having to edit the
+actual source files.
+
+To use an extension, pass it to markdown with the `extensions` keyword.
+
+ markdown.markdown(some_text, extensions=[MyExtension(), 'path.to.my.ext', 'markdown.extensions.footnotes'])
+
+See the [Library Reference](../reference.html#extensions) for more details.
+
+From the command line, specify an extension with the `-x` option.
+
+ $ python -m markdown -x markdown.extensions.footnotes -x markdown.extensions.tables input.txt > output.html
+
+See the [Command Line docs](../cli.html) or use the `--help` option for more details.
+
+!!! seealso "See Also"
+ If you would like to write your own extensions, see the
+ [Extension API](api.html) for details.
+
+Officially Supported Extensions
+-------------------------------
+
+The extensions listed below are included with (at least) the most recent release
+and are officially supported by Python-Markdown. Any documentation is
+maintained here and all bug reports should be made to the project. If you
+have a typical install of Python-Markdown, these extensions are already
+available to you using the "name" listed in the second column below.
+
+Extension | "Name"
+------------------------------------ | ---------------
+[Extra] | `markdown.extensions.extra`
+ [Abbreviations][] | `markdown.extensions.abbr`
+ [Attribute Lists][] | `markdown.extensions.attr_list`
+ [Definition Lists][] | `markdown.extensions.def_list`
+ [Fenced Code Blocks][] | `markdown.extensions.fenced_code`
+ [Footnotes][] | `markdown.extensions.footnotes`
+ [Tables][] | `markdown.extensions.tables`
+ [Smart Strong][] | `markdown.extensions.smart_strong`
+[Admonition][] | `markdown.extensions.admonition`
+[CodeHilite][] | `markdown.extensions.codehilite`
+[HeaderId] | `markdown.extensions.headerid`
+[Meta-Data] | `markdown.extensions.meta`
+[New Line to Break] | `markdown.extensions.nl2br`
+[Sane Lists] | `markdown.extensions.sane_lists`
+[SmartyPants] | `markdown.extensions.smarty`
+[Table of Contents] | `markdown.extensions.toc`
+[WikiLinks] | `markdown.extensions.wikilinks`
+
+[Extra]: extra.html
+[Abbreviations]: abbreviations.html
+[Attribute Lists]: attr_list.html
+[Definition Lists]: definition_lists.html
+[Fenced Code Blocks]: fenced_code_blocks.html
+[Footnotes]: footnotes.html
+[Tables]: tables.html
+[Smart Strong]: smart_strong.html
+[Admonition]: admonition.html
+[CodeHilite]: code_hilite.html
+[HeaderId]: header_id.html
+[Meta-Data]: meta_data.html
+[New Line to Break]: nl2br.html
+[Sane Lists]: sane_lists.html
+[SmartyPants]: smarty.html
+[Table of Contents]: toc.html
+[WikiLinks]: wikilinks.html
+
+Third Party Extensions
+----------------------
+
+Various individuals and/or organizations have developed extensions which they
+have made available to the public. A [list of third party extensions][list]
+is maintained on the wiki for your convenience. The Python-Markdown team
+offers no official support for these extensions. Please see the developer of
+each extension for support.
+
+[list]: https://github.com/waylan/Python-Markdown/wiki/Third-Party-Extensions
-title: Meta-Data Extension\r
-prev_title: HeaderId Extension\r
-prev_url: header_id.html\r
-next_title: New Line to Break Extension\r
-next_url: nl2br.html\r
-\r
-Meta-Data\r
-=========\r
-\r
-Summary\r
--------\r
-\r
-The Meta-Data extension adds a syntax for defining meta-data about a document.\r
-It is inspired by and follows the syntax of [MultiMarkdown][]. Currently,\r
-this extension does not use the meta-data in any way, but simply provides it as\r
-a `Meta` attribute of a Markdown instance for use by other extensions or\r
-directly by your python code.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-[MultiMarkdown]: http://fletcherpenney.net/MultiMarkdown_Syntax_Guide#metadata\r
-\r
-Syntax\r
-------\r
-\r
-Meta-data consists of a series of keywords and values defined at the beginning \r
-of a markdown document like this:\r
-\r
- Title: My Document\r
- Summary: A brief description of my document.\r
- Authors: Waylan Limberg\r
- John Doe\r
- Date: October 2, 2007\r
- blank-value: \r
- base_url: http://example.com\r
-\r
- This is the first paragraph of the document.\r
-\r
-The keywords are case-insensitive and may consist of letters, numbers, \r
-underscores and dashes and must end with a colon. The values consist of \r
-anything following the colon on the line and may even be blank.\r
-\r
-If a line is indented by 4 or more spaces, that line is assumed to be an\r
-additional line of the value for the previous keyword. A keyword may have as\r
-many lines as desired. \r
-\r
-The first blank line ends all meta-data for the document. Therefore, the first \r
-line of a document must not be blank. All meta-data is stripped from the \r
-document prior to any further processing by Markdown.\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `meta`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
-\r
-Accessing the Meta-Data\r
------------------------\r
-\r
-The meta-data is made available as a python Dict in the `Meta` attribute of an \r
-instance of the Markdown class. For example, using the above document:\r
-\r
- >>> md = markdown.Markdown(extensions = ['meta'])\r
- >>> html = md.convert(text)\r
- >>> # Meta-data has been stripped from output\r
- >>> print html\r
- <p>This is the first paragraph of the document.</p>\r
-\r
- >>> # View meta-data\r
- >>> print md.Meta\r
- {\r
- 'title' : ['My Document'],\r
- 'summary' : ['A brief description of my document.'],\r
- 'authors' : ['Waylan Limberg', 'John Doe'],\r
- 'date' : ['October 2, 2007'],\r
- 'blank-value' : [''],\r
- 'base_url' : ['http://example.com']\r
- }\r
-\r
-Note that the keys are all lowercase and the values consist of a list of \r
-strings where each item is one line for that key. This way, one could preserve \r
-line breaks if desired. Or the items could be joined where appropriate. No \r
-assumptions are made regarding the data. It is simply passed as found to the \r
-`Meta` attribute.\r
-\r
-Perhaps the meta-data could be passed into a template system, or used by \r
-various Markdown extensions. The possibilities are left to the imagination of \r
-the developer.\r
-\r
-Compatible Extensions\r
----------------------\r
-\r
-The following extensions are currently known to work with the Meta-Data \r
-extension. The keywords they are known to support are also listed.\r
-\r
-* [HeaderId](header_id.html)\r
- * `header_level`\r
- * `header_forceid`\r
-* [WikiLinks](wikilinks.html)\r
- * `wiki_base_url`\r
- * `wiki_end_url`\r
- * `wiki_html_class`\r
-\r
+title: Meta-Data Extension
+prev_title: HeaderId Extension
+prev_url: header_id.html
+next_title: New Line to Break Extension
+next_url: nl2br.html
+
+Meta-Data
+=========
+
+Summary
+-------
+
+The Meta-Data extension adds a syntax for defining meta-data about a document.
+It is inspired by and follows the syntax of [MultiMarkdown][]. Currently,
+this extension does not use the meta-data in any way, but simply provides it as
+a `Meta` attribute of a Markdown instance for use by other extensions or
+directly by your python code.
+
+This extension is included in the standard Markdown library.
+
+[MultiMarkdown]: http://fletcherpenney.net/MultiMarkdown_Syntax_Guide#metadata
+
+Syntax
+------
+
+Meta-data consists of a series of keywords and values defined at the beginning
+of a markdown document like this:
+
+ Title: My Document
+ Summary: A brief description of my document.
+ Authors: Waylan Limberg
+ John Doe
+ Date: October 2, 2007
+ blank-value:
+ base_url: http://example.com
+
+ This is the first paragraph of the document.
+
+The keywords are case-insensitive and may consist of letters, numbers,
+underscores and dashes and must end with a colon. The values consist of
+anything following the colon on the line and may even be blank.
+
+If a line is indented by 4 or more spaces, that line is assumed to be an
+additional line of the value for the previous keyword. A keyword may have as
+many lines as desired.
+
+The first blank line ends all meta-data for the document. Therefore, the first
+line of a document must not be blank. All meta-data is stripped from the
+document prior to any further processing by Markdown.
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.meta`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
+
+Accessing the Meta-Data
+-----------------------
+
+The meta-data is made available as a python Dict in the `Meta` attribute of an
+instance of the Markdown class. For example, using the above document:
+
+ >>> md = markdown.Markdown(extensions = ['markdown.extensions.meta'])
+ >>> html = md.convert(text)
+ >>> # Meta-data has been stripped from output
+ >>> print html
+ <p>This is the first paragraph of the document.</p>
+
+ >>> # View meta-data
+ >>> print md.Meta
+ {
+ 'title' : ['My Document'],
+ 'summary' : ['A brief description of my document.'],
+ 'authors' : ['Waylan Limberg', 'John Doe'],
+ 'date' : ['October 2, 2007'],
+ 'blank-value' : [''],
+ 'base_url' : ['http://example.com']
+ }
+
+Note that the keys are all lowercase and the values consist of a list of
+strings where each item is one line for that key. This way, one could preserve
+line breaks if desired. Or the items could be joined where appropriate. No
+assumptions are made regarding the data. It is simply passed as found to the
+`Meta` attribute.
+
+Perhaps the meta-data could be passed into a template system, or used by
+various Markdown extensions. The possibilities are left to the imagination of
+the developer.
+
+Compatible Extensions
+---------------------
+
+The following extensions are currently known to work with the Meta-Data
+extension. The keywords they are known to support are also listed.
+
+* [HeaderId](header_id.html)
+ * `header_level`
+ * `header_forceid`
+* [WikiLinks](wikilinks.html)
+ * `wiki_base_url`
+ * `wiki_end_url`
+ * `wiki_html_class`
+
-title: New Line to Break Extension\r
-prev_title: Meta-Data Extension\r
-prev_url: meta_data.html\r
-next_title: Sane Lists Extension\r
-next_url: sane_lists.html\r
-\r
-NL2BR\r
-=====\r
-\r
-Summary\r
--------\r
-\r
-The NL2BR extension will cause newlines to be treated as hard breaks; like\r
-StackOverflow and [GitHub][] flavored Markdown do.\r
-\r
-[Github]: http://github.github.com/github-flavored-markdown/\r
-\r
-Example\r
--------\r
-\r
- >>> import markdown\r
- >>> text = """\r
- ... Line 1\r
- ... Line 2\r
- ... """\r
- >>> html = markdown.markdown(text, extensions=['nl2br'])\r
- >>> print html\r
- <p>Line 1<br />\r
- Line 2</p>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `nl2br`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: New Line to Break Extension
+prev_title: Meta-Data Extension
+prev_url: meta_data.html
+next_title: Sane Lists Extension
+next_url: sane_lists.html
+
+NL2BR
+=====
+
+Summary
+-------
+
+The NL2BR extension will cause newlines to be treated as hard breaks; like
+StackOverflow and [GitHub][] flavored Markdown do.
+
+[Github]: http://github.github.com/github-flavored-markdown/
+
+Example
+-------
+
+ >>> import markdown
+ >>> text = """
+ ... Line 1
+ ... Line 2
+ ... """
+ >>> html = markdown.markdown(text, extensions=['nl2br'])
+ >>> print html
+ <p>Line 1<br />
+ Line 2</p>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.nl2br`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: Sane Lists Extension\r
-prev_title: New Line to Break Extension\r
-prev_url: nl2br.html\r
-next_title: SmartyPants Extension\r
-next_url: smarty.html\r
-\r
-Sane Lists\r
-==========\r
-\r
-Summary\r
--------\r
-\r
-The Sane Lists extension alters the behavior of the Markdown List syntax\r
-to be less surprising.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Sane Lists do not allow the mixing of list types. In other words, an ordered\r
-list will not continue when an unordered list item is encountered and\r
-vice versa. For example:\r
-\r
- 1. Ordered item 1\r
- 2. Ordered item 2\r
-\r
- * Unordered item 1\r
- * Unordered item 2\r
-\r
-will result in the following output:\r
-\r
- <ol>\r
- <li>Ordered item 1</li>\r
- <li>Ordered item 2</li>\r
- </ol>\r
-\r
- <ul>\r
- <li>Unordered item 1</li>\r
- <li>Unordered item 2</li>\r
- </ul>\r
-\r
-Whereas the default Markdown behavior would be to generate an unordered list.\r
-\r
-Note that, unlike the default Markdown behavior, if a blank line is not\r
-included between list items, the different list type is ignored completely. \r
-This corresponds to the behavior of paragraphs. For example:\r
-\r
- A Paragraph.\r
- * Not a list item.\r
-\r
- 1. Ordered list item.\r
- * Not a separate list item.\r
-\r
-With this extension the above will result in the following output:\r
-\r
- <p>A Paragraph.\r
- * Not a list item.</p>\r
-\r
- <ol>\r
- <li>Ordered list item.\r
- * Not a separate list item.</li>\r
- </ol>\r
-\r
-In all other ways, Sane Lists should behave as normal Markdown lists.\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `sane_lists`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Sane Lists Extension
+prev_title: New Line to Break Extension
+prev_url: nl2br.html
+next_title: SmartyPants Extension
+next_url: smarty.html
+
+Sane Lists
+==========
+
+Summary
+-------
+
+The Sane Lists extension alters the behavior of the Markdown List syntax
+to be less surprising.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Sane Lists do not allow the mixing of list types. In other words, an ordered
+list will not continue when an unordered list item is encountered and
+vice versa. For example:
+
+ 1. Ordered item 1
+ 2. Ordered item 2
+
+ * Unordered item 1
+ * Unordered item 2
+
+will result in the following output:
+
+ <ol>
+ <li>Ordered item 1</li>
+ <li>Ordered item 2</li>
+ </ol>
+
+ <ul>
+ <li>Unordered item 1</li>
+ <li>Unordered item 2</li>
+ </ul>
+
+Whereas the default Markdown behavior would be to generate an unordered list.
+
+Note that, unlike the default Markdown behavior, if a blank line is not
+included between list items, the different list type is ignored completely.
+This corresponds to the behavior of paragraphs. For example:
+
+ A Paragraph.
+ * Not a list item.
+
+ 1. Ordered list item.
+ * Not a separate list item.
+
+With this extension the above will result in the following output:
+
+ <p>A Paragraph.
+ * Not a list item.</p>
+
+ <ol>
+ <li>Ordered list item.
+ * Not a separate list item.</li>
+ </ol>
+
+In all other ways, Sane Lists should behave as normal Markdown lists.
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.sane_lists`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: Smart Strong Extension\r
-prev_title: Tables Extension\r
-prev_url: tables.html\r
-next_title: Admonition Extension\r
-next_url: admonition.html\r
-\r
-Smart_Strong\r
-============\r
-\r
-Summary\r
--------\r
-\r
-The Smart_Strong extension adds smarter handling of double underscores within\r
-words. This does for double underscores what [smart_emphasis][] does for single\r
-underscores.\r
-\r
-The Smart_Strong extension is included in the standard Markdown library.\r
-\r
-[smart_emphasis]: ../reference.html#smart_emphasis\r
-\r
-Example\r
--------\r
-\r
- >>> import markdown\r
- >>> markdown.markdown('Text with double__underscore__words.', \\r
- extensions=['smart_strong'])\r
- u'<p>Text with double__underscore__words.</p>'\r
- >>> markdown.markdown('__Strong__ still works.', \\r
- extensions=['smart_strong'])\r
- u'<p><strong>Strong</strong> still works.</p>'\r
- >>> markdown.markdown('__this__works__too__.', \\r
- extensions=['smart_strong'])\r
- u'<p><strong>this__works__too</strong>.</p>'\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `smart_strong`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Smart Strong Extension
+prev_title: Tables Extension
+prev_url: tables.html
+next_title: Admonition Extension
+next_url: admonition.html
+
+Smart_Strong
+============
+
+Summary
+-------
+
+The Smart_Strong extension adds smarter handling of double underscores within
+words. This does for double underscores what [smart_emphasis][] does for single
+underscores.
+
+The Smart_Strong extension is included in the standard Markdown library.
+
+[smart_emphasis]: ../reference.html#smart_emphasis
+
+Example
+-------
+
+ >>> import markdown
+ >>> markdown.markdown('Text with double__underscore__words.', \
+ extensions=['markdown.extensions.smart_strong'])
+ u'<p>Text with double__underscore__words.</p>'
+ >>> markdown.markdown('__Strong__ still works.', \
+ extensions=['markdown.extensions.smart_strong'])
+ u'<p><strong>Strong</strong> still works.</p>'
+ >>> markdown.markdown('__this__works__too__.', \
+ extensions=['markdown.extensions.smart_strong'])
+ u'<p><strong>this__works__too</strong>.</p>'
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.smart_strong`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: SmartyPants Extension\r
-prev_title: Sane Lists Extension\r
-prev_url: sane_lists.html\r
-next_title: Table of Contents Extension\r
-next_url: toc.html\r
-\r
-SmartyPants\r
-===========\r
-\r
-Summary\r
--------\r
-\r
-The SmartyPants extension converts ASCII dashes, quotes and ellipses to\r
-their HTML entity equivalents.\r
-\r
-ASCII symbol | Replacements | HTML Entities\r
------------- | --------------- | -------------------\r
-' | ‘ ’ | `‘` `’`\r
-" | “ ” | `“` `”`\r
-\... | … | `…`\r
-\-- | – | `–`\r
--\-- | — | `—`\r
-\r
-!!! note\r
- This extension reimplements the Python [SmartyPants] \r
- library by intregated it into the markdown parser.\r
- While this does not provide any additional features,\r
- it does offer a few advantages. Notably, it will not \r
- try to work on highlighted code blocks (using the \r
- [CodeHilite] Extension) like the third party library \r
- has been known to do.\r
- \r
-[SmartyPants]: http://pythonhosted.org/smartypants/\r
-[CodeHilite]: code_hilite.html\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `smarty`\r
-as the name of the extension.\r
-\r
-See the [Library Reference](../reference.html#extensions) for information about\r
-configuring extensions.\r
-\r
-The following options are provided to configure the output (all three are set to `True` by default):\r
-\r
-Option | Description\r
------- | -----------\r
-`smart_dashes` | whether to convert dashes\r
-`smart_quotes` | whether to convert quotes\r
-`smart_ellipses` | whether to convert ellipses\r
-\r
-Further reading\r
----------------\r
-\r
-SmartyPants extension is based on the original SmartyPants implementation\r
-by John Gruber. Please read it's [documentation][1] for details.\r
-\r
-[1]: http://daringfireball.net/projects/smartypants/\r
+title: SmartyPants Extension
+prev_title: Sane Lists Extension
+prev_url: sane_lists.html
+next_title: Table of Contents Extension
+next_url: toc.html
+
+SmartyPants
+===========
+
+Summary
+-------
+
+The SmartyPants extension converts ASCII dashes, quotes and ellipses to
+their HTML entity equivalents.
+
+ASCII symbol | Replacements | HTML Entities | Substitution Keys
+------------ | --------------- | ------------------- | ----------------------------------------
+`'` | ‘ ’ | `‘` `’` | `'left-single-quote'`, `'right-single-quote'`
+`"` | “ ” | `“` `”` | `'left-double-quote'`, `'right-double-quote'`
+`<< >>` | « » | `«` `»` | `'left-angle-quote'`, `'right-angle-quote'`
+`...` | … | `…` | `'ellipsis'`
+`--` | – | `–` | `'ndash'`
+`---` | — | `—` | `'mdash'`
+
+Using the configuration option 'substitutions' you can overwrite the
+default substitutions. Just pass a dict mapping (a subset of) the
+keys to the substitution strings.
+
+For example, one might use the following config to get correct quotes for
+the German language:
+
+ extensionConfigs = {
+ 'smarty': {
+ 'substitutions': {
+ 'left-single-quote': '‚', # sb is not a typo!
+ 'right-single-quote': '‘',
+ 'left-double-quote': '„',
+ 'right-double-quote': '“'
+ }
+ }
+ }
+
+!!! note
+ This extension reimplements the Python [SmartyPants]
+ library by intregated it into the markdown parser.
+ While this does not provide any additional features,
+ it does offer a few advantages. Notably, it will not
+ try to work on highlighted code blocks (using the
+ [CodeHilite] Extension) like the third party library
+ has been known to do.
+
+[SmartyPants]: http://pythonhosted.org/smartypants/
+[CodeHilite]: code_hilite.html
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify
+`markdown.extensions.smarty` as the name of the extension.
+
+See the [Library Reference](../reference.html#extensions) for information about
+configuring extensions.
+
+The following options are provided to configure the output:
+
+Option | Default value | Description
+------ | ------------- | -----------
+`smart_dashes` | `True` | whether to convert dashes
+`smart_quotes` | `True` | whether to convert straight quotes
+`smart_angled_quotes` | `False` | whether to convert angled quotes
+`smart_ellipses` | `True` | whether to convert ellipses
+`substitutions` | `{}` | overwrite default substitutions
+
+Further reading
+---------------
+
+SmartyPants extension is based on the original SmartyPants implementation
+by John Gruber. Please read it's [documentation][1] for details.
+
+[1]: http://daringfireball.net/projects/smartypants/
-title: Tables Extension\r
-prev_title: Footnotes Extension\r
-prev_url: footnotes.html\r
-next_title: Smart Strong Extension\r
-next_url: smart_strong.html\r
-\r
-Tables\r
-======\r
-\r
-Summary\r
--------\r
-\r
-The Tables extension adds the ability to create tables in Markdown documents.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Tables are defined using the syntax established in [PHP Markdown Extra][php].\r
-\r
-[php]: http://www.michelf.com/projects/php-markdown/extra/#table\r
-\r
-Thus, the following text (taken from the above referenced PHP documentation):\r
-\r
- First Header | Second Header\r
- ------------- | -------------\r
- Content Cell | Content Cell\r
- Content Cell | Content Cell\r
-\r
-will be rendered as:\r
-\r
- <table>\r
- <thead>\r
- <tr>\r
- <th>First Header</th>\r
- <th>Second Header</th>\r
- </tr>\r
- </thead>\r
- <tbody>\r
- <tr>\r
- <td>Content Cell</td>\r
- <td>Content Cell</td>\r
- </tr>\r
- <tr>\r
- <td>Content Cell</td>\r
- <td>Content Cell</td>\r
- </tr>\r
- </tbody>\r
- </table>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `tables`\r
-as the name of the extension.\r
-\r
-This extension does not accept any special configuration options.\r
+title: Tables Extension
+prev_title: Footnotes Extension
+prev_url: footnotes.html
+next_title: Smart Strong Extension
+next_url: smart_strong.html
+
+Tables
+======
+
+Summary
+-------
+
+The Tables extension adds the ability to create tables in Markdown documents.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Tables are defined using the syntax established in [PHP Markdown Extra][php].
+
+[php]: http://www.michelf.com/projects/php-markdown/extra/#table
+
+Thus, the following text (taken from the above referenced PHP documentation):
+
+ First Header | Second Header
+ ------------- | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
+
+will be rendered as:
+
+ <table>
+ <thead>
+ <tr>
+ <th>First Header</th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td>Content Cell</td>
+ </tr>
+ </tbody>
+ </table>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.tables`
+as the name of the extension.
+
+This extension does not accept any special configuration options.
-title: Table of Contents Extension\r
-prev_title: SmartyPants Extension\r
-prev_url: smarty.html\r
-next_title: WikiLinks Extension\r
-next_url: wikilinks.html\r
-\r
-Table of Contents\r
-=================\r
-\r
-Summary\r
--------\r
-\r
-The Table of Contents extension generates a Table of Contents from a Markdown\r
-document and adds it into the resulting HTML document.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-Syntax\r
-------\r
-\r
-Place a marker in the document where you would like the Table of Contents to\r
-appear. Then, a nested list of all the headers in the document will replace the\r
-marker. The marker defaults to `[TOC]` so the following document:\r
-\r
- [TOC]\r
-\r
- # Header 1\r
-\r
- ## Header 2\r
-\r
-would generate the following output:\r
-\r
- <div class="toc">\r
- <ul>\r
- <li><a href="#header-1">Header 1</a></li>\r
- <ul>\r
- <li><a href="#header-2">Header 2</a></li>\r
- </ul>\r
- </ul>\r
- </div>\r
- <h1 id="header-1">Header 1</h1>\r
- <h1 id="header-2">Header 2</h1>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `toc`\r
-as the name of the extension.\r
-\r
-See the [Library Reference](../reference.html#extensions) for information about\r
-configuring extensions.\r
-\r
-The following options are provided to configure the output:\r
-\r
-* **`marker`**:\r
- Text to find and replace with the Table of Contents. Defaults\r
- to `[TOC]`.\r
-\r
- If a `marker` is not found in the document, then the Table of Contents is\r
- available as an attribute of the Markdown class. This allows one to insert\r
- the Table of Contents elsewhere in their page template. For example:\r
-\r
- >>> text = '''\r
- # Header 1\r
- \r
- ## Header 2\r
- '''\r
- >>> md = markdown.Markdown(extensions=['toc'])\r
- >>> html = md.convert(text)\r
- >>> render_some_template(context={'body': html, 'toc': md.toc})\r
-\r
-* **`slugify`**:\r
- Callable to generate anchors based on header text. Defaults to a built in\r
- `slugify` method. The callable must accept one argument which contains the\r
- text content of the header and return a string which will be used as the\r
- anchor text.\r
-\r
-* **`title`**:\r
- Title to insert in the Table of Contents' `<div>`. Defaults to `None`.\r
-\r
-* **`anchorlink`**:\r
- Setting to `True` will cause the headers link to themselves. Default is\r
- `False`.\r
-\r
-* **`permalink`**:\r
- Set to `True` to have this extension generate a Sphinx-style permanent links\r
- near the headers (for use with Sphinx stylesheets).\r
-\r
+title: Table of Contents Extension
+prev_title: SmartyPants Extension
+prev_url: smarty.html
+next_title: WikiLinks Extension
+next_url: wikilinks.html
+
+Table of Contents
+=================
+
+Summary
+-------
+
+The Table of Contents extension generates a Table of Contents from a Markdown
+document and adds it into the resulting HTML document.
+
+This extension is included in the standard Markdown library.
+
+Syntax
+------
+
+Place a marker in the document where you would like the Table of Contents to
+appear. Then, a nested list of all the headers in the document will replace the
+marker. The marker defaults to `[TOC]` so the following document:
+
+ [TOC]
+
+ # Header 1
+
+ ## Header 2
+
+would generate the following output:
+
+ <div class="toc">
+ <ul>
+ <li><a href="#header-1">Header 1</a></li>
+ <ul>
+ <li><a href="#header-2">Header 2</a></li>
+ </ul>
+ </ul>
+ </div>
+ <h1 id="header-1">Header 1</h1>
+ <h1 id="header-2">Header 2</h1>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.toc`
+as the name of the extension.
+
+See the [Library Reference](../reference.html#extensions) for information about
+configuring extensions.
+
+The following options are provided to configure the output:
+
+* **`marker`**:
+ Text to find and replace with the Table of Contents. Defaults
+ to `[TOC]`.
+
+ If a `marker` is not found in the document, then the Table of Contents is
+ available as an attribute of the Markdown class. This allows one to insert
+ the Table of Contents elsewhere in their page template. For example:
+
+ >>> text = '''
+ # Header 1
+
+ ## Header 2
+ '''
+ >>> md = markdown.Markdown(extensions=['markdown.extensions.toc'])
+ >>> html = md.convert(text)
+ >>> render_some_template(context={'body': html, 'toc': md.toc})
+
+* **`slugify`**:
+ Callable to generate anchors based on header text. Defaults to a built in
+ `slugify` method. The callable must accept one argument which contains the
+ text content of the header and return a string which will be used as the
+ anchor text.
+
+* **`title`**:
+ Title to insert in the Table of Contents' `<div>`. Defaults to `None`.
+
+* **`anchorlink`**:
+ Setting to `True` will cause the headers link to themselves. Default is
+ `False`.
+
+* **`permalink`**:
+ Set to `True` to have this extension generate a Sphinx-style permanent links
+ near the headers (for use with Sphinx stylesheets).
+
-title: WikiLinks Extension\r
-prev_title: Table of Contents Extension\r
-prev_url: toc.html\r
-next_title: Extension API\r
-next_url: api.html\r
-\r
-WikiLinks\r
-=========\r
-\r
-Summary\r
--------\r
-\r
-The WikiLinks extension adds support for [WikiLinks][]. Specifically, any\r
-``[[bracketed]]`` word is converted to a link.\r
-\r
-This extension is included in the standard Markdown library.\r
-\r
-[WikiLinks]: http://en.wikipedia.org/wiki/Wikilink\r
-\r
-Syntax\r
-------\r
-\r
-A ``[[bracketed]]`` word is any combination of upper or lower case letters,\r
-number, dashes, underscores and spaces surrounded by double brackets. Therefore\r
-\r
- [[Bracketed]]\r
-\r
-would produce the following html:\r
-\r
- <a href="/Bracketed/" class="wikilink">Bracketed</a>\r
-\r
-Note that wikilinks are automatically assigned `class="wikilink"` making it\r
-easy to style wikilinks differently from other links on a page if one so\r
-desires. See below for ways to alter the class.\r
-\r
-Also note that when a space is used, the space is converted to an underscore in\r
-the link but left as-is in the label. Perhaps an example would illustrate this\r
-best:\r
-\r
- [[Wiki Link]]\r
-\r
-becomes\r
-\r
- <a href="/Wiki_Link/" class="wikilink">Wiki Link</a>\r
-\r
-Usage\r
------\r
-\r
-See [Extensions](index.html) for general extension usage, specify `wikilinks`\r
-as the name of the extension.\r
-\r
-See the [Library Reference](../reference.html#extensions) for information about\r
-configuring extensions.\r
-\r
-The default behavior is to point each link to the document root of the current\r
-domain and close with a trailing slash. Additionally, each link is assigned to\r
-the html class `wikilink`.\r
-\r
-The following options are provided to change the default behavior:\r
-\r
-* **`base_url`**: String to append to beginning of URL.\r
-\r
- Default: `'/'`\r
-\r
-* **`end_url`**: String to append to end of URL.\r
-\r
- Default: `'/'`\r
-\r
-* **`html_class`**: CSS class. Leave blank for none.\r
-\r
- Default: `'wikilink'`\r
-\r
-* **`build_url`**: Callable which formats the URL from its parts.\r
-\r
-### Examples ###\r
-\r
-For an example, let us suppose links should always point to the subdirectory\r
-`/wiki/` and end with `.html`\r
-\r
- >>> html = markdown.markdown(text,\r
- ... ['wikilinks(base_url=/wiki/,end_url=.html)']\r
- ... )\r
-\r
-The above would result in the following link for `[[WikiLink]]`.\r
-\r
- <a href="/wiki/WikiLink.html" class="wikilink">WikiLink</a>\r
-\r
-If you want to do more that just alter the base and/or end of the URL, you\r
-could also pass in a callable which must accept three arguments (``label``,\r
-``base``, and ``end``). The callable must return the URL in it's entirety.\r
-\r
- def my_url_builder(label, base, end):\r
- # do stuff\r
- return url\r
-\r
- md = markdown.Markdown(\r
- extensions=['wikilinks],\r
- extension_configs={'wikilinks' : [('build_url', my_url_builder)]}\r
- )\r
-\r
-The option is also provided to change or remove the class attribute.\r
-\r
- >>> html = markdown.markdown(text,\r
- ... ['wikilinks(html_class=myclass)']\r
- ... )\r
-\r
-Would cause all wikilinks to be assigned to the class `myclass`.\r
-\r
- <a href="/WikiLink/" class="myclass">WikiLink</a>\r
-\r
-Using with Meta-Data extension\r
-------------------------------\r
-\r
-The WikiLink extension also supports the [Meta-Data](meta_data.html) extension.\r
-Please see the documentation for that extension for specifics. The supported\r
-meta-data keywords are:\r
-\r
-* `wiki_base_url`\r
-* `wiki_end_url`\r
-* `wiki_html_class`\r
-\r
-When used, the meta-data will override the settings provided through the\r
-`extension_configs` interface.\r
-\r
-This document:\r
-\r
- wiki_base_url: http://example.com/\r
- wiki_end_url: .html\r
- wiki_html_class:\r
-\r
- A [[WikiLink]] in the first paragraph.\r
-\r
-would result in the following output (notice the blank `wiki_html_class`):\r
-\r
- <p>A <a href="http://example.com/WikiLink.html">WikiLink</a> in the first paragraph.</p>\r
+title: WikiLinks Extension
+prev_title: Table of Contents Extension
+prev_url: toc.html
+next_title: Extension API
+next_url: api.html
+
+WikiLinks
+=========
+
+Summary
+-------
+
+The WikiLinks extension adds support for [WikiLinks][]. Specifically, any
+``[[bracketed]]`` word is converted to a link.
+
+This extension is included in the standard Markdown library.
+
+[WikiLinks]: http://en.wikipedia.org/wiki/Wikilink
+
+Syntax
+------
+
+A ``[[bracketed]]`` word is any combination of upper or lower case letters,
+number, dashes, underscores and spaces surrounded by double brackets. Therefore
+
+ [[Bracketed]]
+
+would produce the following html:
+
+ <a href="/Bracketed/" class="wikilink">Bracketed</a>
+
+Note that wikilinks are automatically assigned `class="wikilink"` making it
+easy to style wikilinks differently from other links on a page if one so
+desires. See below for ways to alter the class.
+
+Also note that when a space is used, the space is converted to an underscore in
+the link but left as-is in the label. Perhaps an example would illustrate this
+best:
+
+ [[Wiki Link]]
+
+becomes
+
+ <a href="/Wiki_Link/" class="wikilink">Wiki Link</a>
+
+Usage
+-----
+
+See [Extensions](index.html) for general extension usage, specify `markdown.extensions.wikilinks`
+as the name of the extension.
+
+See the [Library Reference](../reference.html#extensions) for information about
+configuring extensions.
+
+The default behavior is to point each link to the document root of the current
+domain and close with a trailing slash. Additionally, each link is assigned to
+the html class `wikilink`.
+
+The following options are provided to change the default behavior:
+
+* **`base_url`**: String to append to beginning of URL.
+
+ Default: `'/'`
+
+* **`end_url`**: String to append to end of URL.
+
+ Default: `'/'`
+
+* **`html_class`**: CSS class. Leave blank for none.
+
+ Default: `'wikilink'`
+
+* **`build_url`**: Callable which formats the URL from its parts.
+
+### Examples ###
+
+For an example, let us suppose links should always point to the subdirectory
+`/wiki/` and end with `.html`
+
+ >>> from markdown.extensions.wikilinks import WikiLinkExtension
+ >>> html = markdown.markdown(text,
+ ... extensions=[WikiLinkExtension(base_url='/wiki/', end_url='.html')]
+ ... )
+
+The above would result in the following link for `[[WikiLink]]`.
+
+ <a href="/wiki/WikiLink.html" class="wikilink">WikiLink</a>
+
+If you want to do more that just alter the base and/or end of the URL, you
+could also pass in a callable which must accept three arguments (``label``,
+``base``, and ``end``). The callable must return the URL in it's entirety.
+
+ >>> def my_url_builder(label, base, end):
+ ... # do stuff
+ ... return url
+ ...
+ >>> html = markdown.markdown(text,
+ ... extensions=[WikiLinkExtension(build_url=my_url_builder)],
+ ... )
+
+The option is also provided to change or remove the class attribute.
+
+ >>> html = markdown.markdown(text,
+ ... extensions=[WikiLinkExtension(html_class='myclass')]
+ ... )
+
+Would cause all wikilinks to be assigned to the class `myclass`.
+
+ <a href="/WikiLink/" class="myclass">WikiLink</a>
+
+Using with Meta-Data extension
+------------------------------
+
+The WikiLink extension also supports the [Meta-Data](meta_data.html) extension.
+Please see the documentation for that extension for specifics. The supported
+meta-data keywords are:
+
+* `wiki_base_url`
+* `wiki_end_url`
+* `wiki_html_class`
+
+When used, the meta-data will override the settings provided through the
+`extension_configs` interface.
+
+This document:
+
+ wiki_base_url: http://example.com/
+ wiki_end_url: .html
+ wiki_html_class:
+
+ A [[WikiLink]] in the first paragraph.
+
+would result in the following output (notice the blank `wiki_html_class`):
+
+ <p>A <a href="http://example.com/WikiLink.html">WikiLink</a> in the first paragraph.</p>
-next_url: install.html\r
-next_title: Installation\r
-prev_title: Table of Contents\r
-prev_url: siteindex.html\r
-\r
-Python-Markdown\r
-===============\r
-\r
-This is a Python implementation of John Gruber's \r
-[Markdown](http://daringfireball.net/projects/markdown/). \r
-It is almost completely compliant with the reference implementation,\r
-though there are a few very minor [differences](#differences). See John's \r
-[Syntax Documentation](http://daringfireball.net/projects/markdown/syntax) \r
-for the syntax rules.\r
-\r
-See the [installation instructions](install.html) to get started.\r
-\r
-Goals\r
------\r
-\r
-The Python-Markdown project is developed with the following goals in mind:\r
-\r
-* Maintain a Python 2 *and* Python 3 library (with an optional CLI wrapper)\r
- suited to use in web server environments (never raise an exception, never \r
- write to stdout, etc.) as an implementation of the markdown parser that \r
- follows the [syntax rules](http://daringfireball.net/projects/markdown/syntax)\r
- and the behavior of the original (markdown.pl) implementation as reasonably\r
- as possible (see [differences](#differences) for a few exceptions).\r
-\r
-* Provide an [Extension API](extensions/api.html) which makes it possible\r
- to change and/or extend the behavior of the parser.\r
-\r
-Features\r
---------\r
-\r
-In addition to the basic markdown syntax, Python-Markdown supports the following\r
-features:\r
-\r
-* __International Input__\r
-\r
- Python-Markdown will accept [input](reference.html#text) in any language \r
- supported by Unicode including bi-directional text. In fact the test suite \r
- includes documents written in Russian and Arabic.\r
-\r
-* __Extensions__\r
-\r
- Various [extensions](extensions/index.html) are provided (including \r
- [extra](extensions/extra.html)) to change and/or extend the base syntax. \r
- Additionally, a public [Extension API](extensions/api.html) is available \r
- to write your own extensions.\r
-\r
-* __Output Formats__\r
-\r
- Python-Markdown can output documents in HTML4, XHTML and HTML5. See the\r
- [Library Reference](reference.html#output_format) for details.\r
-\r
-* __"Safe Mode"__\r
-\r
- When using Python-Markdown to parse input from untrusted users on the web,\r
- the handling of raw HTML can be controlled in various ways to prevent \r
- harmful code from being injected into your site. See the\r
- [Library Reference](reference.html#safe_mode) for details.\r
-\r
-* __Command Line Interface__\r
-\r
- In addition to being a Python Library, a \r
- [command line script](cli.html) is available for your convenience.\r
-\r
-Differences\r
------------\r
-\r
-While Python-Markdown strives to fully implement markdown as described in the \r
-[syntax rules](http://daringfireball.net/projects/markdown/syntax), the rules \r
-can be interpreted in different ways and different implementations \r
-occasionally vary in their behavior (see the \r
-[Babelmark FAQ](http://johnmacfarlane.net/babelmark2/faq.html#what-are-some-examples-of-interesting-divergences-between-implementations)\r
-for some examples). Known and intentional differences found in Python-Markdown \r
-are summarized below:\r
-\r
-* __Middle-Word Emphasis__\r
-\r
- Python-Markdown defaults to ignoring middle-word emphasis. In other words,\r
- `some_long_filename.txt` will not become `some<em>long</em>filename.txt`.\r
- This can be switched off if desired. See the \r
- [Library Reference](reference.html#smart_emphasis) for details.\r
-\r
-* __Indentation/Tab Length__\r
-\r
- The [syntax rules](http://daringfireball.net/projects/markdown/syntax#list) \r
- clearly state that when a list item consists of multiple paragraphs, "each \r
- subsequent paragraph in a list item **must** be indented by either 4 spaces \r
- or one tab" (emphasis added). However, many implementations do not enforce \r
- this rule and allow less than 4 spaces of indentation. The implementers of \r
- Python-Markdown consider it a bug to not enforce this rule. \r
-\r
- This applies to any block level elements nested in a list, including\r
- paragraphs, sub-lists, blockquotes, code blocks, etc. They **must** always \r
- be indented by at least four spaces (or one tab) for each level of nesting.\r
-\r
- In the event that one would prefer different behavior,\r
- [tab_length](reference.html#tab_length) can be set to whatever length is \r
- desired. Be warned however, as this will affect indentation for all aspects \r
- of the syntax (including root level code blocks).\r
-\r
-* __Consecutive Lists__\r
-\r
- While the syntax rules are not clear on this, many implementations (including \r
- the original) do not end one list and start a second list when the list marker\r
- (asterisks, pluses, hyphens, and numbers) changes. For consistency, \r
- Python-Markdown maintains the same behavior with no plans to change in the \r
- foreseeable future. That said, the [Sane List Extension](extensions/sane_lists.html)\r
- is available to provide a less surprising behavior.\r
- \r
-\r
-Support\r
--------\r
-\r
-You may ask for help and discuss various other issues on the [mailing list][] \r
-and report bugs on the [bug tracker][].\r
-\r
-[mailing list]: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss\r
-[bug tracker]: http://github.com/waylan/Python-Markdown/issues \r
+next_url: install.html
+next_title: Installation
+prev_title: Table of Contents
+prev_url: siteindex.html
+
+Python-Markdown
+===============
+
+This is a Python implementation of John Gruber's
+[Markdown](http://daringfireball.net/projects/markdown/).
+It is almost completely compliant with the reference implementation,
+though there are a few very minor [differences](#differences). See John's
+[Syntax Documentation](http://daringfireball.net/projects/markdown/syntax)
+for the syntax rules.
+
+See the [installation instructions](install.html) to get started.
+
+Goals
+-----
+
+The Python-Markdown project is developed with the following goals in mind:
+
+* Maintain a Python 2 *and* Python 3 library (with an optional CLI wrapper)
+ suited to use in web server environments (never raise an exception, never
+ write to stdout, etc.) as an implementation of the markdown parser that
+ follows the [syntax rules](http://daringfireball.net/projects/markdown/syntax)
+ and the behavior of the original (markdown.pl) implementation as reasonably
+ as possible (see [differences](#differences) for a few exceptions).
+
+* Provide an [Extension API](extensions/api.html) which makes it possible
+ to change and/or extend the behavior of the parser.
+
+Features
+--------
+
+In addition to the basic markdown syntax, Python-Markdown supports the following
+features:
+
+* __International Input__
+
+ Python-Markdown will accept [input](reference.html#text) in any language
+ supported by Unicode including bi-directional text. In fact the test suite
+ includes documents written in Russian and Arabic.
+
+* __Extensions__
+
+ Various [extensions](extensions/index.html) are provided (including
+ [extra](extensions/extra.html)) to change and/or extend the base syntax.
+ Additionally, a public [Extension API](extensions/api.html) is available
+ to write your own extensions.
+
+* __Output Formats__
+
+ Python-Markdown can output documents in HTML4, XHTML and HTML5. See the
+ [Library Reference](reference.html#output_format) for details.
+
+* __Command Line Interface__
+
+ In addition to being a Python Library, a
+ [command line script](cli.html) is available for your convenience.
+
+Differences
+-----------
+
+While Python-Markdown strives to fully implement markdown as described in the
+[syntax rules](http://daringfireball.net/projects/markdown/syntax), the rules
+can be interpreted in different ways and different implementations
+occasionally vary in their behavior (see the
+[Babelmark FAQ](http://johnmacfarlane.net/babelmark2/faq.html#what-are-some-examples-of-interesting-divergences-between-implementations)
+for some examples). Known and intentional differences found in Python-Markdown
+are summarized below:
+
+* __Middle-Word Emphasis__
+
+ Python-Markdown defaults to ignoring middle-word emphasis. In other words,
+ `some_long_filename.txt` will not become `some<em>long</em>filename.txt`.
+ This can be switched off if desired. See the
+ [Library Reference](reference.html#smart_emphasis) for details.
+
+* __Indentation/Tab Length__
+
+ The [syntax rules](http://daringfireball.net/projects/markdown/syntax#list)
+ clearly state that when a list item consists of multiple paragraphs, "each
+ subsequent paragraph in a list item **must** be indented by either 4 spaces
+ or one tab" (emphasis added). However, many implementations do not enforce
+ this rule and allow less than 4 spaces of indentation. The implementers of
+ Python-Markdown consider it a bug to not enforce this rule.
+
+ This applies to any block level elements nested in a list, including
+ paragraphs, sub-lists, blockquotes, code blocks, etc. They **must** always
+ be indented by at least four spaces (or one tab) for each level of nesting.
+
+ In the event that one would prefer different behavior,
+ [tab_length](reference.html#tab_length) can be set to whatever length is
+ desired. Be warned however, as this will affect indentation for all aspects
+ of the syntax (including root level code blocks).
+
+* __Consecutive Lists__
+
+ While the syntax rules are not clear on this, many implementations (including
+ the original) do not end one list and start a second list when the list marker
+ (asterisks, pluses, hyphens, and numbers) changes. For consistency,
+ Python-Markdown maintains the same behavior with no plans to change in the
+ foreseeable future. That said, the [Sane List Extension](extensions/sane_lists.html)
+ is available to provide a less surprising behavior.
+
+
+Support
+-------
+
+You may ask for help and discuss various other issues on the [mailing list][]
+and report bugs on the [bug tracker][].
+
+[mailing list]: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss
+[bug tracker]: http://github.com/waylan/Python-Markdown/issues
-title: Installation\r
-prev_title: Summary\r
-prev_url: index.html\r
-next_title: Library Reference\r
-next_url: reference.html\r
-\r
-Installing Python-Markdown\r
-==========================\r
-\r
-The Easy Way\r
-------------\r
-\r
-The easiest way to install Python-Markdown is simply to type one of the \r
-following commands from the command line as an Admin/Root user:\r
-\r
- pip install markdown\r
-\r
-or\r
-\r
- easy_install markdown\r
-\r
-That's it! You're ready to [use](reference.html) Python-Markdown. Enjoy!\r
-\r
-Installing on Windows {: #windows }\r
------------------------------------\r
-\r
-Download the Windows installer (.exe) from \r
-[PyPI](http://pypi.python.org/pypi/Markdown)\r
-\r
-Double-click the file and follow the instructions.\r
-\r
-If you prefer to manually install Python-Markdown in Windows, download the\r
-Zip file, unzip it, and on the command line in the directory you unzipped to,\r
-run the following command:\r
-\r
- C://path/to/python.exe setup.py install\r
-\r
-If you plan to use the provided command line script, you need to make sure your\r
-script directory is on your system path. On a typical Python install of Windows\r
-the Scripts directory is `C:\PythonXX\Scripts\` (were "XX" is the Python version\r
-number, i.e., "27"). Adjust the path according to your system and add to your \r
-system path.\r
-\r
-Installing on *nix Systems {: #linux }\r
---------------------------------------\r
-\r
-From the command line do the following (where 2.x is the version number):\r
-\r
- wget http://pypi.python.org/packages/source/M/Markdown/Markdown-2.x.tar.gz\r
- tar xvzf Markdown-2.x.tar.gz\r
- cd markdown-2.x/\r
- sudo python setup.py install\r
-\r
-See [PyPI](http://pypi.python.org/pypi/Markdown) for all available versions.\r
-\r
-Using the Git Repository {: #git }\r
-----------------------------------\r
-\r
-If you're the type that likes to live on the edge, you may want to keep up with \r
-the latest additions and bug fixes in the repository between releases.\r
-Python-Markdown is maintained in a Git repository on github.com. To\r
-get a copy of Python-Markdown from the repository do the following from the\r
-command line:\r
-\r
- git clone git://github.com/waylan/Python-Markdown.git python-markdown\r
- cd python-markdown\r
- python setup.py install\r
+title: Installation
+prev_title: Summary
+prev_url: index.html
+next_title: Library Reference
+next_url: reference.html
+
+Installing Python-Markdown
+==========================
+
+The Easy Way
+------------
+
+The easiest way to install Python-Markdown is simply to type one of the
+following commands from the command line as an Admin/Root user:
+
+ pip install markdown
+
+or
+
+ easy_install markdown
+
+That's it! You're ready to [use](reference.html) Python-Markdown. Enjoy!
+
+Installing on Windows {: #windows }
+-----------------------------------
+
+Download the Windows installer (.exe) from
+[PyPI](http://pypi.python.org/pypi/Markdown)
+
+Double-click the file and follow the instructions.
+
+If you prefer to manually install Python-Markdown in Windows, download the
+Zip file, unzip it, and on the command line in the directory you unzipped to,
+run the following command:
+
+ C://path/to/python.exe setup.py install
+
+If you plan to use the provided command line script, you need to make sure your
+script directory is on your system path. On a typical Python install of Windows
+the Scripts directory is `C:\PythonXX\Scripts\` (were "XX" is the Python version
+number, i.e., "27"). Adjust the path according to your system and add to your
+system path.
+
+Installing on *nix Systems {: #linux }
+--------------------------------------
+
+From the command line do the following (where 2.x is the version number):
+
+ wget http://pypi.python.org/packages/source/M/Markdown/Markdown-2.x.tar.gz
+ tar xvzf Markdown-2.x.tar.gz
+ cd markdown-2.x/
+ sudo python setup.py install
+
+See [PyPI](http://pypi.python.org/pypi/Markdown) for all available versions.
+
+Using the Git Repository {: #git }
+----------------------------------
+
+If you're the type that likes to live on the edge, you may want to keep up with
+the latest additions and bug fixes in the repository between releases.
+Python-Markdown is maintained in a Git repository on github.com. To
+get a copy of Python-Markdown from the repository do the following from the
+command line:
+
+ git clone git://github.com/waylan/Python-Markdown.git python-markdown
+ cd python-markdown
+ python setup.py install
-title: Library Reference\r
-prev_title: Installation\r
-prev_url: install.html\r
-next_title: Command Line\r
-next_url: cli.html\r
-\r
-\r
-Using Markdown as a Python Library\r
-==================================\r
-\r
-First and foremost, Python-Markdown is intended to be a python library module\r
-used by various projects to convert Markdown syntax into HTML.\r
-\r
-The Basics\r
-----------\r
-\r
-To use markdown as a module:\r
-\r
- import markdown\r
- html = markdown.markdown(your_text_string)\r
-\r
-The Details\r
------------\r
-\r
-Python-Markdown provides two public functions ([`markdown.markdown`](#markdown)\r
-and [`markdown.markdownFromFile`](#markdownFromFile)) both of which wrap the \r
-public class [`markdown.Markdown`](#Markdown). If you're processing one \r
-document at a time, the functions will serve your needs. However, if you need \r
-to process multiple documents, it may be advantageous to create a single \r
-instance of the `markdown.Markdown` class and pass multiple documents through \r
-it.\r
-\r
-### `markdown.markdown (text [, **kwargs])` {: #markdown }\r
-\r
-The following options are available on the `markdown.markdown` function:\r
-\r
-* __`text`__{: #text } (required): The source unicode string.\r
-\r
- !!! note "Important"\r
- Python-Markdown expects **Unicode** as input (although\r
- some simple ASCII strings *may* work) and returns output as Unicode.\r
- Do not pass encoded strings to it! If your input is encoded, (e.g. as \r
- UTF-8), it is your responsibility to decode it. For example:\r
-\r
- input_file = codecs.open("some_file.txt", mode="r", encoding="utf-8")\r
- text = input_file.read()\r
- html = markdown.markdown(text)\r
-\r
- If you want to write the output to disk, you *must* encode it yourself:\r
-\r
- output_file = codecs.open("some_file.html", "w", \r
- encoding="utf-8", \r
- errors="xmlcharrefreplace"\r
- )\r
- output_file.write(html)\r
-\r
-* __`extensions`__{: #extensions }: A list of extensions.\r
-\r
- Python-Markdown provides an [API](extensions/api.html) for third parties to\r
- write extensions to the parser adding their own additions or changes to the\r
- syntax. A few commonly used extensions are shipped with the markdown \r
- library. See the [extension documentation](extensions/index.html) for a \r
- list of available extensions.\r
-\r
- The list of extensions may contain instances of extensions and/or strings \r
- of extension names. \r
-\r
- extensions=[MyExtension(), 'path.to.my.ext', 'extra']\r
- \r
- When passing in extension instances, each class instance must be a subclass\r
- of `markdown.extensions.Extension` and any configuration options should be \r
- defined when initiating the class instance rather than using the \r
- [extension_configs](#extension_configs) keyword. For example:\r
-\r
- from markdown.extensions import Extension\r
- class MyExtension(Extension):\r
- # define your extension here...\r
- \r
- markdown.markdown(text, extensions=[MyExtension(configs={'option': 'value'}))\r
-\r
- If an extension name is provided as a string, the extension must be \r
- importable as a python module on your PYTHONPATH. Python's dot notation is \r
- supported. Therefore, to import the 'extra' extension, one could do \r
- `extensions=['markdown.extensions.extra']` However, if no dots are provided \r
- in the string (`extensions=['extra']`) Markdown will first look for the \r
- module `markdown.extensions.extra` (the built-in extension), then a module \r
- named `mdx_extra` ('mdx_' will be appended to the beginning of the string) \r
- at the root of your PYTHONPATH. \r
-\r
- When loading an extension by name (as a sting), you may either pass in\r
- configuration settings to the extension using the \r
- [extension_configs](#extension_configs) keyword or by appending the \r
- settings to the name in the following format:\r
-\r
- extensions=['name(option1=value,option2=value)']\r
- \r
- Note that there are no quotes or whitespace in the above format, which \r
- severely limits how it can be used. For more complex settings, it is \r
- suggested that the [extension_configs](#extension_configs) keyword\r
- be used or an instance of a class be passed in.\r
-\r
- !!! seealso "See Also"\r
- See the documentation of the [Extension API](extensions/api.html) for \r
- assistance in creating extensions.\r
-\r
-* __`extension_configs`__{: #extension_configs }: A dictionary of\r
- configuration settings for extensions.\r
-\r
- Any configuration settings will only be passed to extensions loaded by name \r
- (as a string). When loading extensions as class instances, pass the \r
- configuration settings directly to the class when initializing it. \r
- \r
- The dictionary of configuration settings must be in the following format:\r
-\r
- extension_configs = {'extension_name_1':\r
- [\r
- ('option_1', 'value_1'),\r
- ('option_2', 'value_2')\r
- ],\r
- 'extension_name_2':\r
- [\r
- ('option_1', 'value_1')\r
- ]\r
- }\r
- See the documentation specific to the extension you are using for help in \r
- specifying configuration settings for that extension.\r
-\r
-* __`output_format`__{: #output_format }: Format of output. \r
-\r
- Supported formats are:\r
-\r
- * `"xhtml1"`: Outputs XHTML 1.x. **Default**.\r
- * `"xhtml5"`: Outputs XHTML style tags of HTML 5\r
- * `"xhtml"`: Outputs latest supported version of XHTML (currently XHTML 1.1).\r
- * `"html4"`: Outputs HTML 4\r
- * `"html5"`: Outputs HTML style tags of HTML 5\r
- * `"html"`: Outputs latest supported version of HTML (currently HTML 4).\r
-\r
- The values can be in either lowercase or uppercase.\r
-\r
- !!! warning\r
- It is suggested that the more specific formats ("xhtml1", "html5", & \r
- "html4") be used as the more general formats ("xhtml" or "html") may \r
- change in the future if it makes sense at that time. \r
-\r
-* __`safe_mode`__{: #safe_mode }: Disallow raw html.\r
-\r
- If you are using Markdown on a web system which will transform text \r
- provided by untrusted users, you may want to use the "safe_mode" \r
- option which ensures that the user's HTML tags are either replaced, \r
- removed or escaped. (They can still create links using Markdown syntax.)\r
- \r
- The following values are accepted:\r
-\r
- * `False` (Default): Raw HTML is passed through unaltered.\r
-\r
- * `replace`: Replace all HTML blocks with the text assigned to \r
- `html_replacement_text` To maintain backward compatibility, setting \r
- `safe_mode=True` will have the same effect as `safe_mode='replace'`. \r
-\r
- To replace raw HTML with something other than the default, do:\r
-\r
- md = markdown.Markdown(safe_mode='replace', \r
- html_replacement_text='--RAW HTML NOT ALLOWED--')\r
-\r
- * `remove`: All raw HTML will be completely stripped from the text with\r
- no warning to the author.\r
-\r
- * `escape`: All raw HTML will be escaped and included in the document.\r
-\r
- For example, the following source:\r
-\r
- Foo <b>bar</b>.\r
-\r
- Will result in the following HTML:\r
-\r
- <p>Foo <b>bar</b>.</p>\r
-\r
- !!! Note \r
- "safe_mode" also alters the default value for the \r
- [`enable_attributes`](#enable_attributes) option.\r
- \r
- !!! seealso "See Also"\r
- HTML sanitizers (like [Bleach]) may provide a better solution for \r
- dealing with markdown text submitted by untrusted users. That way, \r
- both the HTML generated by Markdown and user submited raw HTML are \r
- fully sanitized.\r
- \r
- import markdown\r
- import bleach\r
- html = bleach.clean(markdown.markdown(evil_text))\r
- \r
-[Bleach]: https://github.com/jsocol/bleach\r
-\r
-* __`html_replacement_text`__{: #html_replacement_text }: Text used when \r
- safe_mode is set to `replace`. Defaults to `[HTML_REMOVED]`.\r
-\r
-* __`tab_length`__{: #tab_length }: Length of tabs in the source. Default: 4\r
-\r
-* __`enable_attributes`__{: #enable_attributes}: Enable the conversion of \r
- attributes. Defaults to `True`, unless [`safe_mode`](#safe_mode) is enabled, \r
- in which case the default is `False`.\r
-\r
- !!! Note \r
- `safe_mode` only overrides the default. If `enable_attributes` \r
- is explicitly set, the explicit value is used regardless of `safe_mode`.\r
- However, this could potentially allow an untrusted user to inject\r
- JavaScript into your documents.\r
-\r
-* __`smart_emphasis`__{: #smart_emphasis }: Treat `_connected_words_` \r
- intelligently Default: True\r
-\r
-* __`lazy_ol`__{: #lazy_ol }: Ignore number of first item of ordered lists. \r
- Default: True\r
-\r
- Given the following list:\r
-\r
- 4. Apples\r
- 5. Oranges\r
- 6. Pears\r
-\r
- By default markdown will ignore the fact the the first line started \r
- with item number "4" and the HTML list will start with a number "1".\r
- If `lazy_ol` is set to `False`, then markdown will output the following\r
- HTML:\r
-\r
- <ol>\r
- <li start="4">Apples</li>\r
- <li>Oranges</li>\r
- <li>Pears</li>\r
- </ol>\r
-\r
-\r
-### `markdown.markdownFromFile (**kwargs)` {: #markdownFromFile }\r
-\r
-With a few exceptions, `markdown.markdownFromFile` accepts the same options as \r
-`markdown.markdown`. It does **not** accept a `text` (or Unicode) string. \r
-Instead, it accepts the following required options:\r
-\r
-* __`input`__{: #input } (required): The source text file.\r
-\r
- `input` may be set to one of three options:\r
-\r
- * a string which contains a path to a readable file on the file system,\r
- * a readable file-like object,\r
- * or `None` (default) which will read from `stdin`.\r
-\r
-* __`output`__{: #output }: The target which output is written to.\r
-\r
- `output` may be set to one of three options:\r
-\r
- * a string which contains a path to a writable file on the file system,\r
- * a writable file-like object,\r
- * or `None` (default) which will write to `stdout`.\r
-\r
-* __`encoding`__{: #encoding }: The encoding of the source text file. Defaults \r
- to "utf-8". The same encoding will always be used for input and output. \r
- The 'xmlcharrefreplace' error handler is used when encoding the output.\r
-\r
- !!! Note \r
- This is the only place that decoding and encoding of unicode\r
- takes place in Python-Markdown. If this rather naive solution does not\r
- meet your specific needs, it is suggested that you write your own code\r
- to handle your encoding/decoding needs.\r
-\r
-### `markdown.Markdown ([**kwargs])` {: #Markdown }\r
-\r
-The same options are available when initializing the `markdown.Markdown` class\r
-as on the [`markdown.markdown`](#markdown) function, except that the class does\r
-**not** accept a source text string on initialization. Rather, the source text\r
-string must be passed to one of two instance methods:\r
-\r
-* `Markdown.convert(source)`{: #convert }\r
-\r
- The `source` text must meet the same requirements as the [`text`](#text) \r
- argument of the [`markdown.markdown`](#markdown) function.\r
-\r
- You should also use this method if you want to process multiple strings\r
- without creating a new instance of the class for each string.\r
-\r
- md = markdown.Markdown()\r
- html1 = md.convert(text1)\r
- html2 = md.convert(text2)\r
-\r
- Note that depending on which options and/or extensions are being used,\r
- the parser may need its state reset between each call to `convert`.\r
-\r
- html1 = md.convert(text1)\r
- md.reset()\r
- html2 = md.convert(text2)\r
- \r
- You can also chain calls to `reset` together:\r
- \r
- html3 = md.reset().convert(text3)\r
-\r
-* `Markdown.convertFile(**kwargs)`{: #convertFile }\r
-\r
- The arguments of this method are identical to the arguments of the same\r
- name on the `markdown.markdownFromFile` function ([`input`](#input), \r
- [`output`](#output), and [`encoding`](#encoding)). As with the \r
- [`convert`](#convert) method, this method should be used to \r
- process multiple files without creating a new instance of the class for \r
- each document. State may need to be `reset` between each call to \r
- `convertFile` as is the case with `convert`.\r
+title: Library Reference
+prev_title: Installation
+prev_url: install.html
+next_title: Command Line
+next_url: cli.html
+
+
+Using Markdown as a Python Library
+==================================
+
+First and foremost, Python-Markdown is intended to be a python library module
+used by various projects to convert Markdown syntax into HTML.
+
+The Basics
+----------
+
+To use markdown as a module:
+
+ import markdown
+ html = markdown.markdown(your_text_string)
+
+The Details
+-----------
+
+Python-Markdown provides two public functions ([`markdown.markdown`](#markdown)
+and [`markdown.markdownFromFile`](#markdownFromFile)) both of which wrap the
+public class [`markdown.Markdown`](#Markdown). If you're processing one
+document at a time, these functions will serve your needs. However, if you need
+to process multiple documents, it may be advantageous to create a single
+instance of the `markdown.Markdown` class and pass multiple documents through
+it. If you do use a single instance though, make sure to call the `reset`
+method appropriately ([see below](#convert)).
+
+### `markdown.markdown (text [, **kwargs])` {: #markdown }
+
+The following options are available on the `markdown.markdown` function:
+
+* __`text`__{: #text } (required): The source unicode string.
+
+ !!! note "Important"
+ Python-Markdown expects **Unicode** as input (although
+ some simple ASCII strings *may* work) and returns output as Unicode.
+ Do not pass encoded strings to it! If your input is encoded, (e.g. as
+ UTF-8), it is your responsibility to decode it. For example:
+
+ input_file = codecs.open("some_file.txt", mode="r", encoding="utf-8")
+ text = input_file.read()
+ html = markdown.markdown(text)
+
+ If you want to write the output to disk, you *must* encode it yourself:
+
+ output_file = codecs.open("some_file.html", "w",
+ encoding="utf-8",
+ errors="xmlcharrefreplace"
+ )
+ output_file.write(html)
+
+* __`extensions`__{: #extensions }: A list of extensions.
+
+ Python-Markdown provides an [API](extensions/api.html) for third parties to
+ write extensions to the parser adding their own additions or changes to the
+ syntax. A few commonly used extensions are shipped with the markdown
+ library. See the [extension documentation](extensions/index.html) for a
+ list of available extensions.
+
+ The list of extensions may contain instances of extensions and/or strings
+ of extension names.
+
+ extensions=[MyExtension(), 'path.to.my.ext']
+
+ !!! note
+ The prefered method is to pass in an instance of an extension. Strings
+ should only be used when it is impossable to import the Extension Class
+ directly (from the command line or in a template).
+
+ When passing in extension instances, each class instance must be a subclass
+ of `markdown.extensions.Extension` and any configuration options should be
+ defined when initiating the class instance rather than using the
+ [extension_configs](#extension_configs) keyword. For example:
+
+ from markdown.extensions import Extension
+ class MyExtension(Extension):
+ # define your extension here...
+
+ markdown.markdown(text, extensions=[MyExtension(option='value')])
+
+ If an extension name is provided as a string, the extension must be
+ importable as a python module on your PYTHONPATH. Python's dot notation is
+ supported. Therefore, to import the 'extra' extension, one could do
+ `extensions=['markdown.extensions.extra']`
+
+ Additionaly, a Class may be specified in the name. The class must be at the end of
+ the name and be seperated by a colon from the module.
+
+ Therefore, if you were to import the class like this:
+
+ from path.to.module import SomeExtensionClass
+
+ Then the named extension would comprise this string:
+
+ "path.to.module:SomeExtensionClass"
+
+ !!! note
+ You should only need to specify the class name if more than one extension
+ is defined within the same module. The extensions that come with
+ Python-Markdown do *not* need to have the class name specified. However,
+ doing so will not effect the behavior of the parser.
+
+ When loading an extension by name (as a string), you may pass in
+ configuration settings to the extension using the
+ [extension_configs](#extension_configs) keyword.
+
+ !!! seealso "See Also"
+ See the documentation of the [Extension API](extensions/api.html) for
+ assistance in creating extensions.
+
+* __`extension_configs`__{: #extension_configs }: A dictionary of
+ configuration settings for extensions.
+
+ Any configuration settings will only be passed to extensions loaded by name
+ (as a string). When loading extensions as class instances, pass the
+ configuration settings directly to the class when initializing it.
+
+ !!! Note
+ The prefered method is to pass in an instance of an extension, which
+ does not require use of the `extension_configs` keyword at all.
+ See the [extensions](#extensions) keyword for details.
+
+ The dictionary of configuration settings must be in the following format:
+
+ extension_configs =
+ {
+ 'extension_name_1':
+ {
+ 'option_1': 'value_1',
+ 'option_2': 'value_2'
+ },
+ {
+ 'extension_name_2':
+ {
+ 'option_1': 'value_1'
+ }
+ }
+
+ See the documentation specific to the extension you are using for help in
+ specifying configuration settings for that extension.
+
+* __`output_format`__{: #output_format }: Format of output.
+
+ Supported formats are:
+
+ * `"xhtml1"`: Outputs XHTML 1.x. **Default**.
+ * `"xhtml5"`: Outputs XHTML style tags of HTML 5
+ * `"xhtml"`: Outputs latest supported version of XHTML (currently XHTML 1.1).
+ * `"html4"`: Outputs HTML 4
+ * `"html5"`: Outputs HTML style tags of HTML 5
+ * `"html"`: Outputs latest supported version of HTML (currently HTML 4).
+
+ The values can be in either lowercase or uppercase.
+
+ !!! warning
+ It is suggested that the more specific formats ("xhtml1", "html5", &
+ "html4") be used as the more general formats ("xhtml" or "html") may
+ change in the future if it makes sense at that time.
+
+* __`safe_mode`__{: #safe_mode }: Disallow raw html.
+
+ !!! warning
+ "`safe_mode`" is pending deprecation and should not be used.
+
+ HTML sanitizers (like [Bleach]) provide a better solution for
+ dealing with markdown text submitted by untrusted users.
+
+ import markdown
+ import bleach
+ html = bleach.clean(markdown.markdown(untrusted_text))
+
+ See the [release notes] for more info.
+
+[Bleach]: https://github.com/jsocol/bleach
+[release notes]: release-2.5.html
+
+ The following values are accepted:
+
+ * `False` (Default): Raw HTML is passed through unaltered.
+
+ * `replace`: Replace all HTML blocks with the text assigned to
+ `html_replacement_text` To maintain backward compatibility, setting
+ `safe_mode=True` will have the same effect as `safe_mode='replace'`.
+
+ To replace raw HTML with something other than the default, do:
+
+ md = markdown.Markdown(safe_mode='replace',
+ html_replacement_text='--RAW HTML NOT ALLOWED--')
+
+ * `remove`: All raw HTML will be completely stripped from the text with
+ no warning to the author.
+
+ * `escape`: All raw HTML will be escaped and included in the document.
+
+ For example, the following source:
+
+ Foo <b>bar</b>.
+
+ Will result in the following HTML:
+
+ <p>Foo <b>bar</b>.</p>
+
+ !!! Note
+ "safe_mode" also alters the default value for the
+ [`enable_attributes`](#enable_attributes) option.
+
+
+* __`html_replacement_text`__{: #html_replacement_text }: Text used when
+ safe_mode is set to `replace`. Defaults to `[HTML_REMOVED]`.
+
+ !!! warning
+ "`html_replacement_text`" is pending deprecation and should not be used.
+ See the [release notes] for more info.
+
+* __`tab_length`__{: #tab_length }: Length of tabs in the source. Default: 4
+
+* __`enable_attributes`__{: #enable_attributes}: Enable the conversion of
+ attributes. Defaults to `True`, unless [`safe_mode`](#safe_mode) is enabled,
+ in which case the default is `False`.
+
+ !!! Note
+ `safe_mode` only overrides the default. If `enable_attributes`
+ is explicitly set, the explicit value is used regardless of `safe_mode`.
+ However, this could potentially allow an untrusted user to inject
+ JavaScript into your documents.
+
+* __`smart_emphasis`__{: #smart_emphasis }: Treat `_connected_words_`
+ intelligently Default: True
+
+* __`lazy_ol`__{: #lazy_ol }: Ignore number of first item of ordered lists.
+ Default: True
+
+ Given the following list:
+
+ 4. Apples
+ 5. Oranges
+ 6. Pears
+
+ By default markdown will ignore the fact the the first line started
+ with item number "4" and the HTML list will start with a number "1".
+ If `lazy_ol` is set to `False`, then markdown will output the following
+ HTML:
+
+ <ol>
+ <li start="4">Apples</li>
+ <li>Oranges</li>
+ <li>Pears</li>
+ </ol>
+
+
+### `markdown.markdownFromFile (**kwargs)` {: #markdownFromFile }
+
+With a few exceptions, `markdown.markdownFromFile` accepts the same options as
+`markdown.markdown`. It does **not** accept a `text` (or Unicode) string.
+Instead, it accepts the following required options:
+
+* __`input`__{: #input } (required): The source text file.
+
+ `input` may be set to one of three options:
+
+ * a string which contains a path to a readable file on the file system,
+ * a readable file-like object,
+ * or `None` (default) which will read from `stdin`.
+
+* __`output`__{: #output }: The target which output is written to.
+
+ `output` may be set to one of three options:
+
+ * a string which contains a path to a writable file on the file system,
+ * a writable file-like object,
+ * or `None` (default) which will write to `stdout`.
+
+* __`encoding`__{: #encoding }: The encoding of the source text file. Defaults
+ to "utf-8". The same encoding will always be used for input and output.
+ The 'xmlcharrefreplace' error handler is used when encoding the output.
+
+ !!! Note
+ This is the only place that decoding and encoding of unicode
+ takes place in Python-Markdown. If this rather naive solution does not
+ meet your specific needs, it is suggested that you write your own code
+ to handle your encoding/decoding needs.
+
+### `markdown.Markdown ([**kwargs])` {: #Markdown }
+
+The same options are available when initializing the `markdown.Markdown` class
+as on the [`markdown.markdown`](#markdown) function, except that the class does
+**not** accept a source text string on initialization. Rather, the source text
+string must be passed to one of two instance methods:
+
+* `Markdown.convert(source)`{: #convert }
+
+ The `source` text must meet the same requirements as the [`text`](#text)
+ argument of the [`markdown.markdown`](#markdown) function.
+
+ You should also use this method if you want to process multiple strings
+ without creating a new instance of the class for each string.
+
+ md = markdown.Markdown()
+ html1 = md.convert(text1)
+ html2 = md.convert(text2)
+
+ Depending on which options and/or extensions are being used, the parser may
+ need its state reset between each call to `convert`, otherwise performance
+ can degrade drastically:
+
+ html1 = md.convert(text1)
+ md.reset()
+ html2 = md.convert(text2)
+
+ To make this easier, you can also chain calls to `reset` together:
+
+ html3 = md.reset().convert(text3)
+
+
+* `Markdown.convertFile(**kwargs)`{: #convertFile }
+
+ The arguments of this method are identical to the arguments of the same
+ name on the `markdown.markdownFromFile` function ([`input`](#input),
+ [`output`](#output), and [`encoding`](#encoding)). As with the
+ [`convert`](#convert) method, this method should be used to
+ process multiple files without creating a new instance of the class for
+ each document. State may need to be `reset` between each call to
+ `convertFile` as is the case with `convert`.
-title: Release Notes for v2.0.1\r
-prev_title: Release Notes for v2.0.2\r
-prev_url: release-2.0.2.html\r
-next_title: Release Notes for v2.0\r
-next_url: release-2.0.html\r
-\r
-Python-Markdown 2.0.1 Release Notes\r
-===================================\r
-\r
-Python-Markdown 2.0.1 is a bug-fix release. No new features have been added.\r
-Most notably, various issues with the command line script have been fixed.\r
-There have also been a few fixes for minor parsing bugs in some edge cases.\r
-For a full list of changes, see the git log.\r
-\r
-Backwards-incompatible Changes\r
-------------------------------\r
-\r
-Due to various complications in how Python handles command line scripts in \r
-differance systems and with differant installation tools, we were forced to \r
-rename the commandline script to ``markdown`` (no ".py"). A matching batch\r
-script will get installed on Windows. Any shell scripts which call \r
-``markdown.py`` will need to be altered to call ``markdown`` instead.\r
+title: Release Notes for v2.0.1
+prev_title: Release Notes for v2.0.2
+prev_url: release-2.0.2.html
+next_title: Release Notes for v2.0
+next_url: release-2.0.html
+
+Python-Markdown 2.0.1 Release Notes
+===================================
+
+Python-Markdown 2.0.1 is a bug-fix release. No new features have been added.
+Most notably, various issues with the command line script have been fixed.
+There have also been a few fixes for minor parsing bugs in some edge cases.
+For a full list of changes, see the git log.
+
+Backwards-incompatible Changes
+------------------------------
+
+Due to various complications in how Python handles command line scripts in
+differance systems and with differant installation tools, we were forced to
+rename the commandline script to ``markdown`` (no ".py"). A matching batch
+script will get installed on Windows. Any shell scripts which call
+``markdown.py`` will need to be altered to call ``markdown`` instead.
-title: Release Notes for v2.0.2\r
-prev_title: Release Notes for v2.1.0\r
-prev_url: release-2.1.0.html\r
-next_title: Release Notes for v2.0.1\r
-next_url: release-2.0.1.html\r
-\r
-Python-Markdown 2.0.2 Release Notes\r
-===================================\r
-\r
-Python-Markdown 2.0.2 is a bug-fix release. No new features have been added.\r
-Most notably, the setup script has been updated to include a dependency on \r
-ElementTree on older versions of Python (< 2.5). There have also been a few \r
-fixes for minor parsing bugs in some edge cases. For a full list of changes, \r
-see the git log.\r
-\r
+title: Release Notes for v2.0.2
+prev_title: Release Notes for v2.1.0
+prev_url: release-2.1.0.html
+next_title: Release Notes for v2.0.1
+next_url: release-2.0.1.html
+
+Python-Markdown 2.0.2 Release Notes
+===================================
+
+Python-Markdown 2.0.2 is a bug-fix release. No new features have been added.
+Most notably, the setup script has been updated to include a dependency on
+ElementTree on older versions of Python (< 2.5). There have also been a few
+fixes for minor parsing bugs in some edge cases. For a full list of changes,
+see the git log.
+
-title: Release Notes for v2.0\r
-prev_title: Release Notes for v2.0.1\r
-prev_url: release-2.0.1.html\r
-next_title: Authors\r
-next_url: authors.html\r
-\r
-Python-Markdown 2.0 Release Notes\r
-=================================\r
-\r
-We are happy to release Python-Markdown 2.0, which has been over a year in the \r
-making. We have rewritten significant portions of the code, dramatically \r
-extending the extension API, increased performance, and added numerous \r
-extensions to the distribution (including an extension that mimics PHP Markdown\r
-Extra), all while maintaining backward compatibility with the end user API in\r
-version 1.7.\r
-\r
-Python-Markdown supports Python versions 2.3, 2.4, 2.5, and 2.6. We've even \r
-released a version converted to Python 3.0!\r
-\r
-Backwards-incompatible Changes\r
-------------------------------\r
-\r
-While Python-Markdown has experienced numerous internal changes, those changes \r
-should only affect extension authors. If you have not written your own \r
-extensions, then you should not need to make any changes to your code. \r
-However, you may want to ensure that any third party extensions you are using\r
-are compatible with the new API.\r
-\r
-The new extension API is fully [documented](extensions/api.html) in the docs. \r
-Below is a summary of the significant changes:\r
-\r
-* The old home-grown NanoDOM has been replaced with ElementTree. Therefore all\r
- extensions must use ElementTree rather than the old NanoDOM.\r
-* The various processors and patterns are now stored with OrderedDicts rather \r
- than lists. Any code adding processors and/or patterns into Python-Markdown \r
- will need to be adjusted to use the new API using OrderedDicts.\r
-* The various types of processors available have been either combined, added, \r
- or removed. Ensure that your processors match the currently supported types.\r
-\r
-What's New in Python-Markdown 2.0\r
----------------------------------\r
-\r
-Thanks to the work of Artem Yunusov as part of GSoC 2008, Python-Markdown uses\r
-ElementTree internally to build the (X)HTML document from markdown source text.\r
-This has resolved various issues with the older home-grown NanoDOM and made\r
-notable increases in performance.\r
-\r
-Artem also refactored the Inline Patterns to better support nested patterns \r
-which has resolved many inconsistencies in Python-Markdown's parsing of the \r
-markdown syntax.\r
-\r
-The core parser had been completely rewritten, increasing performance and, for \r
-the first time, making it possible to override/add/change the way block level\r
-content is parsed.\r
-\r
-Python-Markdown now parses markdown source text more closely to the other \r
-popular implementations (Perl, PHP, etc.) than it ever has before. With the\r
-exception of a few minor insignificant differences, any difference should be\r
-considered a bug, rather than a limitation of the parser.\r
-\r
-The option to return HTML4 output as apposed to XHTML has been added. In \r
-addition, extensions should be able to easily add additional output formats.\r
-\r
-As part of implementing markdown in the Dr. Project project (a Trac fork), among\r
-other things, David Wolever refactored the "extension" keyword so that it\r
-accepts either the extension names as strings or instances of extensions. This\r
-makes it possible to include multiple extensions in a single module.\r
-\r
-Numerous extensions are included in the distribution by default. See\r
-[available_extensions](extensions/index.html) for a complete list.\r
-\r
-See the [Change Log](change_log.html) for a full list of changes.\r
-\r
+title: Release Notes for v2.0
+prev_title: Release Notes for v2.0.1
+prev_url: release-2.0.1.html
+next_title: Authors
+next_url: authors.html
+
+Python-Markdown 2.0 Release Notes
+=================================
+
+We are happy to release Python-Markdown 2.0, which has been over a year in the
+making. We have rewritten significant portions of the code, dramatically
+extending the extension API, increased performance, and added numerous
+extensions to the distribution (including an extension that mimics PHP Markdown
+Extra), all while maintaining backward compatibility with the end user API in
+version 1.7.
+
+Python-Markdown supports Python versions 2.3, 2.4, 2.5, and 2.6. We've even
+released a version converted to Python 3.0!
+
+Backwards-incompatible Changes
+------------------------------
+
+While Python-Markdown has experienced numerous internal changes, those changes
+should only affect extension authors. If you have not written your own
+extensions, then you should not need to make any changes to your code.
+However, you may want to ensure that any third party extensions you are using
+are compatible with the new API.
+
+The new extension API is fully [documented](extensions/api.html) in the docs.
+Below is a summary of the significant changes:
+
+* The old home-grown NanoDOM has been replaced with ElementTree. Therefore all
+ extensions must use ElementTree rather than the old NanoDOM.
+* The various processors and patterns are now stored with OrderedDicts rather
+ than lists. Any code adding processors and/or patterns into Python-Markdown
+ will need to be adjusted to use the new API using OrderedDicts.
+* The various types of processors available have been either combined, added,
+ or removed. Ensure that your processors match the currently supported types.
+
+What's New in Python-Markdown 2.0
+---------------------------------
+
+Thanks to the work of Artem Yunusov as part of GSoC 2008, Python-Markdown uses
+ElementTree internally to build the (X)HTML document from markdown source text.
+This has resolved various issues with the older home-grown NanoDOM and made
+notable increases in performance.
+
+Artem also refactored the Inline Patterns to better support nested patterns
+which has resolved many inconsistencies in Python-Markdown's parsing of the
+markdown syntax.
+
+The core parser had been completely rewritten, increasing performance and, for
+the first time, making it possible to override/add/change the way block level
+content is parsed.
+
+Python-Markdown now parses markdown source text more closely to the other
+popular implementations (Perl, PHP, etc.) than it ever has before. With the
+exception of a few minor insignificant differences, any difference should be
+considered a bug, rather than a limitation of the parser.
+
+The option to return HTML4 output as apposed to XHTML has been added. In
+addition, extensions should be able to easily add additional output formats.
+
+As part of implementing markdown in the Dr. Project project (a Trac fork), among
+other things, David Wolever refactored the "extension" keyword so that it
+accepts either the extension names as strings or instances of extensions. This
+makes it possible to include multiple extensions in a single module.
+
+Numerous extensions are included in the distribution by default. See
+[available_extensions](extensions/index.html) for a complete list.
+
+See the [Change Log](change_log.html) for a full list of changes.
+
-title: Release Notes for v2.1.0\r
-prev_title: Release Notes for v2.1.1\r
-prev_url: release-2.1.1.html\r
-next_title: Release Notes for v2.0.2\r
-next_url: release-2.0.2.html\r
-\r
-Python-Markdown 2.1.0 Release Notes\r
-===================================\r
-\r
-We are pleased to release Python-Markdown 2.1 which makes many \r
-improvements on 2.0. In fact, we consider 2.1 to be what 2.0 should have been. \r
-While 2.1 consists mostly of bug fixes, bringing Python-Markdown more inline \r
-with other implementations, some internal improvements were made to the parser, \r
-a few new builtin extensions were added, and HTML5 support was added.\r
-\r
-Python-Markdown supports Python versions 2.4, 2.5, 2.6, 2.7, 3.1, and 3.2 out \r
-of the box. In fact, the same codebase installs on Python 3.1 and 3.2 with no \r
-extra work by the end user.\r
-\r
-Backwards-incompatible Changes\r
-------------------------------\r
-\r
-While Python-Markdown has received only minor internal changes since the last\r
-release, there are a few backward-incompatible changes to note:\r
-\r
-* Support had been dropped for Python 2.3. No guarantees are made that the \r
-library will work in any version of Python lower than 2.4. Additionally, while \r
-the library had been tested with Python 2.4, consider Python 2.4 support to be \r
-depreciated. It is not likely that any future versions will continue to support\r
-any version of Python less than 2.5. Note that Python 3.0 is not supported due \r
-to a bug in its 2to3 tool. If you must use Python-Markdown with Python 3.0, it \r
-is suggested you manually use Python 3.1's 2to3 tool to do a conversion.\r
-\r
-* Python-Markdown previously accepted positional arguments on its class and\r
-wrapper methods. It now expects keyword arguments. Currently, the positional\r
-arguments should continue to work, but the solution feels hacky and may be \r
-removed in a future version. All users are encouraged to use keyword arguments \r
-as documented in the [Library Reference](reference.html).\r
-\r
-* Past versions of Python-Markdown provided module level Global variables which\r
-controlled the behavior of a few different aspects of the parser. Those global\r
-variables have been replaced with attributes on the Markdown class. \r
-Additionally, those attributes are settable as keyword arguments when \r
-initializing a class instance. Therefore, if you were editing the global \r
-variables (either by editing the source or by overriding them in your code), \r
-you should now set them on the class. See the \r
-[Library Reference](reference.html) for the options available.\r
-\r
-* If you have been using the [HeaderID](extensions/header_id.html) extension \r
-to define custom ids on headers, you will want to switch to using the new \r
-[Attribute List](extensions/attr_list.html) extension. The HeaderId extension \r
-now only auto-generates ids on headers which have not already had ids defined. \r
-Note that the [Extra](extensions/extra.html) extension has been switched to use \r
-Attribute Lists instead of HeaderId as it did previously.\r
-\r
-* Some code was moved into the `markdown.util` namespace which was previously\r
-in the `markdown` namespace. Extension authors may need to adjust a few\r
-import statements in their extensions to work with the changes.\r
-\r
-* The commandline script name was changed to `markdown_py`. The previous name\r
-(`markdown`) was conflicting with people (and Linux package systems) who also\r
-had markdown.pl installed on there system as markdown.pl's commandline script\r
-was also named `markdown`. Be aware that installing Python-Markdown 2.1\r
-will not remove the old versions of the script with different names. You\r
-may want to remove them yourself as they are unlikely to work properly.\r
-\r
-What's New in Python-Markdown 2.1\r
----------------------------------\r
-\r
-Three new extensions were added. [Attribute Lists](extensions/attr_list.html), \r
-which was inspired by Maruku's feature of the same name, \r
-[Newline to Break](extensions/nl2br.html), which was inspired by Github \r
-Flavored Markdown, and [Smart Strong](extensions/smart_strong.html), which \r
-fills a hole in the Extra extension.\r
-\r
-HTML5 is now supported. All this really means is that new block level elements \r
-introduced in the HTML5 spec are now properly recognized as raw HTML. As\r
-valid HTML5 can consist of either HTML4 or XHTML1, there is no need to add a\r
-new HTML5 searializers. That said, `html5` and `xhtml5` have been added as \r
-aliases of the `html4` and `xhtml1` searializers respectively.\r
-\r
-An XHTML searializer has been added. Previously, ElementTree's XML searializer \r
-was being used for XHTML output. With the new searliazer we are able to avoid\r
-more invalid output like empty elements (i.e., `<p />`) which can choke \r
-browsers.\r
-\r
-Improved support for Python 3.x. Now when running `setupy.py install` in \r
-Python 3.1 or greater the 2to3 tool is run automatically. Note that Python 3.0 \r
-is not supported due to a bug in its 2to3 tool. If you must use Python-Markdown\r
-with Python 3.0, it is suggested you manually use Python 3.1's 2to3 tool to\r
-do a conversion.\r
-\r
-Methods on instances of the Markdown class that do not return results can now\r
-be changed allowing one to do `md.reset().convert(moretext)`.\r
-\r
-The Markdown class was refactored so that a subclass could define it's own \r
-`build_parser` method which would build a completely different parser. In\r
-other words, one could use the basic machinery in the markdown library to \r
-build a parser of a different markup language without the overhead of building\r
-the markdown parser and throwing it away.\r
-\r
-Import statements within markdown have been improved so that third party \r
-libraries can embed the markdown library if they desire (licencing permitting).\r
-\r
-Added support for Python's `-m` command line option. You can run the markdown \r
-package as a command line script. Do `python -m markdown [options] [args]`. \r
-Note that this is only fully supported in Python 2.7+. Python 2.5 & 2.6 \r
-require you to call the module directly (`markdown.__main__`) rather than\r
-the package (`markdown`). This does not work in Python 2.4.\r
-\r
-The commandline script has been renamed to `markdown_py` which avoids all the \r
-various problems we had with previous names. Also improved the commandline \r
-script to accept input on stdin.\r
-\r
-The testing framework has been completely rebuilt using the Nose testing \r
-framework. This provides a number of benefits including the ability to better\r
-test the builtin extensions and other options available to change the parsing \r
-behavior. See the [Test Suite](test_suite.html) documentation for details.\r
-\r
-Various bug fixes have been made, which are too numerous to list here. See the \r
-[commit log](https://github.com/waylan/Python-Markdown/commits/master) for a \r
-complete history of the changes.\r
+title: Release Notes for v2.1.0
+prev_title: Release Notes for v2.1.1
+prev_url: release-2.1.1.html
+next_title: Release Notes for v2.0.2
+next_url: release-2.0.2.html
+
+Python-Markdown 2.1.0 Release Notes
+===================================
+
+We are pleased to release Python-Markdown 2.1 which makes many
+improvements on 2.0. In fact, we consider 2.1 to be what 2.0 should have been.
+While 2.1 consists mostly of bug fixes, bringing Python-Markdown more inline
+with other implementations, some internal improvements were made to the parser,
+a few new builtin extensions were added, and HTML5 support was added.
+
+Python-Markdown supports Python versions 2.4, 2.5, 2.6, 2.7, 3.1, and 3.2 out
+of the box. In fact, the same codebase installs on Python 3.1 and 3.2 with no
+extra work by the end user.
+
+Backwards-incompatible Changes
+------------------------------
+
+While Python-Markdown has received only minor internal changes since the last
+release, there are a few backward-incompatible changes to note:
+
+* Support had been dropped for Python 2.3. No guarantees are made that the
+library will work in any version of Python lower than 2.4. Additionally, while
+the library had been tested with Python 2.4, consider Python 2.4 support to be
+depreciated. It is not likely that any future versions will continue to support
+any version of Python less than 2.5. Note that Python 3.0 is not supported due
+to a bug in its 2to3 tool. If you must use Python-Markdown with Python 3.0, it
+is suggested you manually use Python 3.1's 2to3 tool to do a conversion.
+
+* Python-Markdown previously accepted positional arguments on its class and
+wrapper methods. It now expects keyword arguments. Currently, the positional
+arguments should continue to work, but the solution feels hacky and may be
+removed in a future version. All users are encouraged to use keyword arguments
+as documented in the [Library Reference](reference.html).
+
+* Past versions of Python-Markdown provided module level Global variables which
+controlled the behavior of a few different aspects of the parser. Those global
+variables have been replaced with attributes on the Markdown class.
+Additionally, those attributes are settable as keyword arguments when
+initializing a class instance. Therefore, if you were editing the global
+variables (either by editing the source or by overriding them in your code),
+you should now set them on the class. See the
+[Library Reference](reference.html) for the options available.
+
+* If you have been using the [HeaderID](extensions/header_id.html) extension
+to define custom ids on headers, you will want to switch to using the new
+[Attribute List](extensions/attr_list.html) extension. The HeaderId extension
+now only auto-generates ids on headers which have not already had ids defined.
+Note that the [Extra](extensions/extra.html) extension has been switched to use
+Attribute Lists instead of HeaderId as it did previously.
+
+* Some code was moved into the `markdown.util` namespace which was previously
+in the `markdown` namespace. Extension authors may need to adjust a few
+import statements in their extensions to work with the changes.
+
+* The commandline script name was changed to `markdown_py`. The previous name
+(`markdown`) was conflicting with people (and Linux package systems) who also
+had markdown.pl installed on there system as markdown.pl's commandline script
+was also named `markdown`. Be aware that installing Python-Markdown 2.1
+will not remove the old versions of the script with different names. You
+may want to remove them yourself as they are unlikely to work properly.
+
+What's New in Python-Markdown 2.1
+---------------------------------
+
+Three new extensions were added. [Attribute Lists](extensions/attr_list.html),
+which was inspired by Maruku's feature of the same name,
+[Newline to Break](extensions/nl2br.html), which was inspired by Github
+Flavored Markdown, and [Smart Strong](extensions/smart_strong.html), which
+fills a hole in the Extra extension.
+
+HTML5 is now supported. All this really means is that new block level elements
+introduced in the HTML5 spec are now properly recognized as raw HTML. As
+valid HTML5 can consist of either HTML4 or XHTML1, there is no need to add a
+new HTML5 searializers. That said, `html5` and `xhtml5` have been added as
+aliases of the `html4` and `xhtml1` searializers respectively.
+
+An XHTML searializer has been added. Previously, ElementTree's XML searializer
+was being used for XHTML output. With the new searliazer we are able to avoid
+more invalid output like empty elements (i.e., `<p />`) which can choke
+browsers.
+
+Improved support for Python 3.x. Now when running `setupy.py install` in
+Python 3.1 or greater the 2to3 tool is run automatically. Note that Python 3.0
+is not supported due to a bug in its 2to3 tool. If you must use Python-Markdown
+with Python 3.0, it is suggested you manually use Python 3.1's 2to3 tool to
+do a conversion.
+
+Methods on instances of the Markdown class that do not return results can now
+be changed allowing one to do `md.reset().convert(moretext)`.
+
+The Markdown class was refactored so that a subclass could define it's own
+`build_parser` method which would build a completely different parser. In
+other words, one could use the basic machinery in the markdown library to
+build a parser of a different markup language without the overhead of building
+the markdown parser and throwing it away.
+
+Import statements within markdown have been improved so that third party
+libraries can embed the markdown library if they desire (licencing permitting).
+
+Added support for Python's `-m` command line option. You can run the markdown
+package as a command line script. Do `python -m markdown [options] [args]`.
+Note that this is only fully supported in Python 2.7+. Python 2.5 & 2.6
+require you to call the module directly (`markdown.__main__`) rather than
+the package (`markdown`). This does not work in Python 2.4.
+
+The commandline script has been renamed to `markdown_py` which avoids all the
+various problems we had with previous names. Also improved the commandline
+script to accept input on stdin.
+
+The testing framework has been completely rebuilt using the Nose testing
+framework. This provides a number of benefits including the ability to better
+test the builtin extensions and other options available to change the parsing
+behavior. See the [Test Suite](test_suite.html) documentation for details.
+
+Various bug fixes have been made, which are too numerous to list here. See the
+[commit log](https://github.com/waylan/Python-Markdown/commits/master) for a
+complete history of the changes.
-title: Release Notes for v2.1.1\r
-prev_title: Release Notes for v2.2.0\r
-prev_url: release-2.2.0.html\r
-next_title: Release Notes for v2.1.0\r
-next_url: release-2.1.0.html\r
-\r
-Python-Markdown 2.1.1 Release Notes\r
-===================================\r
-\r
-Python-Markdown 2.1.1 is a bug-fix release. No new features have been added.\r
-Most notably, a bug which caused raw HTML paring to run __very__ slowly has\r
-been fixed along with a few bugs which caused the parser to raise exceptions\r
-while parsing. For a full list of changes, see the git log.\r
+title: Release Notes for v2.1.1
+prev_title: Release Notes for v2.2.0
+prev_url: release-2.2.0.html
+next_title: Release Notes for v2.1.0
+next_url: release-2.1.0.html
+
+Python-Markdown 2.1.1 Release Notes
+===================================
+
+Python-Markdown 2.1.1 is a bug-fix release. No new features have been added.
+Most notably, a bug which caused raw HTML paring to run __very__ slowly has
+been fixed along with a few bugs which caused the parser to raise exceptions
+while parsing. For a full list of changes, see the git log.
-title: Release Notes for v2.2.1\r
-prev_title: Release Notes for v2.3\r
-prev_url: release-2.3.html\r
-next_title: Release Notes for v2.2.0\r
-next_url: release-2.2.0.html\r
-\r
-Python-Markdown 2.2.1 Release Notes\r
-===================================\r
-\r
-Python-Markdown 2.2.1 is a bug-fix release. No new features have been added.\r
-However, at least one bug fix does not work in Python 2.4 so that version of\r
-Python is no longer supported. For a full list of changes, see the git log.\r
+title: Release Notes for v2.2.1
+prev_title: Release Notes for v2.3
+prev_url: release-2.3.html
+next_title: Release Notes for v2.2.0
+next_url: release-2.2.0.html
+
+Python-Markdown 2.2.1 Release Notes
+===================================
+
+Python-Markdown 2.2.1 is a bug-fix release. No new features have been added.
+However, at least one bug fix does not work in Python 2.4 so that version of
+Python is no longer supported. For a full list of changes, see the git log.
-title: Release Notes for v2.3\r
-prev_title: Release Notes for v2.4\r
-prev_url: release-2.4.html\r
-next_title: Release Notes for v2.2.1\r
-next_url: release-2.2.1.html\r
-\r
-Python-Markdown 2.3 Release Notes\r
-=================================\r
-\r
-We are pleased to release Python-Markdown 2.3 which adds one new extension,\r
-removes a few old (obsolete) extensions, and now runs on both Python 2 and \r
-Python 3 without running the 2to3 conversion tool. See the list of changes \r
-below for details.\r
-\r
-Python-Markdown supports Python versions 2.6, 2.7, 3.1, 3.2, and 3.3.\r
-\r
-Backwards-incompatible Changes\r
-------------------------------\r
-\r
-* Support has been dropped for Python 2.5. No guarantees are made that the\r
-library will work in any version of Python lower than 2.6. As all supported\r
-Python versions include the ElementTree library, Python-Markdown will no \r
-longer try to import a third-party installation of ElementTree.\r
-\r
-* All classes are now "new-style" classes. In other words, all classes\r
-subclass from 'object'. While this is not likely to affect most users, \r
-extension authors may need to make a few minor adjustments to their code.\r
-\r
-* "safe_mode" has been further restricted. Markdown formated links must be\r
-of a known whitelisted scheme when in "safe_mode" or the url is discarded.\r
-The whitelisted schemes are: 'http', 'https', 'ftp', 'ftps', 'mailto', and\r
-'news'. Schemeless urls are also permitted, but are checked in other ways - \r
-as they have been for some time.\r
-\r
-* The ids assigned to footnotes now contain a dash (`-`) rather than a colon\r
-(`:`) when `output_format` it set to "html5" or "xhtml5". If you are making\r
-reference to those ids in your JavaScript or CSS and using the HTML5 output,\r
-you will need to update your code accordingly. No changes are necessary if\r
-you are outputing XHTML (the default) or HTML4.\r
-\r
-* The "force_linenos" config setting of the CodeHilite extension has been\r
-marked as **Pending Deprecation** and a new setting "linenums" has been added to\r
-replace it. See documentation for the [CodeHilite Extension] for an explanation\r
-of the new "linenums" setting. The new setting will honor the old \r
-"force_linenos" if it is set, but it will raise a PendingDeprecationWarning \r
-and will likely be removed in a future version of Python-Markdown.\r
-\r
-[CodeHilite Extension]: extensions/codehilite.html\r
-\r
-* The "RSS" extension has been removed and no longer ships with Python-Markdown.\r
-If you would like to continue using the extension (not recomended), it is \r
-archived on [Github](https://gist.github.com/waylan/4773365).\r
-\r
-* The "HTML Tidy" Extension has been removed and no longer ships with Python-Markdown.\r
-If you would like to continue using the extension (not recomended), it is \r
-archived on [Github](https://gist.github.com/waylan/5152650). Note that the \r
-underlying library, uTidylib, is not Python 3 compatable. Instead, it is \r
-recommended that the newer [PyTidyLib] (version 0.2.2+ for Python 3 \r
-compatability - install from github not PyPI) be used. As the API for that \r
-library is rather simple, it is recommended that the output of Markdown be \r
-wrapped in a call to PyTidyLib rather than using an extension (for example: \r
-`tidylib.tidy_fragment(markdown.markdown(source), options={...})`).\r
-\r
-[PyTidyLib]: http://countergram.com/open-source/pytidylib\r
-\r
-What's New in Python-Markdown 2.3\r
----------------------------------\r
-\r
-* The entire code base now universally runs in Python 2 and Python 3 without\r
-any need for running the 2to3 conversion tool. This not only simplifies testing,\r
-but by using unicode_literals, results in more consistent behavior across\r
-Python versions. Additionally, the relative imports (made possible in Python 2\r
-via absolute_import) allows the entire library to more easily be embedded in a \r
-subdirectory of another project. The various files within the library will \r
-still import each other properly even though 'markdown' may not be in Python's\r
-root namespace.\r
-\r
-* The [Admonition Extension] has been added, which implements [rST-style][rST] \r
-admonitions in the Markdown syntax. However, be warned that this extension \r
-is experimental and the syntax and behavior is still subject to change. Please \r
-try it out and report bugs and/or improvements.\r
-\r
-[Admonition Extension]: extensions/admonition.html\r
-[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions\r
-\r
-* Various bug fixes have been made. See the\r
-[commit log](https://github.com/waylan/Python-Markdown/commits/master)\r
-for a complete history of the changes.\r
+title: Release Notes for v2.3
+prev_title: Release Notes for v2.4
+prev_url: release-2.4.html
+next_title: Release Notes for v2.2.1
+next_url: release-2.2.1.html
+
+Python-Markdown 2.3 Release Notes
+=================================
+
+We are pleased to release Python-Markdown 2.3 which adds one new extension,
+removes a few old (obsolete) extensions, and now runs on both Python 2 and
+Python 3 without running the 2to3 conversion tool. See the list of changes
+below for details.
+
+Python-Markdown supports Python versions 2.6, 2.7, 3.1, 3.2, and 3.3.
+
+Backwards-incompatible Changes
+------------------------------
+
+* Support has been dropped for Python 2.5. No guarantees are made that the
+library will work in any version of Python lower than 2.6. As all supported
+Python versions include the ElementTree library, Python-Markdown will no
+longer try to import a third-party installation of ElementTree.
+
+* All classes are now "new-style" classes. In other words, all classes
+subclass from 'object'. While this is not likely to affect most users,
+extension authors may need to make a few minor adjustments to their code.
+
+* "safe_mode" has been further restricted. Markdown formated links must be
+of a known whitelisted scheme when in "safe_mode" or the url is discarded.
+The whitelisted schemes are: 'http', 'https', 'ftp', 'ftps', 'mailto', and
+'news'. Schemeless urls are also permitted, but are checked in other ways -
+as they have been for some time.
+
+* The ids assigned to footnotes now contain a dash (`-`) rather than a colon
+(`:`) when `output_format` it set to "html5" or "xhtml5". If you are making
+reference to those ids in your JavaScript or CSS and using the HTML5 output,
+you will need to update your code accordingly. No changes are necessary if
+you are outputing XHTML (the default) or HTML4.
+
+* The "force_linenos" config setting of the CodeHilite extension has been
+marked as **Pending Deprecation** and a new setting "linenums" has been added to
+replace it. See documentation for the [CodeHilite Extension] for an explanation
+of the new "linenums" setting. The new setting will honor the old
+"force_linenos" if it is set, but it will raise a PendingDeprecationWarning
+and will likely be removed in a future version of Python-Markdown.
+
+[CodeHilite Extension]: extensions/codehilite.html
+
+* The "RSS" extension has been removed and no longer ships with Python-Markdown.
+If you would like to continue using the extension (not recomended), it is
+archived on [Github](https://gist.github.com/waylan/4773365).
+
+* The "HTML Tidy" Extension has been removed and no longer ships with Python-Markdown.
+If you would like to continue using the extension (not recomended), it is
+archived on [Github](https://gist.github.com/waylan/5152650). Note that the
+underlying library, uTidylib, is not Python 3 compatable. Instead, it is
+recommended that the newer [PyTidyLib] (version 0.2.2+ for Python 3
+compatability - install from github not PyPI) be used. As the API for that
+library is rather simple, it is recommended that the output of Markdown be
+wrapped in a call to PyTidyLib rather than using an extension (for example:
+`tidylib.tidy_fragment(markdown.markdown(source), options={...})`).
+
+[PyTidyLib]: http://countergram.com/open-source/pytidylib
+
+What's New in Python-Markdown 2.3
+---------------------------------
+
+* The entire code base now universally runs in Python 2 and Python 3 without
+any need for running the 2to3 conversion tool. This not only simplifies testing,
+but by using unicode_literals, results in more consistent behavior across
+Python versions. Additionally, the relative imports (made possible in Python 2
+via absolute_import) allows the entire library to more easily be embedded in a
+subdirectory of another project. The various files within the library will
+still import each other properly even though 'markdown' may not be in Python's
+root namespace.
+
+* The [Admonition Extension] has been added, which implements [rST-style][rST]
+admonitions in the Markdown syntax. However, be warned that this extension
+is experimental and the syntax and behavior is still subject to change. Please
+try it out and report bugs and/or improvements.
+
+[Admonition Extension]: extensions/admonition.html
+[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions
+
+* Various bug fixes have been made. See the
+[commit log](https://github.com/waylan/Python-Markdown/commits/master)
+for a complete history of the changes.
-title: Release Notes for v2.4\r
-prev_title: Change Log\r
-prev_url: change_log.html\r
-next_title: Release Notes for v2.3\r
-next_url: release-2.3.html\r
-\r
-Python-Markdown 2.4 Release Notes\r
-=================================\r
-\r
-We are pleased to release Python-Markdown 2.4 which adds one new extension\r
-and fixes various bugs. See the list of changes below for details.\r
-\r
-Python-Markdown supports Python versions 2.6, 2.7, 3.1, 3.2, and 3.3.\r
-\r
-Backwards-incompatible Changes\r
-------------------------------\r
-\r
-* The "force_linenos" config setting of the CodeHilite extension has been\r
-marked as **Deprecated**. It had previously been marked as "Pending Deprecation"\r
-in version 2.3 when a new setting "linenums" was added to replace it. See \r
-documentation for the [CodeHilite Extension] for an explanation of the new \r
-"linenums" setting. The new setting will honor the old "force_linenos" if it \r
-is set, but "force_linenos" will raise a DeprecationWarning and will likely \r
-be removed in a future version of Python-Markdown.\r
-\r
-[CodeHilite Extension]: extensions/code_hilite.html\r
-\r
-* URLs are no longer percent-encoded. This improves compatibility with the\r
-original (written in Perl) Markdown implementation. Please percent-encode\r
-your URLs manually when needed.\r
-\r
-What's New in Python-Markdown 2.4\r
----------------------------------\r
-\r
-* Thanks to the hard work of [Dmitry Shachnev] the [Smarty Extension] has been \r
-added, which implements [SmartyPants] using Python-Markdown's Extension API. \r
-This offers a few benefits over a third party sript. The HTML does not need\r
-to be "tokenized" twice, no hacks are required to combine SmartyPants and\r
-code highlighting, and we get markdown's escaping feature for free. Please try \r
-it out and report bugs and/or improvements.\r
-\r
-[Dmitry Shachnev]: https://github.com/mitya57\r
-[Smarty Extension]: extensions/smarty.html\r
-[SmartyPants]: http://daringfireball.net/projects/smartypants/\r
-\r
-* The [Table of Contents Extension] now supports new `permalink` option\r
-for creating [Sphinx]-style anchor links.\r
-\r
-[Table of Contents Extension]: extensions/toc.html\r
-[Sphinx]: http://sphinx-doc.org/\r
-\r
-* It is now possible to enable Markdown formatting inside HTML blocks by\r
-appending `markdown=1` to opening tag attributes. See [Markdown Inside HTML\r
-Blocks] section for details. Thanks to [ryneeverett] for implementing this\r
-feature.\r
-\r
-[Markdown Inside HTML Blocks]: extensions/extra.html#nested-markdown-inside-html-blocks\r
-[ryneeverett]: https://github.com/ryneeverett\r
-\r
-* The code blocks now support emphasizing some of the code lines. To use this\r
-feature, specify `hl_lines` option after language name, for example (using\r
-the [Fenced Code Extension]):\r
-\r
- ```.python hl_lines="1 3"\r
- # This line will be emphasized.\r
- # This one won't.\r
- # This one will be also emphasized.\r
- ```\r
-\r
- Thanks to [A. Jesse Jiryu Davis] for implementing this feature.\r
-\r
-[Fenced Code Extension]: extensions/fenced_code_blocks.html\r
-[A. Jesse Jiryu Davis]: https://github.com/ajdavis\r
-\r
-* Various bug fixes have been made. See the\r
-[commit log](https://github.com/waylan/Python-Markdown/commits/master)\r
-for a complete history of the changes.\r
+title: Release Notes for v2.4
+prev_title: Release Notes for v2.5
+prev_url: release-2.5.html
+next_title: Release Notes for v2.3
+next_url: release-2.3.html
+
+Python-Markdown 2.4 Release Notes
+=================================
+
+We are pleased to release Python-Markdown 2.4 which adds one new extension
+and fixes various bugs. See the list of changes below for details.
+
+Python-Markdown supports Python versions 2.6, 2.7, 3.1, 3.2, and 3.3.
+
+Backwards-incompatible Changes
+------------------------------
+
+* The "force_linenos" config setting of the CodeHilite extension has been
+marked as **Deprecated**. It had previously been marked as "Pending Deprecation"
+in version 2.3 when a new setting "linenums" was added to replace it. See
+documentation for the [CodeHilite Extension] for an explanation of the new
+"linenums" setting. The new setting will honor the old "force_linenos" if it
+is set, but "force_linenos" will raise a DeprecationWarning and will likely
+be removed in a future version of Python-Markdown.
+
+[CodeHilite Extension]: extensions/code_hilite.html
+
+* URLs are no longer percent-encoded. This improves compatibility with the
+original (written in Perl) Markdown implementation. Please percent-encode
+your URLs manually when needed.
+
+What's New in Python-Markdown 2.4
+---------------------------------
+
+* Thanks to the hard work of [Dmitry Shachnev] the [Smarty Extension] has been
+added, which implements [SmartyPants] using Python-Markdown's Extension API.
+This offers a few benefits over a third party sript. The HTML does not need
+to be "tokenized" twice, no hacks are required to combine SmartyPants and
+code highlighting, and we get markdown's escaping feature for free. Please try
+it out and report bugs and/or improvements.
+
+[Dmitry Shachnev]: https://github.com/mitya57
+[Smarty Extension]: extensions/smarty.html
+[SmartyPants]: http://daringfireball.net/projects/smartypants/
+
+* The [Table of Contents Extension] now supports new `permalink` option
+for creating [Sphinx]-style anchor links.
+
+[Table of Contents Extension]: extensions/toc.html
+[Sphinx]: http://sphinx-doc.org/
+
+* It is now possible to enable Markdown formatting inside HTML blocks by
+appending `markdown=1` to opening tag attributes. See [Markdown Inside HTML
+Blocks] section for details. Thanks to [ryneeverett] for implementing this
+feature.
+
+[Markdown Inside HTML Blocks]: extensions/extra.html#nested-markdown-inside-html-blocks
+[ryneeverett]: https://github.com/ryneeverett
+
+* The code blocks now support emphasizing some of the code lines. To use this
+feature, specify `hl_lines` option after language name, for example (using
+the [Fenced Code Extension]):
+
+ ```.python hl_lines="1 3"
+ # This line will be emphasized.
+ # This one won't.
+ # This one will be also emphasized.
+ ```
+
+ Thanks to [A. Jesse Jiryu Davis] for implementing this feature.
+
+[Fenced Code Extension]: extensions/fenced_code_blocks.html
+[A. Jesse Jiryu Davis]: https://github.com/ajdavis
+
+* Various bug fixes have been made. See the
+[commit log](https://github.com/waylan/Python-Markdown/commits/master)
+for a complete history of the changes.
--- /dev/null
+title: Release Notes for v2.5
+prev_title: Change Log
+prev_url: change_log.html
+next_title: Release Notes for v2.4
+next_url: release-2.4.html
+
+Python-Markdown 2.5 Release Notes
+=================================
+
+We are pleased to release Python-Markdown 2.5 which adds a few new features
+and fixes various bugs. See the list of changes below for details.
+
+Python-Markdown version 2.5 supports Python versions 2.7, 3.2, 3.3, and 3.4.
+
+Backwards-incompatible Changes
+------------------------------
+
+* Python-Markdown no longer supports Python version 2.6. You must be using Python
+ versions 2.7, 3.2, 3.3, or 3.4. While Python-Markdown is no longer tested against
+ Python 2.6, you may be able to get it working if you install a copy of [importlib]
+ which has been backported for Python 2.6. However, the developers of Python-Markdown
+ offer no guarentees in that situation.
+
+[importlib]: https://pypi.python.org/pypi/importlib
+
+* The `force_linenos` config key on the [CodeHilite Extension] has been **deprecated**
+ and will raise a `KeyError` if provided. In the previous release (2.4), it was
+ issuing a `DeprecationWarning`. The [`linenums`][linenums] keyword should be used
+ instead, which provides more control of the output.
+
+[CodeHilite Extension]: extensions/code_hilite.html
+[linenums]: extensions/code_hilite.html#usage
+
+* Both `safe_mode` and the associated `html_replacement_text` keywords will be deprecated
+ in version 2.6 and will raise a **`PendingDeprecationWarning`** in 2.5. The so-called
+ "safe mode" was never actually "safe" which has resulted in many people having a false
+ sense of security when using it. As an alternative, the developers of Python-Markdown
+ recommend that any untrusted content be passed through an HTML sanitizer (like [Bleach])
+ after being converted to HTML by markdown.
+
+ If your code previously looked like this:
+
+ html = markdown.markdown(text, same_mode=True)
+
+ Then it is recommended that you change your code to read something like this:
+
+ import bleach
+ html = bleach.clean(markdown.markdown(text))
+
+ If you are not interested in sanitizing untrusted text, but simply desire to escape
+ raw HTML, then that can be accomplished through an extension which removes HTML parsing:
+
+ from markdown.extensions import Extension
+
+ class EscapeHtml(Extension):
+ def extendMarkdown(self, md, md_globals):
+ del md.preprocessors['html_block']
+ del md.inlinePatterns['html']
+
+ html = markdown.markdown(text, extensions=[EscapeHtml()])
+
+ As the HTML would not be parsed with the above Extension, then the searializer will
+ escape the raw HTML, which is exactly what happens now when `safe_mode="escape"`.
+
+[Bleach]: http://bleach.readthedocs.org/
+
+* Positional arguments on the `markdown.Markdown()` are pending deprecation as are
+ all except the `text` argument on the `markdown.markdown()` wrapper function.
+ Only keyword arguments should be used. For example, if your code previosuly
+ looked like this:
+
+ html = markdown.markdown(text, ['extra'])
+
+ Then it is recommended that you change it to read something like this:
+
+ html = markdown.markdown(text, extensions=['extra'])
+
+ !!! Note
+ This change is being made as a result of deprecating `"safe_mode"` as the
+ `safe_mode` argumnet was one of the positional arguments. When that argument
+ is removed, the two arguments following it will no longer be at the correct
+ position. It is recomended that you always use keywords when they are supported
+ for this reason.
+
+* In previous versions of Python-Markdown, the builtin extensions received
+ special status and did not require the full path to be provided. Additionaly,
+ third party extensions whose name started with "mdx_" received the same
+ special treatment. This behavior will be deprecated in version 2.6 and will
+ raise a **`PendingDeprecationWarning`** in 2.5. Ensure that you always use the full
+ path to your extensions. For example, if you previously did the following:
+
+ markdown.markdown(text, extensions=['extra'])
+
+ You should change your code to the following:
+
+ markdown.markdown(text, extensions=['markdown.extensions.extra'])
+
+ The same applies to the command line:
+
+ $ python -m markdown -x markdown.extensions.extra input.txt
+
+ See the [documentation](reference.html#extensions) for a full explaination
+ of the current behavior.
+
+* The previously documented method of appending the extension configs as
+ a string to the extension name will be deprecated in Python-Markdown
+ version 2.6 and will raise a **`PendingDeprecationWarning`** in 2.5. The
+ [extension_configs](reference.html#extension_configs) keyword should
+ be used instead. See the [documentation](reference.html#extension-configs)
+ for a full explaination of the current behavior.
+
+What's New in Python-Markdown 2.5
+---------------------------------
+
+* The [Smarty Extension] has had a number of additional configuration settings
+ added, which allows one to define their own subtitutions to better support
+ languages other than English. Thanks to [Martin Altmayer] for implementing this
+ feature.
+
+[Smarty Extension]: extensions/smarty.html
+[Martin Altmayer]:https://github.com/MartinAltmayer
+
+* Named Extensions (strings passed to the [`extensions`][ex] keyword of
+ `markdown.Markdown`) can now point to any module and/or Class on your PYTHONPATH.
+ While dot notation was previously supported, a module could not be at the root of
+ your PYTHONPATH. The name had to contain at least one dot (requiring it to be a
+ submodule). This restriction no longer exists.
+
+ Additionaly, a Class may be specified in the name. The class must be at the end of
+ the name (which uses dot notation from PYTHONPATH) and be seperated by a colon from
+ the module.
+
+ Therefore, if you were to import the class like this:
+
+ from path.to.module import SomeExtensionClass
+
+ Then the named extension would comprise this string:
+
+ "path.to.module:SomeExtensionClass"
+
+ This allows multiple extensions to be implemented within the same module and still
+ accessable when the user isn't able to import the extension directly (perhaps from
+ a template filter or the command line).
+
+ This also means that extension modules are no longer required to include the
+ `makeExtension` function which returns an instance of the extension class. However,
+ if the user does not specify the class name (she only provides `"path.to.module"`)
+ the extension will fail to load without the `makeExtension` function included in
+ the module. Extension authors will want to document carfully what is required to
+ load their extensions.
+
+[ex]: reference.html#extensions
+
+* The Extension Configuration code has been refactord to make it a little easier
+ for extension authors to work with config settings. As a result, the
+ [`extension_configs`][ec] keyword now accepts a dictionary rather than requiring
+ a list of tuples. A list of tuples is still supported so no one needs to change
+ their existing code. This should also simplify the learning curve for new users.
+
+ Extension authors are encouraged to review the new methods available on the
+ `markdown.extnesions.Extension` class for handling configs and adjust their
+ code going forward. The included extensions provide a model for best practices.
+ See the [API] documentation for a full explaination.
+
+[ec]: reference.html#extension_configs
+[API]: extensions/api.html#configsettings
+
+* The [Command Line Interface][cli] now accepts a `--extensions_config` (or `-c`)
+ option which accepts a filename and passes the parsed content of a [YAML] or
+ [JSON] file to the [`extension_configs`][ec] keyword of the `markdown.Markdown`
+ class. The contents of the YAML or JSON must map to a Python Dictionary which
+ matches the format required by the `extension_configs` kerword. Note that
+ [PyYAML] is required to parse YAML files.
+
+[cli]: cli.html#using-extensions
+[YAML]: http://yaml.org/
+[JSON]: http://json.org/
+[PyYAML]: http://pyyaml.org/
+
+* The [amonition extension][ae] is no longer considered "experimental."
+
+[ae]: extensions/admonition.html
+
+* There have been various refactors of the testing framework. While those changes
+ will not directly effect end users, the code is being better tested which will
+ benefit everyone.
+
+* Various bug fixes have been made. See the
+ [commit log](https://github.com/waylan/Python-Markdown/commits/master)
+ for a complete history of the changes.
-title: Table of Contents\r
-prev_title: Authors\r
-prev_url: authors.html\r
-next_title: Summary\r
-next_url: index.html\r
-\r
-Table of Contents\r
-=================\r
-\r
-* [Python Markdown](index.html)\r
- * [Goals](index.html#goals)\r
- * [Features](index.html#features)\r
- * [Differences](index.html#differences)\r
- * [Support](index.html#support)\r
-* [Installation](install.html)\r
- * [The Easy Way](install.html#the-easy-way)\r
- * [Installing on Windows](install.html#windows)\r
- * [Installing on *nix Systems](install.html#linux)\r
- * [Using the Git Repository](install.html#git)\r
- * [Dependencies](install.html#dependencies)\r
-* [Library Reference](reference.html)\r
- * [The Basics](reference.html#the-basics)\r
- * [The Details](reference.html#the-details)\r
- * [markdown.markdown](reference.html#markdown)\r
- * [markdown.markdownFromFile](reference.html#markdownFromFile)\r
- * [markdown.Markdown](reference.html#Markdown)\r
-* [Command Line](cli.html)\r
- * [Setup](cli.html#setup)\r
- * [Usage](cli.html#usage)\r
- * [Using Extensions](cli.html#using-extensions)\r
-* [Extensions](extensions/index.html)\r
- * [Officially Supported Extensions](extensions/index.html#officially-supported-extensions)\r
- * [Extra](extensions/extra.html)\r
- * [Abbreviations](extensions/abbreviations.html)\r
- * [Attribute Lists](extensions/attr_list.html)\r
- * [Definition Lists](extensions/definition_lists.html)\r
- * [Fenced Code Blocks](extensions/fenced_code_blocks.html)\r
- * [Footnotes](extensions/footnotes.html)\r
- * [Tables](extensions/tables.html)\r
- * [Smart Strong](extensions/smart_strong.html)\r
- * [Admonition](extensions/admonition.html)\r
- * [CodeHilite](extensions/code_hilite.html)\r
- * [HeaderId](extensions/header_id.html)\r
- * [Meta-Data](extensions/meta_data.html)\r
- * [New Line to Break](extensions/nl2br.html)\r
- * [Sane Lists](extensions/sane_lists.html)\r
- * [SmartyPants](extensions/smarty.html)\r
- * [Table of Contents](extensions/toc.html)\r
- * [WikiLinks](extensions/wikilinks.html)\r
- * [Third Party Extensions](extensions/index.html#third-party-extensions)\r
- * [Extension API](extensions/api.html)\r
- * [Preprocessors](extensions/api.html#preprocessors)\r
- * [InlinePatterns](extensions/api.html#inlinepatterns)\r
- * [Treeprocessors](extensions/api.html#treeprocessors)\r
- * [Postprocessors](extensions/api.html#postprocessors)\r
- * [BlockParser](extensions/api.html#blockparser)\r
- * [Working with the ElementTree](extensions/api.html#working_with_et)\r
- * [Integrating your code into Markdown](extensions/api.html#integrating_into_markdown)\r
- * [extendMarkdown](extensions/api.html#extendmarkdown)\r
- * [OrderedDict](extensions/api.html#ordereddict)\r
- * [registerExtension](extensions/api.html#registerextension)\r
- * [Config Settings](extensions/api.html#configsettings)\r
- * [makeExtension](extensions/api.html#makeextension)\r
-* [Test Suite](test_suite.html)\r
- * [Markdown Syntax Test](test_suite.html#markdown-syntax-tests)\r
- * [Syntax Test Config Settings](test_suite.html#syntax-test-config-settings)\r
- * [Unit Tests](test_suite.html#unit-tests)\r
- * [Doc Tests](test_suite.html#doc-tests)\r
-* [Change Log](change_log.html)\r
- * [Release Notes for v.2.4](release-2.4.html)\r
- * [Release Notes for v.2.3](release-2.3.html)\r
- * [Release Notes for v.2.2.1](release-2.1.1.html)\r
- * [Release Notes for v.2.2.0](release-2.1.0.html)\r
- * [Release Notes for v.2.0.2](release-2.0.2.html)\r
- * [Release Notes for v.2.0.1](release-2.0.1.html)\r
- * [Release Notes for v.2.0](release-2.0.html)\r
-* [Authors](authors.html)\r
+title: Table of Contents
+prev_title: Authors
+prev_url: authors.html
+next_title: Summary
+next_url: index.html
+
+Table of Contents
+=================
+
+* [Python Markdown](index.html)
+ * [Goals](index.html#goals)
+ * [Features](index.html#features)
+ * [Differences](index.html#differences)
+ * [Support](index.html#support)
+* [Installation](install.html)
+ * [The Easy Way](install.html#the-easy-way)
+ * [Installing on Windows](install.html#windows)
+ * [Installing on *nix Systems](install.html#linux)
+ * [Using the Git Repository](install.html#git)
+ * [Dependencies](install.html#dependencies)
+* [Library Reference](reference.html)
+ * [The Basics](reference.html#the-basics)
+ * [The Details](reference.html#the-details)
+ * [markdown.markdown](reference.html#markdown)
+ * [markdown.markdownFromFile](reference.html#markdownFromFile)
+ * [markdown.Markdown](reference.html#Markdown)
+* [Command Line](cli.html)
+ * [Setup](cli.html#setup)
+ * [Usage](cli.html#usage)
+ * [Using Extensions](cli.html#using-extensions)
+* [Extensions](extensions/index.html)
+ * [Officially Supported Extensions](extensions/index.html#officially-supported-extensions)
+ * [Extra](extensions/extra.html)
+ * [Abbreviations](extensions/abbreviations.html)
+ * [Attribute Lists](extensions/attr_list.html)
+ * [Definition Lists](extensions/definition_lists.html)
+ * [Fenced Code Blocks](extensions/fenced_code_blocks.html)
+ * [Footnotes](extensions/footnotes.html)
+ * [Tables](extensions/tables.html)
+ * [Smart Strong](extensions/smart_strong.html)
+ * [Admonition](extensions/admonition.html)
+ * [CodeHilite](extensions/code_hilite.html)
+ * [HeaderId](extensions/header_id.html)
+ * [Meta-Data](extensions/meta_data.html)
+ * [New Line to Break](extensions/nl2br.html)
+ * [Sane Lists](extensions/sane_lists.html)
+ * [SmartyPants](extensions/smarty.html)
+ * [Table of Contents](extensions/toc.html)
+ * [WikiLinks](extensions/wikilinks.html)
+ * [Third Party Extensions](extensions/index.html#third-party-extensions)
+ * [Extension API](extensions/api.html)
+ * [Preprocessors](extensions/api.html#preprocessors)
+ * [InlinePatterns](extensions/api.html#inlinepatterns)
+ * [Treeprocessors](extensions/api.html#treeprocessors)
+ * [Postprocessors](extensions/api.html#postprocessors)
+ * [BlockParser](extensions/api.html#blockparser)
+ * [Working with the ElementTree](extensions/api.html#working_with_et)
+ * [Integrating your code into Markdown](extensions/api.html#integrating_into_markdown)
+ * [extendMarkdown](extensions/api.html#extendmarkdown)
+ * [OrderedDict](extensions/api.html#ordereddict)
+ * [registerExtension](extensions/api.html#registerextension)
+ * [Config Settings](extensions/api.html#configsettings)
+ * [makeExtension](extensions/api.html#makeextension)
+* [Test Suite](test_suite.html)
+ * [Markdown Syntax Test](test_suite.html#markdown-syntax-tests)
+ * [Syntax Test Config Settings](test_suite.html#syntax-test-config-settings)
+ * [Unit Tests](test_suite.html#unit-tests)
+* [Change Log](change_log.html)
+ * [Release Notes for v.2.5](release-2.5.html)
+ * [Release Notes for v.2.4](release-2.4.html)
+ * [Release Notes for v.2.3](release-2.3.html)
+ * [Release Notes for v.2.2.1](release-2.1.1.html)
+ * [Release Notes for v.2.2.0](release-2.1.0.html)
+ * [Release Notes for v.2.0.2](release-2.0.2.html)
+ * [Release Notes for v.2.0.1](release-2.0.1.html)
+ * [Release Notes for v.2.0](release-2.0.html)
+* [Authors](authors.html)
-title: Test Suite\r
-prev_title: Extension API\r
-prev_url: extensions/api.html\r
-next_title: Change Log\r
-next_url: change_log.html\r
-\r
-# Test Suite\r
-\r
-Python-Markdown comes with a test suite which uses the [Nose][] testing\r
-framework.The test suite primarily serves to ensure that new bugs are not\r
-introduced as existing bugs are patched or new features are added. It also\r
-allows Python-Markdown to be tested with the tests from other implementations\r
-such as John Gruber's [Perl][] implementation or Michel Fortin's [PHP][]\r
-implementation.\r
-\r
-The test suite can be run by calling the `run_tests.py` command at the root of\r
-the distribution tarball or by calling the `nosetests` command directly. Either\r
-way, Nose will need to be installed on your system first (run `easy_install\r
-nose`). Any standard nosetests config options can be passed in on the command\r
-line (i.e.: verbosity level or use of a plugin like coverage).\r
-\r
-Additionally, a nicely formatted HTML report of all output is written to a\r
-temporary file in `test-output.html`. Open the file in a browser to view\r
-the report.\r
-\r
-A tox.ini file is also provided, so [tox] can be used to automatically create\r
-virtual environments and run the tests on each supported Python version. See\r
-the wiki for instructions on [setting up a testing environment] to use tox.\r
-\r
-The test suite contains two kinds of tests: Markdown Syntax Tests and Unit\r
-Tests.\r
-\r
-## Markdown Syntax Tests\r
-\r
-The Syntax Tests are in the various directories contained within the 'tests'\r
-directory of the packaged tarball. Each test consists of a matching pair of txt\r
-and html files. The txt file contains a snippet of Markdown source text\r
-formated for a specific syntax feature and the html file contains the expected\r
-HTML output of that snippet. When the test suite is run, each txt file is run\r
-through Markdown and the output is compared with the html file as a separate\r
-Unit Test.\r
-\r
-In fact, this is the primary reason for using Nose, it gives us an easy way to\r
-treat each of these tests as a separate unit test which is reported on\r
-separately. Additionally, with the help of a couple custom Nose plugins which\r
-are included with the Markdown Test Suite, we are able to get back an easy to\r
-read diff of the actual output compared to expected output when a test fails.\r
-\r
-Here is some sample output with a test that is failing because of some\r
-insignificant white space differences:\r
-\r
- $ ./run-tests.py\r
- ..........................................................M...........\r
- ............................SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS\r
- SSSSSSSSSS.................S..........................................\r
- .........\r
- ======================================================================\r
- MarkdownSyntaxError: TestSyntax: "misc/lists3"\r
- ----------------------------------------------------------------------\r
- MarkdownSyntaxError: Output from "/home/waylan/code/python-markdown/te\r
- sts/misc/lists3.txt" failed to match expected output.\r
-\r
- --- /home/waylan/code/python-markdown/tests/misc/lists3.html \r
- +++ actual_output.html \r
- @@ -1,5 +1,5 @@ \r
- <ul> \r
- <li>blah blah blah \r
- -sdf asdf asdf asdf asdf \r
- -asda asdf asdfasd</li> \r
- + sdf asdf asdf asdf asdf \r
- + asda asdf asdfasd</li> \r
- </ul>\r
-\r
- ---------------------------------------------------------------------- \r
- Ran 219 tests in 7.698s\r
-\r
- FAILED (MarkdownSyntaxError=1, SKIP=53)\r
-\r
-Note that 219 tests were run, one of which failed with a `MarkdownSyntaxError`.\r
-Only Markdown Syntax Tests should fail with a `MarkdownSyntaxError`. Nose then\r
-formats the error reports for `MarkdownSyntaxError`s so that they only include\r
-useful information. Namely the txt file which failed and a unified diff showing\r
-the failure. Without the plugin, you would also get a useless traceback showing\r
-how the code stepped through the test framework, but nothing about how Markdown\r
-actually ran.\r
-\r
-If, on the other hand, a Syntax Test failed because some other exception gets\r
-raised by either Markdown or the test suite, then that would be reported as per\r
-a normal unit test failure with the appropriate traceback for debugging\r
-purposes.\r
-\r
-### Syntax Test Config Settings\r
-\r
-The other thing to note about the above example is that 53 tests were skipped.\r
-Those tests have been explicitly configured to be skipped as they are primarily\r
-tests from either PHP or Perl which are known to fail for various reasons. In\r
-fact, a number of different configuration settings can be set for any specific\r
-test.\r
-\r
-Each Syntax Test directory contains a `test.cfg` file in the ini format. The\r
-file may contain a separate section for each txt file named exactly as the file\r
-is named minus the file extension (i.e.; the section for a test in `foo.txt`\r
-would be `[foo]`). All settings are optional. Default settings for the entire\r
-directory can be set under the `[DEFAULT]` section (must be all caps). Any\r
-settings under a specific file section will override anything in the\r
-`[DEFAULT]` section for that specific test only.\r
-\r
-Below are each of the config options available and the defaults used when they\r
-are not explicitly set.\r
-\r
-* `normalize`: Switches whitespace normalization of the test output on or off. \r
- Defaults to `0` (off). Note: This requires that [PyTidyLib] be installed on \r
- the system. Otherwise the test will be skipped, regardless of any other \r
- settings. \r
-* `skip`: Switches skipping of the test on and off. Defaults to `0` (off). \r
-* `input_ext`: Extension of input file. Defaults to `.txt`. Useful for tests \r
- from other implementations.\r
-* `output_ext`: Extension of output file. Defaults to `.html`. Useful for tests\r
- from other implementations.\r
-* Any keyword arguement accepted by the Markdown class. If not set, Markdown's \r
- defaults are used. \r
-\r
-## Unit Tests\r
-\r
-Unit Tests are used as regression tests for Python-Markdown's API.\r
-All Unit Tests shipped with Python-Markdown are standard Python Unit Tests and\r
-are all contained in `tests/test_apis.py` and `tests/test_extensions.py`. \r
-Standard discovery methods are used to find and run the tests. Therefore, when \r
-writing new tests, those standards and naming conventions should be followed.\r
-\r
-[Nose]: http://somethingaboutorange.com/mrl/projects/nose/ \r
-[Perl]: http://daringfireball.net/projects/markdown/ \r
-[PHP]: http://michelf.com/projects/php-markdown/ \r
-[PyTidyLib]: http://countergram.com/open-source/pytidylib/\r
-[tox]: http://testrun.org/tox/latest/\r
-[setting up a testing environment]: https://github.com/waylan/Python-Markdown/wiki/Test-Environment-Setup\r
+title: Test Suite
+prev_title: Extension API
+prev_url: extensions/api.html
+next_title: Change Log
+next_url: change_log.html
+
+# Test Suite
+
+Python-Markdown comes with a test suite which uses the [Nose] testing
+framework and [YAML]. The test suite primarily serves to ensure that new bugs
+are not introduced as existing bugs are patched or new features are added. It
+also allows Python-Markdown to be tested with the tests from other
+implementations such as John Gruber's [Perl] implementation or Michel
+Fortin's [PHP] implementation.
+
+The test suite can be run by calling the `run_tests.py` command at the root of
+the distribution tarball or by calling the `nosetests` command directly. Either
+way, Nose will need to be installed on your system first (run `easy_install
+nose`). Any standard nosetests config options can be passed in on the command
+line (i.e.: verbosity level or use of a plugin like coverage).
+
+Additionally, a nicely formatted HTML report of all output is written to a
+temporary file in `test-output.html`. Open the file in a browser to view
+the report.
+
+A tox.ini file is also provided, so [tox] can be used to automatically create
+virtual environments, install all testing dependencies and run the tests on
+each supported Python version. See the wiki for instructions on
+[setting up a testing environment] to use tox.
+
+The test suite contains two kinds of tests: Markdown Syntax Tests and Unit
+Tests.
+
+## Markdown Syntax Tests
+
+The Syntax Tests are in the various directories contained within the 'tests'
+directory of the packaged tarball. Each test consists of a matching pair of txt
+and html files. The txt file contains a snippet of Markdown source text
+formated for a specific syntax feature and the html file contains the expected
+HTML output of that snippet. When the test suite is run, each txt file is run
+through Markdown and the output is compared with the html file as a separate
+Unit Test.
+
+In fact, this is the primary reason for using Nose, it gives us an easy way to
+treat each of these tests as a separate unit test which is reported on
+separately. Additionally, with the help of a couple custom Nose plugins which
+are included with the Markdown Test Suite, we are able to get back an easy to
+read diff of the actual output compared to expected output when a test fails.
+
+Here is some sample output with a test that is failing because of some
+insignificant white space differences:
+
+ $ ./run-tests.py
+ ..........................................................M...........
+ ............................SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
+ SSSSSSSSSS.................S..........................................
+ .........
+ ======================================================================
+ MarkdownSyntaxError: TestSyntax: "misc/lists3"
+ ----------------------------------------------------------------------
+ MarkdownSyntaxError: Output from "/home/waylan/code/python-markdown/te
+ sts/misc/lists3.txt" failed to match expected output.
+
+ --- /home/waylan/code/python-markdown/tests/misc/lists3.html
+ +++ actual_output.html
+ @@ -1,5 +1,5 @@
+ <ul>
+ <li>blah blah blah
+ -sdf asdf asdf asdf asdf
+ -asda asdf asdfasd</li>
+ + sdf asdf asdf asdf asdf
+ + asda asdf asdfasd</li>
+ </ul>
+
+ ----------------------------------------------------------------------
+ Ran 219 tests in 7.698s
+
+ FAILED (MarkdownSyntaxError=1, SKIP=53)
+
+Note that 219 tests were run, one of which failed with a `MarkdownSyntaxError`.
+Only Markdown Syntax Tests should fail with a `MarkdownSyntaxError`. Nose then
+formats the error reports for `MarkdownSyntaxError`s so that they only include
+useful information. Namely the txt file which failed and a unified diff showing
+the failure. Without the plugin, you would also get a useless traceback showing
+how the code stepped through the test framework, but nothing about how Markdown
+actually ran.
+
+If, on the other hand, a Syntax Test failed because some other exception gets
+raised by either Markdown or the test suite, then that would be reported as per
+a normal unit test failure with the appropriate traceback for debugging
+purposes.
+
+### Syntax Test Config Settings
+
+The other thing to note about the above example is that 53 tests were skipped.
+Those tests have been explicitly configured to be skipped as they are primarily
+tests from either PHP or Perl which are known to fail for various reasons. In
+fact, a number of different configuration settings can be set for any specific
+test.
+
+Each Syntax Test directory contains a `test.cfg` file in the [YAML] format. The
+file may contain a separate section for each txt file named exactly as the file
+is named minus the file extension (i.e.; the section for a test in `foo.txt`
+would be `foo`). All settings are optional. Default settings for the entire
+directory can be set under the `DEFAULT` section (must be all caps). Any
+settings under a specific file section will override anything in the
+`DEFAULT` section for that specific test only.
+
+Below are the config options available and the defaults used when they
+are not explicitly set.
+
+* `normalize`: Switches whitespace normalization of the test output on or off.
+ Defaults to `False` (off). Note: This requires that [PyTidyLib] be installed on
+ the system. Otherwise the test will be skipped, regardless of any other
+ settings.
+* `skip`: Switches skipping of the test on and off. Defaults to `False` (off).
+* `input_ext`: Extension of input file. Defaults to `.txt`. Useful for tests
+ from other implementations.
+* `output_ext`: Extension of output file. Defaults to `.html`. Useful for tests
+ from other implementations.
+* Any keyword arguement accepted by the Markdown class. If not set, Markdown's
+ defaults are used.
+
+## Unit Tests
+
+Unit Tests are used as regression tests for Python-Markdown's API.
+All Unit Tests shipped with Python-Markdown are standard Python Unit Tests and
+are all contained in `tests/test_apis.py` and `tests/test_extensions.py`.
+Standard discovery methods are used to find and run the tests. Therefore, when
+writing new tests, those standards and naming conventions should be followed.
+
+[Nose]: http://somethingaboutorange.com/mrl/projects/nose/
+[Perl]: http://daringfireball.net/projects/markdown/
+[PHP]: http://michelf.com/projects/php-markdown/
+[PyTidyLib]: http://countergram.com/open-source/pytidylib/
+[tox]: http://testrun.org/tox/latest/
+[setting up a testing environment]: https://github.com/waylan/Python-Markdown/wiki/Test-Environment-Setup
+[YAML]: http://yaml.org/
-# Python-Markdown makefile\r
-\r
-.PHONY : install\r
-install:\r
- python setup.py install\r
-\r
-.PHONY : deploy\r
-deploy:\r
- python setup.py register\r
- python setup.py sdist --formats zip,gztar upload\r
-\r
-.PHONY : build\r
-build:\r
- python setup.py sdist --formats zip,gztar\r
-\r
-.PHONY : build-win\r
-build-win:\r
- python setup.py bdist_wininst\r
-\r
-.PHONY : docs\r
-docs:\r
- python setup.py build_docs --force\r
- cd build/docs && zip -r ../docs.zip .\r
-\r
-.PHONY : test\r
-test:\r
- tox\r
-\r
-.PHONY : update-tests\r
-update-tests:\r
- python run-tests.py update\r
-\r
-.PHONY : clean\r
-clean:\r
- rm -f MANIFEST\r
- rm -f test-output.html\r
- rm -f *.pyc\r
- rm -f markdown/*.pyc\r
- rm -f markdown/extensions/*.pyc\r
- rm -f *.bak\r
- rm -f markdown/*.bak\r
- rm -f markdown/extensions/*.bak\r
- rm -f *.swp\r
- rm -f markdown/*.swp\r
- rm -f markdown/extensions/*.swp\r
- rm -rf build\r
- rm -rf dist\r
- rm -rf tmp\r
- # git clean -dfx'\r
+# Python-Markdown makefile
+
+.PHONY : install
+install:
+ python setup.py install
+
+.PHONY : deploy
+deploy:
+ python setup.py register
+ python setup.py sdist --manifest-only
+ python setup.py sdist --formats zip,gztar upload
+
+.PHONY : build
+build:
+ python setup.py sdist --manifest-only
+ python setup.py sdist --formats zip,gztar
+
+.PHONY : build-win
+build-win:
+ python setup.py sdist --manifest-only
+ python setup.py bdist_wininst
+
+.PHONY : docs
+docs:
+ python setup.py build_docs --force
+ cd build/docs && zip -r ../docs.zip .
+
+.PHONY : test
+test:
+ tox
+
+.PHONY : update-tests
+update-tests:
+ python run-tests.py update
+
+.PHONY : clean
+clean:
+ rm -f MANIFEST
+ rm -f test-output.html
+ rm -f *.pyc
+ rm -f markdown/*.pyc
+ rm -f markdown/extensions/*.pyc
+ rm -f *.bak
+ rm -f markdown/*.bak
+ rm -f markdown/extensions/*.bak
+ rm -f *.swp
+ rm -f markdown/*.swp
+ rm -f markdown/extensions/*.swp
+ rm -rf build
+ rm -rf dist
+ rm -rf tmp
+ # git clean -dfx'
-"""\r
-Python Markdown\r
-===============\r
-\r
-Python Markdown converts Markdown to HTML and can be used as a library or\r
-called from the command line.\r
-\r
-## Basic usage as a module:\r
-\r
- import markdown\r
- html = markdown.markdown(your_text_string)\r
-\r
-See <http://packages.python.org/Markdown/> for more\r
-information and instructions on how to extend the functionality of\r
-Python Markdown. Read that before you try modifying this file.\r
-\r
-## Authors and License\r
-\r
-Started by [Manfred Stienstra](http://www.dwerg.net/). Continued and\r
-maintained by [Yuri Takhteyev](http://www.freewisdom.org), [Waylan\r
-Limberg](http://achinghead.com/) and [Artem Yunusov](http://blog.splyer.com).\r
-\r
-Contact: markdown@freewisdom.org\r
-\r
-Copyright 2007-2013 The Python Markdown Project (v. 1.7 and later)\r
-Copyright 200? Django Software Foundation (OrderedDict implementation)\r
-Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)\r
-Copyright 2004 Manfred Stienstra (the original version)\r
-\r
-License: BSD (see LICENSE for details).\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from .__version__ import version, version_info\r
-import codecs\r
-import sys\r
-import logging\r
-from . import util\r
-from .preprocessors import build_preprocessors\r
-from .blockprocessors import build_block_parser\r
-from .treeprocessors import build_treeprocessors\r
-from .inlinepatterns import build_inlinepatterns\r
-from .postprocessors import build_postprocessors\r
-from .extensions import Extension\r
-from .serializers import to_html_string, to_xhtml_string\r
-\r
-__all__ = ['Markdown', 'markdown', 'markdownFromFile']\r
-\r
-logger = logging.getLogger('MARKDOWN')\r
-\r
-\r
-class Markdown(object):\r
- """Convert Markdown to HTML."""\r
-\r
- doc_tag = "div" # Element used to wrap document - later removed\r
-\r
- option_defaults = {\r
- 'html_replacement_text' : '[HTML_REMOVED]',\r
- 'tab_length' : 4,\r
- 'enable_attributes' : True,\r
- 'smart_emphasis' : True,\r
- 'lazy_ol' : True,\r
- }\r
-\r
- output_formats = {\r
- 'html' : to_html_string,\r
- 'html4' : to_html_string,\r
- 'html5' : to_html_string,\r
- 'xhtml' : to_xhtml_string,\r
- 'xhtml1': to_xhtml_string,\r
- 'xhtml5': to_xhtml_string,\r
- }\r
-\r
- ESCAPED_CHARS = ['\\', '`', '*', '_', '{', '}', '[', ']',\r
- '(', ')', '>', '#', '+', '-', '.', '!']\r
-\r
- def __init__(self, *args, **kwargs):\r
- """\r
- Creates a new Markdown instance.\r
-\r
- Keyword arguments:\r
-\r
- * extensions: A list of extensions.\r
- If they are of type string, the module mdx_name.py will be loaded.\r
- If they are a subclass of markdown.Extension, they will be used\r
- as-is.\r
- * extension_configs: Configuration settingis for extensions.\r
- * output_format: Format of output. Supported formats are:\r
- * "xhtml1": Outputs XHTML 1.x. Default.\r
- * "xhtml5": Outputs XHTML style tags of HTML 5\r
- * "xhtml": Outputs latest supported version of XHTML (currently XHTML 1.1).\r
- * "html4": Outputs HTML 4\r
- * "html5": Outputs HTML style tags of HTML 5\r
- * "html": Outputs latest supported version of HTML (currently HTML 4).\r
- Note that it is suggested that the more specific formats ("xhtml1"\r
- and "html4") be used as "xhtml" or "html" may change in the future\r
- if it makes sense at that time.\r
- * safe_mode: Disallow raw html. One of "remove", "replace" or "escape".\r
- * html_replacement_text: Text used when safe_mode is set to "replace".\r
- * tab_length: Length of tabs in the source. Default: 4\r
- * enable_attributes: Enable the conversion of attributes. Default: True\r
- * smart_emphasis: Treat `_connected_words_` intelligently Default: True\r
- * lazy_ol: Ignore number of first item of ordered lists. Default: True\r
-\r
- """\r
-\r
- # For backward compatibility, loop through old positional args\r
- pos = ['extensions', 'extension_configs', 'safe_mode', 'output_format']\r
- c = 0\r
- for arg in args:\r
- if pos[c] not in kwargs:\r
- kwargs[pos[c]] = arg\r
- c += 1\r
- if c == len(pos):\r
- # ignore any additional args\r
- break\r
-\r
- # Loop through kwargs and assign defaults\r
- for option, default in self.option_defaults.items():\r
- setattr(self, option, kwargs.get(option, default))\r
-\r
- self.safeMode = kwargs.get('safe_mode', False)\r
- if self.safeMode and 'enable_attributes' not in kwargs:\r
- # Disable attributes in safeMode when not explicitly set\r
- self.enable_attributes = False\r
-\r
- self.registeredExtensions = []\r
- self.docType = ""\r
- self.stripTopLevelTags = True\r
-\r
- self.build_parser()\r
-\r
- self.references = {}\r
- self.htmlStash = util.HtmlStash()\r
- self.registerExtensions(extensions=kwargs.get('extensions', []),\r
- configs=kwargs.get('extension_configs', {}))\r
- self.set_output_format(kwargs.get('output_format', 'xhtml1'))\r
- self.reset()\r
-\r
- def build_parser(self):\r
- """ Build the parser from the various parts. """\r
- self.preprocessors = build_preprocessors(self)\r
- self.parser = build_block_parser(self)\r
- self.inlinePatterns = build_inlinepatterns(self)\r
- self.treeprocessors = build_treeprocessors(self)\r
- self.postprocessors = build_postprocessors(self)\r
- return self\r
-\r
- def registerExtensions(self, extensions, configs):\r
- """\r
- Register extensions with this instance of Markdown.\r
-\r
- Keyword arguments:\r
-\r
- * extensions: A list of extensions, which can either\r
- be strings or objects. See the docstring on Markdown.\r
- * configs: A dictionary mapping module names to config options.\r
-\r
- """\r
- for ext in extensions:\r
- if isinstance(ext, util.string_type):\r
- ext = self.build_extension(ext, configs.get(ext, []))\r
- if isinstance(ext, Extension):\r
- ext.extendMarkdown(self, globals())\r
- elif ext is not None:\r
- raise TypeError(\r
- 'Extension "%s.%s" must be of type: "markdown.Extension"'\r
- % (ext.__class__.__module__, ext.__class__.__name__))\r
-\r
- return self\r
-\r
- def build_extension(self, ext_name, configs = []):\r
- """Build extension by name, then return the module.\r
-\r
- The extension name may contain arguments as part of the string in the\r
- following format: "extname(key1=value1,key2=value2)"\r
-\r
- """\r
-\r
- # Parse extensions config params (ignore the order)\r
- configs = dict(configs)\r
- pos = ext_name.find("(") # find the first "("\r
- if pos > 0:\r
- ext_args = ext_name[pos+1:-1]\r
- ext_name = ext_name[:pos]\r
- pairs = [x.split("=") for x in ext_args.split(",")]\r
- configs.update([(x.strip(), y.strip()) for (x, y) in pairs])\r
-\r
- # Setup the module name\r
- module_name = ext_name\r
- if '.' not in ext_name:\r
- module_name = '.'.join(['markdown.extensions', ext_name])\r
-\r
- # Try loading the extension first from one place, then another\r
- try: # New style (markdown.extensions.<extension>)\r
- module = __import__(module_name, {}, {}, [module_name.rpartition('.')[0]])\r
- except ImportError:\r
- module_name_old_style = '_'.join(['mdx', ext_name])\r
- try: # Old style (mdx_<extension>)\r
- module = __import__(module_name_old_style)\r
- except ImportError as e:\r
- message = "Failed loading extension '%s' from '%s' or '%s'" \\r
- % (ext_name, module_name, module_name_old_style)\r
- e.args = (message,) + e.args[1:]\r
- raise\r
-\r
- # If the module is loaded successfully, we expect it to define a\r
- # function called makeExtension()\r
- try:\r
- return module.makeExtension(configs.items())\r
- except AttributeError as e:\r
- message = e.args[0]\r
- message = "Failed to initiate extension " \\r
- "'%s': %s" % (ext_name, message)\r
- e.args = (message,) + e.args[1:]\r
- raise\r
-\r
- def registerExtension(self, extension):\r
- """ This gets called by the extension """\r
- self.registeredExtensions.append(extension)\r
- return self\r
-\r
- def reset(self):\r
- """\r
- Resets all state variables so that we can start with a new text.\r
- """\r
- self.htmlStash.reset()\r
- self.references.clear()\r
-\r
- for extension in self.registeredExtensions:\r
- if hasattr(extension, 'reset'):\r
- extension.reset()\r
-\r
- return self\r
-\r
- def set_output_format(self, format):\r
- """ Set the output format for the class instance. """\r
- self.output_format = format.lower()\r
- try:\r
- self.serializer = self.output_formats[self.output_format]\r
- except KeyError as e:\r
- valid_formats = list(self.output_formats.keys())\r
- valid_formats.sort()\r
- message = 'Invalid Output Format: "%s". Use one of %s.' \\r
- % (self.output_format, \r
- '"' + '", "'.join(valid_formats) + '"')\r
- e.args = (message,) + e.args[1:]\r
- raise\r
- return self\r
-\r
- def convert(self, source):\r
- """\r
- Convert markdown to serialized XHTML or HTML.\r
-\r
- Keyword arguments:\r
-\r
- * source: Source text as a Unicode string.\r
-\r
- Markdown processing takes place in five steps:\r
-\r
- 1. A bunch of "preprocessors" munge the input text.\r
- 2. BlockParser() parses the high-level structural elements of the\r
- pre-processed text into an ElementTree.\r
- 3. A bunch of "treeprocessors" are run against the ElementTree. One\r
- such treeprocessor runs InlinePatterns against the ElementTree,\r
- detecting inline markup.\r
- 4. Some post-processors are run against the text after the ElementTree\r
- has been serialized into text.\r
- 5. The output is written to a string.\r
-\r
- """\r
-\r
- # Fixup the source text\r
- if not source.strip():\r
- return '' # a blank unicode string\r
-\r
- try:\r
- source = util.text_type(source)\r
- except UnicodeDecodeError as e:\r
- # Customise error message while maintaining original trackback\r
- e.reason += '. -- Note: Markdown only accepts unicode input!'\r
- raise\r
-\r
- # Split into lines and run the line preprocessors.\r
- self.lines = source.split("\n")\r
- for prep in self.preprocessors.values():\r
- self.lines = prep.run(self.lines)\r
-\r
- # Parse the high-level elements.\r
- root = self.parser.parseDocument(self.lines).getroot()\r
-\r
- # Run the tree-processors\r
- for treeprocessor in self.treeprocessors.values():\r
- newRoot = treeprocessor.run(root)\r
- if newRoot is not None:\r
- root = newRoot\r
-\r
- # Serialize _properly_. Strip top-level tags.\r
- output = self.serializer(root)\r
- if self.stripTopLevelTags:\r
- try:\r
- start = output.index('<%s>'%self.doc_tag)+len(self.doc_tag)+2\r
- end = output.rindex('</%s>'%self.doc_tag)\r
- output = output[start:end].strip()\r
- except ValueError:\r
- if output.strip().endswith('<%s />'%self.doc_tag):\r
- # We have an empty document\r
- output = ''\r
- else:\r
- # We have a serious problem\r
- raise ValueError('Markdown failed to strip top-level tags. Document=%r' % output.strip())\r
-\r
- # Run the text post-processors\r
- for pp in self.postprocessors.values():\r
- output = pp.run(output)\r
-\r
- return output.strip()\r
-\r
- def convertFile(self, input=None, output=None, encoding=None):\r
- """Converts a markdown file and returns the HTML as a unicode string.\r
-\r
- Decodes the file using the provided encoding (defaults to utf-8),\r
- passes the file content to markdown, and outputs the html to either\r
- the provided stream or the file with provided name, using the same\r
- encoding as the source file. The 'xmlcharrefreplace' error handler is\r
- used when encoding the output.\r
-\r
- **Note:** This is the only place that decoding and encoding of unicode\r
- takes place in Python-Markdown. (All other code is unicode-in /\r
- unicode-out.)\r
-\r
- Keyword arguments:\r
-\r
- * input: File object or path. Reads from stdin if `None`.\r
- * output: File object or path. Writes to stdout if `None`.\r
- * encoding: Encoding of input and output files. Defaults to utf-8.\r
-\r
- """\r
-\r
- encoding = encoding or "utf-8"\r
-\r
- # Read the source\r
- if input:\r
- if isinstance(input, util.string_type):\r
- input_file = codecs.open(input, mode="r", encoding=encoding)\r
- else:\r
- input_file = codecs.getreader(encoding)(input)\r
- text = input_file.read()\r
- input_file.close()\r
- else:\r
- text = sys.stdin.read()\r
- if not isinstance(text, util.text_type):\r
- text = text.decode(encoding)\r
-\r
- text = text.lstrip('\ufeff') # remove the byte-order mark\r
-\r
- # Convert\r
- html = self.convert(text)\r
-\r
- # Write to file or stdout\r
- if output:\r
- if isinstance(output, util.string_type):\r
- output_file = codecs.open(output, "w",\r
- encoding=encoding,\r
- errors="xmlcharrefreplace")\r
- output_file.write(html)\r
- output_file.close()\r
- else:\r
- writer = codecs.getwriter(encoding)\r
- output_file = writer(output, errors="xmlcharrefreplace")\r
- output_file.write(html)\r
- # Don't close here. User may want to write more.\r
- else:\r
- # Encode manually and write bytes to stdout. \r
- html = html.encode(encoding, "xmlcharrefreplace")\r
- try:\r
- # Write bytes directly to buffer (Python 3).\r
- sys.stdout.buffer.write(html)\r
- except AttributeError:\r
- # Probably Python 2, which works with bytes by default.\r
- sys.stdout.write(html)\r
-\r
- return self\r
-\r
-\r
-"""\r
-EXPORTED FUNCTIONS\r
-=============================================================================\r
-\r
-Those are the two functions we really mean to export: markdown() and\r
-markdownFromFile().\r
-"""\r
-\r
-def markdown(text, *args, **kwargs):\r
- """Convert a markdown string to HTML and return HTML as a unicode string.\r
-\r
- This is a shortcut function for `Markdown` class to cover the most\r
- basic use case. It initializes an instance of Markdown, loads the\r
- necessary extensions and runs the parser on the given text.\r
-\r
- Keyword arguments:\r
-\r
- * text: Markdown formatted text as Unicode or ASCII string.\r
- * Any arguments accepted by the Markdown class.\r
-\r
- Returns: An HTML document as a string.\r
-\r
- """\r
- md = Markdown(*args, **kwargs)\r
- return md.convert(text)\r
-\r
-\r
-def markdownFromFile(*args, **kwargs):\r
- """Read markdown code from a file and write it to a file or a stream.\r
-\r
- This is a shortcut function which initializes an instance of Markdown,\r
- and calls the convertFile method rather than convert.\r
-\r
- Keyword arguments:\r
-\r
- * input: a file name or readable object.\r
- * output: a file name or writable object.\r
- * encoding: Encoding of input and output.\r
- * Any arguments accepted by the Markdown class.\r
-\r
- """\r
- # For backward compatibility loop through positional args\r
- pos = ['input', 'output', 'extensions', 'encoding']\r
- c = 0\r
- for arg in args:\r
- if pos[c] not in kwargs:\r
- kwargs[pos[c]] = arg\r
- c += 1\r
- if c == len(pos):\r
- break\r
-\r
- md = Markdown(**kwargs)\r
- md.convertFile(kwargs.get('input', None),\r
- kwargs.get('output', None),\r
- kwargs.get('encoding', None))\r
-\r
+"""
+Python Markdown
+===============
+
+Python Markdown converts Markdown to HTML and can be used as a library or
+called from the command line.
+
+## Basic usage as a module:
+
+ import markdown
+ html = markdown.markdown(your_text_string)
+
+See <https://pythonhosted.org/Markdown/> for more
+information and instructions on how to extend the functionality of
+Python Markdown. Read that before you try modifying this file.
+
+## Authors and License
+
+Started by [Manfred Stienstra](http://www.dwerg.net/). Continued and
+maintained by [Yuri Takhteyev](http://www.freewisdom.org), [Waylan
+Limberg](http://achinghead.com/) and [Artem Yunusov](http://blog.splyer.com).
+
+Contact: markdown@freewisdom.org
+
+Copyright 2007-2013 The Python Markdown Project (v. 1.7 and later)
+Copyright 200? Django Software Foundation (OrderedDict implementation)
+Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
+Copyright 2004 Manfred Stienstra (the original version)
+
+License: BSD (see LICENSE for details).
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from .__version__ import version, version_info
+import codecs
+import sys
+import logging
+import warnings
+import importlib
+from . import util
+from .preprocessors import build_preprocessors
+from .blockprocessors import build_block_parser
+from .treeprocessors import build_treeprocessors
+from .inlinepatterns import build_inlinepatterns
+from .postprocessors import build_postprocessors
+from .extensions import Extension
+from .serializers import to_html_string, to_xhtml_string
+
+__all__ = ['Markdown', 'markdown', 'markdownFromFile']
+
+logger = logging.getLogger('MARKDOWN')
+logging.captureWarnings(True)
+
+
+class Markdown(object):
+ """Convert Markdown to HTML."""
+
+ doc_tag = "div" # Element used to wrap document - later removed
+
+ option_defaults = {
+ 'html_replacement_text' : '[HTML_REMOVED]',
+ 'tab_length' : 4,
+ 'enable_attributes' : True,
+ 'smart_emphasis' : True,
+ 'lazy_ol' : True,
+ }
+
+ output_formats = {
+ 'html' : to_html_string,
+ 'html4' : to_html_string,
+ 'html5' : to_html_string,
+ 'xhtml' : to_xhtml_string,
+ 'xhtml1': to_xhtml_string,
+ 'xhtml5': to_xhtml_string,
+ }
+
+ ESCAPED_CHARS = ['\\', '`', '*', '_', '{', '}', '[', ']',
+ '(', ')', '>', '#', '+', '-', '.', '!']
+
+ def __init__(self, *args, **kwargs):
+ """
+ Creates a new Markdown instance.
+
+ Keyword arguments:
+
+ * extensions: A list of extensions.
+ If they are of type string, the module mdx_name.py will be loaded.
+ If they are a subclass of markdown.Extension, they will be used
+ as-is.
+ * extension_configs: Configuration settingis for extensions.
+ * output_format: Format of output. Supported formats are:
+ * "xhtml1": Outputs XHTML 1.x. Default.
+ * "xhtml5": Outputs XHTML style tags of HTML 5
+ * "xhtml": Outputs latest supported version of XHTML (currently XHTML 1.1).
+ * "html4": Outputs HTML 4
+ * "html5": Outputs HTML style tags of HTML 5
+ * "html": Outputs latest supported version of HTML (currently HTML 4).
+ Note that it is suggested that the more specific formats ("xhtml1"
+ and "html4") be used as "xhtml" or "html" may change in the future
+ if it makes sense at that time.
+ * safe_mode: Deprecated! Disallow raw html. One of "remove", "replace" or "escape".
+ * html_replacement_text: Deprecated! Text used when safe_mode is set to "replace".
+ * tab_length: Length of tabs in the source. Default: 4
+ * enable_attributes: Enable the conversion of attributes. Default: True
+ * smart_emphasis: Treat `_connected_words_` intelligently Default: True
+ * lazy_ol: Ignore number of first item of ordered lists. Default: True
+
+ """
+
+ # For backward compatibility, loop through old positional args
+ pos = ['extensions', 'extension_configs', 'safe_mode', 'output_format']
+ for c, arg in enumerate(args):
+ if pos[c] not in kwargs:
+ kwargs[pos[c]] = arg
+ if c+1 == len(pos): #pragma: no cover
+ # ignore any additional args
+ break
+ if len(args):
+ warnings.warn('Positional arguments are pending depreacted in Markdown '
+ 'and will be deprecated in version 2.6. Use keyword '
+ 'arguments only.', PendingDeprecationWarning)
+
+ # Loop through kwargs and assign defaults
+ for option, default in self.option_defaults.items():
+ setattr(self, option, kwargs.get(option, default))
+
+ self.safeMode = kwargs.get('safe_mode', False)
+ if self.safeMode and 'enable_attributes' not in kwargs:
+ # Disable attributes in safeMode when not explicitly set
+ self.enable_attributes = False
+
+ if 'safe_mode' in kwargs:
+ warnings.warn('"safe_mode" is pending deprecation in Python-Markdown '
+ 'and will be deprecated in version 2.6. Use an HTML '
+ 'sanitizer (like Bleach http://bleach.readthedocs.org/) '
+ 'if you are parsing untrusted markdown text. See the '
+ '2.5 release notes for more info', PendingDeprecationWarning)
+
+ if 'html_replacement_text' in kwargs:
+ warnings.warn('The "html_replacement_text" keyword is pending deprecation '
+ 'in Python-Markdown and will be deprecated in version 2.6 '
+ 'along with "safe_mode".', PendingDeprecationWarning)
+
+ self.registeredExtensions = []
+ self.docType = ""
+ self.stripTopLevelTags = True
+
+ self.build_parser()
+
+ self.references = {}
+ self.htmlStash = util.HtmlStash()
+ self.registerExtensions(extensions=kwargs.get('extensions', []),
+ configs=kwargs.get('extension_configs', {}))
+ self.set_output_format(kwargs.get('output_format', 'xhtml1'))
+ self.reset()
+
+ def build_parser(self):
+ """ Build the parser from the various parts. """
+ self.preprocessors = build_preprocessors(self)
+ self.parser = build_block_parser(self)
+ self.inlinePatterns = build_inlinepatterns(self)
+ self.treeprocessors = build_treeprocessors(self)
+ self.postprocessors = build_postprocessors(self)
+ return self
+
+ def registerExtensions(self, extensions, configs):
+ """
+ Register extensions with this instance of Markdown.
+
+ Keyword arguments:
+
+ * extensions: A list of extensions, which can either
+ be strings or objects. See the docstring on Markdown.
+ * configs: A dictionary mapping module names to config options.
+
+ """
+ for ext in extensions:
+ if isinstance(ext, util.string_type):
+ ext = self.build_extension(ext, configs.get(ext, {}))
+ if isinstance(ext, Extension):
+ ext.extendMarkdown(self, globals())
+ logger.info('Successfully loaded extension "%s.%s".'
+ % (ext.__class__.__module__, ext.__class__.__name__))
+ elif ext is not None:
+ raise TypeError(
+ 'Extension "%s.%s" must be of type: "markdown.Extension"'
+ % (ext.__class__.__module__, ext.__class__.__name__))
+
+ return self
+
+ def build_extension(self, ext_name, configs):
+ """Build extension by name, then return the module.
+
+ The extension name may contain arguments as part of the string in the
+ following format: "extname(key1=value1,key2=value2)"
+
+ """
+
+ configs = dict(configs)
+
+ # Parse extensions config params (ignore the order)
+ pos = ext_name.find("(") # find the first "("
+ if pos > 0:
+ ext_args = ext_name[pos+1:-1]
+ ext_name = ext_name[:pos]
+ pairs = [x.split("=") for x in ext_args.split(",")]
+ configs.update([(x.strip(), y.strip()) for (x, y) in pairs])
+ warnings.warn('Setting configs in the Named Extension string is pending deprecation. '
+ 'It is recommended that you pass an instance of the extension class to '
+ 'Markdown or use the "extension_configs" keyword. The current behavior '
+ 'will be deprecated in version 2.6 and raise an error in version 2.7. '
+ 'See the Release Notes for Python-Markdown version 2.5 for more info.',
+ PendingDeprecationWarning)
+
+ # Get class name (if provided): `path.to.module:ClassName`
+ ext_name, class_name = ext_name.split(':', 1) if ':' in ext_name else (ext_name, '')
+
+ # Try loading the extension first from one place, then another
+ try:
+ # Assume string uses dot syntax (`path.to.some.module`)
+ module = importlib.import_module(ext_name)
+ logger.debug('Successfuly imported extension module "%s".' % ext_name)
+ except ImportError:
+ # Preppend `markdown.extensions.` to name
+ module_name = '.'.join(['markdown.extensions', ext_name])
+ try:
+ module = importlib.import_module(module_name)
+ logger.debug('Successfuly imported extension module "%s".' % module_name)
+ warnings.warn('Using short names for Markdown\'s builtin extensions is pending deprecation. '
+ 'Use the full path to the extension with Python\'s dot notation '
+ '(eg: "%s" instead of "%s"). The current behavior will be deprecated in '
+ 'version 2.6 and raise an error in version 2.7. See the Release Notes for '
+ 'Python-Markdown version 2.5 for more info.' % (module_name, ext_name),
+ PendingDeprecationWarning)
+ except ImportError:
+ # Preppend `mdx_` to name
+ module_name_old_style = '_'.join(['mdx', ext_name])
+ try:
+ module = importlib.import_module(module_name_old_style)
+ logger.debug('Successfuly imported extension module "%s".' % module_name_old_style)
+ warnings.warn('Markdown\'s behavuor of appending "mdx_" to an extension name '
+ 'is pending deprecation. Use the full path to the extension with '
+ 'Python\'s dot notation (eg: "%s" instead of "%s"). The '
+ 'current behavior will be deprecated in version 2.6 and raise an '
+ 'error in version 2.7. See the Release Notes for Python-Markdown '
+ 'version 2.5 for more info.' % (module_name_old_style, ext_name),
+ PendingDeprecationWarning)
+ except ImportError as e:
+ message = "Failed loading extension '%s' from '%s', '%s' or '%s'" \
+ % (ext_name, ext_name, module_name, module_name_old_style)
+ e.args = (message,) + e.args[1:]
+ raise
+
+ if class_name:
+ # Load given class name from module.
+ return getattr(module, class_name)(**configs)
+ else:
+ # Expect makeExtension() function to return a class.
+ try:
+ return module.makeExtension(**configs)
+ except AttributeError as e:
+ message = e.args[0]
+ message = "Failed to initiate extension " \
+ "'%s': %s" % (ext_name, message)
+ e.args = (message,) + e.args[1:]
+ raise
+
+ def registerExtension(self, extension):
+ """ This gets called by the extension """
+ self.registeredExtensions.append(extension)
+ return self
+
+ def reset(self):
+ """
+ Resets all state variables so that we can start with a new text.
+ """
+ self.htmlStash.reset()
+ self.references.clear()
+
+ for extension in self.registeredExtensions:
+ if hasattr(extension, 'reset'):
+ extension.reset()
+
+ return self
+
+ def set_output_format(self, format):
+ """ Set the output format for the class instance. """
+ self.output_format = format.lower()
+ try:
+ self.serializer = self.output_formats[self.output_format]
+ except KeyError as e:
+ valid_formats = list(self.output_formats.keys())
+ valid_formats.sort()
+ message = 'Invalid Output Format: "%s". Use one of %s.' \
+ % (self.output_format,
+ '"' + '", "'.join(valid_formats) + '"')
+ e.args = (message,) + e.args[1:]
+ raise
+ return self
+
+ def convert(self, source):
+ """
+ Convert markdown to serialized XHTML or HTML.
+
+ Keyword arguments:
+
+ * source: Source text as a Unicode string.
+
+ Markdown processing takes place in five steps:
+
+ 1. A bunch of "preprocessors" munge the input text.
+ 2. BlockParser() parses the high-level structural elements of the
+ pre-processed text into an ElementTree.
+ 3. A bunch of "treeprocessors" are run against the ElementTree. One
+ such treeprocessor runs InlinePatterns against the ElementTree,
+ detecting inline markup.
+ 4. Some post-processors are run against the text after the ElementTree
+ has been serialized into text.
+ 5. The output is written to a string.
+
+ """
+
+ # Fixup the source text
+ if not source.strip():
+ return '' # a blank unicode string
+
+ try:
+ source = util.text_type(source)
+ except UnicodeDecodeError as e:
+ # Customise error message while maintaining original trackback
+ e.reason += '. -- Note: Markdown only accepts unicode input!'
+ raise
+
+ # Split into lines and run the line preprocessors.
+ self.lines = source.split("\n")
+ for prep in self.preprocessors.values():
+ self.lines = prep.run(self.lines)
+
+ # Parse the high-level elements.
+ root = self.parser.parseDocument(self.lines).getroot()
+
+ # Run the tree-processors
+ for treeprocessor in self.treeprocessors.values():
+ newRoot = treeprocessor.run(root)
+ if newRoot is not None:
+ root = newRoot
+
+ # Serialize _properly_. Strip top-level tags.
+ output = self.serializer(root)
+ if self.stripTopLevelTags:
+ try:
+ start = output.index('<%s>'%self.doc_tag)+len(self.doc_tag)+2
+ end = output.rindex('</%s>'%self.doc_tag)
+ output = output[start:end].strip()
+ except ValueError: #pragma: no cover
+ if output.strip().endswith('<%s />'%self.doc_tag):
+ # We have an empty document
+ output = ''
+ else:
+ # We have a serious problem
+ raise ValueError('Markdown failed to strip top-level tags. Document=%r' % output.strip())
+
+ # Run the text post-processors
+ for pp in self.postprocessors.values():
+ output = pp.run(output)
+
+ return output.strip()
+
+ def convertFile(self, input=None, output=None, encoding=None):
+ """Converts a markdown file and returns the HTML as a unicode string.
+
+ Decodes the file using the provided encoding (defaults to utf-8),
+ passes the file content to markdown, and outputs the html to either
+ the provided stream or the file with provided name, using the same
+ encoding as the source file. The 'xmlcharrefreplace' error handler is
+ used when encoding the output.
+
+ **Note:** This is the only place that decoding and encoding of unicode
+ takes place in Python-Markdown. (All other code is unicode-in /
+ unicode-out.)
+
+ Keyword arguments:
+
+ * input: File object or path. Reads from stdin if `None`.
+ * output: File object or path. Writes to stdout if `None`.
+ * encoding: Encoding of input and output files. Defaults to utf-8.
+
+ """
+
+ encoding = encoding or "utf-8"
+
+ # Read the source
+ if input:
+ if isinstance(input, util.string_type):
+ input_file = codecs.open(input, mode="r", encoding=encoding)
+ else:
+ input_file = codecs.getreader(encoding)(input)
+ text = input_file.read()
+ input_file.close()
+ else:
+ text = sys.stdin.read()
+ if not isinstance(text, util.text_type):
+ text = text.decode(encoding)
+
+ text = text.lstrip('\ufeff') # remove the byte-order mark
+
+ # Convert
+ html = self.convert(text)
+
+ # Write to file or stdout
+ if output:
+ if isinstance(output, util.string_type):
+ output_file = codecs.open(output, "w",
+ encoding=encoding,
+ errors="xmlcharrefreplace")
+ output_file.write(html)
+ output_file.close()
+ else:
+ writer = codecs.getwriter(encoding)
+ output_file = writer(output, errors="xmlcharrefreplace")
+ output_file.write(html)
+ # Don't close here. User may want to write more.
+ else:
+ # Encode manually and write bytes to stdout.
+ html = html.encode(encoding, "xmlcharrefreplace")
+ try:
+ # Write bytes directly to buffer (Python 3).
+ sys.stdout.buffer.write(html)
+ except AttributeError:
+ # Probably Python 2, which works with bytes by default.
+ sys.stdout.write(html)
+
+ return self
+
+
+"""
+EXPORTED FUNCTIONS
+=============================================================================
+
+Those are the two functions we really mean to export: markdown() and
+markdownFromFile().
+"""
+
+def markdown(text, *args, **kwargs):
+ """Convert a markdown string to HTML and return HTML as a unicode string.
+
+ This is a shortcut function for `Markdown` class to cover the most
+ basic use case. It initializes an instance of Markdown, loads the
+ necessary extensions and runs the parser on the given text.
+
+ Keyword arguments:
+
+ * text: Markdown formatted text as Unicode or ASCII string.
+ * Any arguments accepted by the Markdown class.
+
+ Returns: An HTML document as a string.
+
+ """
+ md = Markdown(*args, **kwargs)
+ return md.convert(text)
+
+
+def markdownFromFile(*args, **kwargs):
+ """Read markdown code from a file and write it to a file or a stream.
+
+ This is a shortcut function which initializes an instance of Markdown,
+ and calls the convertFile method rather than convert.
+
+ Keyword arguments:
+
+ * input: a file name or readable object.
+ * output: a file name or writable object.
+ * encoding: Encoding of input and output.
+ * Any arguments accepted by the Markdown class.
+
+ """
+ # For backward compatibility loop through positional args
+ pos = ['input', 'output', 'extensions', 'encoding']
+ c = 0
+ for arg in args:
+ if pos[c] not in kwargs:
+ kwargs[pos[c]] = arg
+ c += 1
+ if c == len(pos):
+ break
+ if len(args):
+ warnings.warn('Positional arguments are pending depreacted in Markdown '
+ 'and will be deprecated in version 2.6. Use keyword '
+ 'arguments only.', PendingDeprecationWarning)
+
+ md = Markdown(**kwargs)
+ md.convertFile(kwargs.get('input', None),
+ kwargs.get('output', None),
+ kwargs.get('encoding', None))
+
-"""\r
-COMMAND-LINE SPECIFIC STUFF\r
-=============================================================================\r
-\r
-"""\r
-\r
-import markdown\r
-import sys\r
-import optparse\r
-\r
-import logging\r
-from logging import DEBUG, INFO, CRITICAL\r
-\r
-logger = logging.getLogger('MARKDOWN')\r
-\r
-def parse_options():\r
- """\r
- Define and parse `optparse` options for command-line usage.\r
- """\r
- usage = """%prog [options] [INPUTFILE]\r
- (STDIN is assumed if no INPUTFILE is given)"""\r
- desc = "A Python implementation of John Gruber's Markdown. " \\r
- "http://packages.python.org/Markdown/"\r
- ver = "%%prog %s" % markdown.version\r
- \r
- parser = optparse.OptionParser(usage=usage, description=desc, version=ver)\r
- parser.add_option("-f", "--file", dest="filename", default=None,\r
- help="Write output to OUTPUT_FILE. Defaults to STDOUT.",\r
- metavar="OUTPUT_FILE")\r
- parser.add_option("-e", "--encoding", dest="encoding",\r
- help="Encoding for input and output files.",)\r
- parser.add_option("-q", "--quiet", default = CRITICAL,\r
- action="store_const", const=CRITICAL+10, dest="verbose",\r
- help="Suppress all warnings.")\r
- parser.add_option("-v", "--verbose",\r
- action="store_const", const=INFO, dest="verbose",\r
- help="Print all warnings.")\r
- parser.add_option("-s", "--safe", dest="safe", default=False,\r
- metavar="SAFE_MODE",\r
- help="'replace', 'remove' or 'escape' HTML tags in input")\r
- parser.add_option("-o", "--output_format", dest="output_format", \r
- default='xhtml1', metavar="OUTPUT_FORMAT",\r
- help="'xhtml1' (default), 'html4' or 'html5'.")\r
- parser.add_option("--noisy",\r
- action="store_const", const=DEBUG, dest="verbose",\r
- help="Print debug messages.")\r
- parser.add_option("-x", "--extension", action="append", dest="extensions",\r
- help = "Load extension EXTENSION.", metavar="EXTENSION")\r
- parser.add_option("-n", "--no_lazy_ol", dest="lazy_ol", \r
- action='store_false', default=True,\r
- help="Observe number of first item of ordered lists.")\r
-\r
- (options, args) = parser.parse_args()\r
-\r
- if len(args) == 0:\r
- input_file = None\r
- else:\r
- input_file = args[0]\r
-\r
- if not options.extensions:\r
- options.extensions = []\r
-\r
- return {'input': input_file,\r
- 'output': options.filename,\r
- 'safe_mode': options.safe,\r
- 'extensions': options.extensions,\r
- 'encoding': options.encoding,\r
- 'output_format': options.output_format,\r
- 'lazy_ol': options.lazy_ol}, options.verbose\r
-\r
-def run():\r
- """Run Markdown from the command line."""\r
-\r
- # Parse options and adjust logging level if necessary\r
- options, logging_level = parse_options()\r
- if not options: sys.exit(2)\r
- logger.setLevel(logging_level)\r
- logger.addHandler(logging.StreamHandler())\r
-\r
- # Run\r
- markdown.markdownFromFile(**options)\r
-\r
-if __name__ == '__main__':\r
- # Support running module as a commandline command. \r
- # Python 2.5 & 2.6 do: `python -m markdown.__main__ [options] [args]`.\r
- # Python 2.7 & 3.x do: `python -m markdown [options] [args]`.\r
- run()\r
+"""
+COMMAND-LINE SPECIFIC STUFF
+=============================================================================
+
+"""
+
+import markdown
+import sys
+import optparse
+import codecs
+try:
+ import yaml
+except ImportError: #pragma: no cover
+ import json as yaml
+
+import logging
+from logging import DEBUG, INFO, CRITICAL
+
+logger = logging.getLogger('MARKDOWN')
+
+def parse_options(args=None, values=None):
+ """
+ Define and parse `optparse` options for command-line usage.
+ """
+ usage = """%prog [options] [INPUTFILE]
+ (STDIN is assumed if no INPUTFILE is given)"""
+ desc = "A Python implementation of John Gruber's Markdown. " \
+ "https://pythonhosted.org/Markdown/"
+ ver = "%%prog %s" % markdown.version
+
+ parser = optparse.OptionParser(usage=usage, description=desc, version=ver)
+ parser.add_option("-f", "--file", dest="filename", default=None,
+ help="Write output to OUTPUT_FILE. Defaults to STDOUT.",
+ metavar="OUTPUT_FILE")
+ parser.add_option("-e", "--encoding", dest="encoding",
+ help="Encoding for input and output files.",)
+ parser.add_option("-s", "--safe", dest="safe", default=False,
+ metavar="SAFE_MODE",
+ help="Deprecated! 'replace', 'remove' or 'escape' HTML tags in input")
+ parser.add_option("-o", "--output_format", dest="output_format",
+ default='xhtml1', metavar="OUTPUT_FORMAT",
+ help="'xhtml1' (default), 'html4' or 'html5'.")
+ parser.add_option("-n", "--no_lazy_ol", dest="lazy_ol",
+ action='store_false', default=True,
+ help="Observe number of first item of ordered lists.")
+ parser.add_option("-x", "--extension", action="append", dest="extensions",
+ help = "Load extension EXTENSION.", metavar="EXTENSION")
+ parser.add_option("-c", "--extension_configs", dest="configfile", default=None,
+ help="Read extension configurations from CONFIG_FILE. "
+ "CONFIG_FILE must be of JSON or YAML format. YAML format requires "
+ "that a python YAML library be installed. The parsed JSON or YAML "
+ "must result in a python dictionary which would be accepted by the "
+ "'extension_configs' keyword on the markdown.Markdown class. "
+ "The extensions must also be loaded with the `--extension` option.",
+ metavar="CONFIG_FILE")
+ parser.add_option("-q", "--quiet", default = CRITICAL,
+ action="store_const", const=CRITICAL+10, dest="verbose",
+ help="Suppress all warnings.")
+ parser.add_option("-v", "--verbose",
+ action="store_const", const=INFO, dest="verbose",
+ help="Print all warnings.")
+ parser.add_option("--noisy",
+ action="store_const", const=DEBUG, dest="verbose",
+ help="Print debug messages.")
+
+ (options, args) = parser.parse_args(args, values)
+
+ if len(args) == 0:
+ input_file = None
+ else:
+ input_file = args[0]
+
+ if not options.extensions:
+ options.extensions = []
+
+ extension_configs = {}
+ if options.configfile:
+ with codecs.open(options.configfile, mode="r", encoding=options.encoding) as fp:
+ try:
+ extension_configs = yaml.load(fp)
+ except Exception as e:
+ message = "Failed parsing extension config file: %s" % options.configfile
+ e.args = (message,) + e.args[1:]
+ raise
+
+ return {'input': input_file,
+ 'output': options.filename,
+ 'safe_mode': options.safe,
+ 'extensions': options.extensions,
+ 'extension_configs': extension_configs,
+ 'encoding': options.encoding,
+ 'output_format': options.output_format,
+ 'lazy_ol': options.lazy_ol}, options.verbose
+
+def run(): #pragma: no cover
+ """Run Markdown from the command line."""
+
+ # Parse options and adjust logging level if necessary
+ options, logging_level = parse_options()
+ if not options: sys.exit(2)
+ logger.setLevel(logging_level)
+ logger.addHandler(logging.StreamHandler())
+
+ # Run
+ markdown.markdownFromFile(**options)
+
+if __name__ == '__main__': #pragma: no cover
+ # Support running module as a commandline command.
+ # Python 2.5 & 2.6 do: `python -m markdown.__main__ [options] [args]`.
+ # Python 2.7 & 3.x do: `python -m markdown [options] [args]`.
+ run()
-#\r
-# markdown/__version__.py\r
-#\r
-# version_info should conform to PEP 386 \r
-# (major, minor, micro, alpha/beta/rc/final, #)\r
-# (1, 1, 2, 'alpha', 0) => "1.1.2.dev"\r
-# (1, 2, 0, 'beta', 2) => "1.2b2"\r
-version_info = (2, 4, 0, 'final', 0)\r
-\r
-def _get_version():\r
- " Returns a PEP 386-compliant version number from version_info. "\r
- assert len(version_info) == 5\r
- assert version_info[3] in ('alpha', 'beta', 'rc', 'final')\r
-\r
- parts = 2 if version_info[2] == 0 else 3\r
- main = '.'.join(map(str, version_info[:parts]))\r
-\r
- sub = ''\r
- if version_info[3] == 'alpha' and version_info[4] == 0:\r
- # TODO: maybe append some sort of git info here??\r
- sub = '.dev'\r
- elif version_info[3] != 'final':\r
- mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}\r
- sub = mapping[version_info[3]] + str(version_info[4])\r
-\r
- return str(main + sub)\r
-\r
-version = _get_version()\r
+#
+# markdown/__version__.py
+#
+# version_info should conform to PEP 386
+# (major, minor, micro, alpha/beta/rc/final, #)
+# (1, 1, 2, 'alpha', 0) => "1.1.2.dev"
+# (1, 2, 0, 'beta', 2) => "1.2b2"
+version_info = (2, 5, 0, 'final', 0)
+
+def _get_version():
+ " Returns a PEP 386-compliant version number from version_info. "
+ assert len(version_info) == 5
+ assert version_info[3] in ('alpha', 'beta', 'rc', 'final')
+
+ parts = 2 if version_info[2] == 0 else 3
+ main = '.'.join(map(str, version_info[:parts]))
+
+ sub = ''
+ if version_info[3] == 'alpha' and version_info[4] == 0:
+ # TODO: maybe append some sort of git info here??
+ sub = '.dev'
+ elif version_info[3] != 'final':
+ mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}
+ sub = mapping[version_info[3]] + str(version_info[4])
+
+ return str(main + sub)
+
+version = _get_version()
-from __future__ import unicode_literals\r
-from __future__ import absolute_import\r
-from . import util\r
-from . import odict\r
-\r
-class State(list):\r
- """ Track the current and nested state of the parser. \r
- \r
- This utility class is used to track the state of the BlockParser and \r
- support multiple levels if nesting. It's just a simple API wrapped around\r
- a list. Each time a state is set, that state is appended to the end of the\r
- list. Each time a state is reset, that state is removed from the end of\r
- the list.\r
-\r
- Therefore, each time a state is set for a nested block, that state must be \r
- reset when we back out of that level of nesting or the state could be\r
- corrupted.\r
-\r
- While all the methods of a list object are available, only the three\r
- defined below need be used.\r
-\r
- """\r
-\r
- def set(self, state):\r
- """ Set a new state. """\r
- self.append(state)\r
-\r
- def reset(self):\r
- """ Step back one step in nested state. """\r
- self.pop()\r
-\r
- def isstate(self, state):\r
- """ Test that top (current) level is of given state. """\r
- if len(self):\r
- return self[-1] == state\r
- else:\r
- return False\r
-\r
-class BlockParser:\r
- """ Parse Markdown blocks into an ElementTree object. \r
- \r
- A wrapper class that stitches the various BlockProcessors together,\r
- looping through them and creating an ElementTree object.\r
- """\r
-\r
- def __init__(self, markdown):\r
- self.blockprocessors = odict.OrderedDict()\r
- self.state = State()\r
- self.markdown = markdown\r
-\r
- def parseDocument(self, lines):\r
- """ Parse a markdown document into an ElementTree. \r
- \r
- Given a list of lines, an ElementTree object (not just a parent Element)\r
- is created and the root element is passed to the parser as the parent.\r
- The ElementTree object is returned.\r
- \r
- This should only be called on an entire document, not pieces.\r
-\r
- """\r
- # Create a ElementTree from the lines\r
- self.root = util.etree.Element(self.markdown.doc_tag)\r
- self.parseChunk(self.root, '\n'.join(lines))\r
- return util.etree.ElementTree(self.root)\r
-\r
- def parseChunk(self, parent, text):\r
- """ Parse a chunk of markdown text and attach to given etree node. \r
- \r
- While the ``text`` argument is generally assumed to contain multiple\r
- blocks which will be split on blank lines, it could contain only one\r
- block. Generally, this method would be called by extensions when\r
- block parsing is required. \r
- \r
- The ``parent`` etree Element passed in is altered in place. \r
- Nothing is returned.\r
-\r
- """\r
- self.parseBlocks(parent, text.split('\n\n'))\r
-\r
- def parseBlocks(self, parent, blocks):\r
- """ Process blocks of markdown text and attach to given etree node. \r
- \r
- Given a list of ``blocks``, each blockprocessor is stepped through\r
- until there are no blocks left. While an extension could potentially\r
- call this method directly, it's generally expected to be used internally.\r
-\r
- This is a public method as an extension may need to add/alter additional\r
- BlockProcessors which call this method to recursively parse a nested\r
- block.\r
-\r
- """\r
- while blocks:\r
- for processor in self.blockprocessors.values():\r
- if processor.test(parent, blocks[0]):\r
- if processor.run(parent, blocks) is not False:\r
- # run returns True or None\r
- break\r
-\r
-\r
+from __future__ import unicode_literals
+from __future__ import absolute_import
+from . import util
+from . import odict
+
+class State(list):
+ """ Track the current and nested state of the parser.
+
+ This utility class is used to track the state of the BlockParser and
+ support multiple levels if nesting. It's just a simple API wrapped around
+ a list. Each time a state is set, that state is appended to the end of the
+ list. Each time a state is reset, that state is removed from the end of
+ the list.
+
+ Therefore, each time a state is set for a nested block, that state must be
+ reset when we back out of that level of nesting or the state could be
+ corrupted.
+
+ While all the methods of a list object are available, only the three
+ defined below need be used.
+
+ """
+
+ def set(self, state):
+ """ Set a new state. """
+ self.append(state)
+
+ def reset(self):
+ """ Step back one step in nested state. """
+ self.pop()
+
+ def isstate(self, state):
+ """ Test that top (current) level is of given state. """
+ if len(self):
+ return self[-1] == state
+ else:
+ return False
+
+class BlockParser:
+ """ Parse Markdown blocks into an ElementTree object.
+
+ A wrapper class that stitches the various BlockProcessors together,
+ looping through them and creating an ElementTree object.
+ """
+
+ def __init__(self, markdown):
+ self.blockprocessors = odict.OrderedDict()
+ self.state = State()
+ self.markdown = markdown
+
+ def parseDocument(self, lines):
+ """ Parse a markdown document into an ElementTree.
+
+ Given a list of lines, an ElementTree object (not just a parent Element)
+ is created and the root element is passed to the parser as the parent.
+ The ElementTree object is returned.
+
+ This should only be called on an entire document, not pieces.
+
+ """
+ # Create a ElementTree from the lines
+ self.root = util.etree.Element(self.markdown.doc_tag)
+ self.parseChunk(self.root, '\n'.join(lines))
+ return util.etree.ElementTree(self.root)
+
+ def parseChunk(self, parent, text):
+ """ Parse a chunk of markdown text and attach to given etree node.
+
+ While the ``text`` argument is generally assumed to contain multiple
+ blocks which will be split on blank lines, it could contain only one
+ block. Generally, this method would be called by extensions when
+ block parsing is required.
+
+ The ``parent`` etree Element passed in is altered in place.
+ Nothing is returned.
+
+ """
+ self.parseBlocks(parent, text.split('\n\n'))
+
+ def parseBlocks(self, parent, blocks):
+ """ Process blocks of markdown text and attach to given etree node.
+
+ Given a list of ``blocks``, each blockprocessor is stepped through
+ until there are no blocks left. While an extension could potentially
+ call this method directly, it's generally expected to be used internally.
+
+ This is a public method as an extension may need to add/alter additional
+ BlockProcessors which call this method to recursively parse a nested
+ block.
+
+ """
+ while blocks:
+ for processor in self.blockprocessors.values():
+ if processor.test(parent, blocks[0]):
+ if processor.run(parent, blocks) is not False:
+ # run returns True or None
+ break
+
+
-"""\r
-CORE MARKDOWN BLOCKPARSER\r
-===========================================================================\r
-\r
-This parser handles basic parsing of Markdown blocks. It doesn't concern itself\r
-with inline elements such as **bold** or *italics*, but rather just catches\r
-blocks, lists, quotes, etc.\r
-\r
-The BlockParser is made up of a bunch of BlockProssors, each handling a\r
-different type of block. Extensions may add/replace/remove BlockProcessors\r
-as they need to alter how markdown blocks are parsed.\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import division\r
-from __future__ import unicode_literals\r
-import logging\r
-import re\r
-from . import util\r
-from .blockparser import BlockParser\r
-\r
-logger = logging.getLogger('MARKDOWN')\r
-\r
-\r
-def build_block_parser(md_instance, **kwargs):\r
- """ Build the default block parser used by Markdown. """\r
- parser = BlockParser(md_instance)\r
- parser.blockprocessors['empty'] = EmptyBlockProcessor(parser)\r
- parser.blockprocessors['indent'] = ListIndentProcessor(parser)\r
- parser.blockprocessors['code'] = CodeBlockProcessor(parser)\r
- parser.blockprocessors['hashheader'] = HashHeaderProcessor(parser)\r
- parser.blockprocessors['setextheader'] = SetextHeaderProcessor(parser)\r
- parser.blockprocessors['hr'] = HRProcessor(parser)\r
- parser.blockprocessors['olist'] = OListProcessor(parser)\r
- parser.blockprocessors['ulist'] = UListProcessor(parser)\r
- parser.blockprocessors['quote'] = BlockQuoteProcessor(parser)\r
- parser.blockprocessors['paragraph'] = ParagraphProcessor(parser)\r
- return parser\r
-\r
-\r
-class BlockProcessor:\r
- """ Base class for block processors. \r
- \r
- Each subclass will provide the methods below to work with the source and\r
- tree. Each processor will need to define it's own ``test`` and ``run``\r
- methods. The ``test`` method should return True or False, to indicate\r
- whether the current block should be processed by this processor. If the\r
- test passes, the parser will call the processors ``run`` method.\r
-\r
- """\r
-\r
- def __init__(self, parser):\r
- self.parser = parser\r
- self.tab_length = parser.markdown.tab_length\r
-\r
- def lastChild(self, parent):\r
- """ Return the last child of an etree element. """\r
- if len(parent):\r
- return parent[-1]\r
- else:\r
- return None\r
-\r
- def detab(self, text):\r
- """ Remove a tab from the front of each line of the given text. """\r
- newtext = []\r
- lines = text.split('\n')\r
- for line in lines:\r
- if line.startswith(' '*self.tab_length):\r
- newtext.append(line[self.tab_length:])\r
- elif not line.strip():\r
- newtext.append('')\r
- else:\r
- break\r
- return '\n'.join(newtext), '\n'.join(lines[len(newtext):])\r
-\r
- def looseDetab(self, text, level=1):\r
- """ Remove a tab from front of lines but allowing dedented lines. """\r
- lines = text.split('\n')\r
- for i in range(len(lines)):\r
- if lines[i].startswith(' '*self.tab_length*level):\r
- lines[i] = lines[i][self.tab_length*level:]\r
- return '\n'.join(lines)\r
-\r
- def test(self, parent, block):\r
- """ Test for block type. Must be overridden by subclasses. \r
- \r
- As the parser loops through processors, it will call the ``test`` method\r
- on each to determine if the given block of text is of that type. This\r
- method must return a boolean ``True`` or ``False``. The actual method of\r
- testing is left to the needs of that particular block type. It could \r
- be as simple as ``block.startswith(some_string)`` or a complex regular\r
- expression. As the block type may be different depending on the parent\r
- of the block (i.e. inside a list), the parent etree element is also \r
- provided and may be used as part of the test.\r
-\r
- Keywords:\r
- \r
- * ``parent``: A etree element which will be the parent of the block.\r
- * ``block``: A block of text from the source which has been split at \r
- blank lines.\r
- """\r
- pass\r
-\r
- def run(self, parent, blocks):\r
- """ Run processor. Must be overridden by subclasses. \r
- \r
- When the parser determines the appropriate type of a block, the parser\r
- will call the corresponding processor's ``run`` method. This method\r
- should parse the individual lines of the block and append them to\r
- the etree. \r
-\r
- Note that both the ``parent`` and ``etree`` keywords are pointers\r
- to instances of the objects which should be edited in place. Each\r
- processor must make changes to the existing objects as there is no\r
- mechanism to return new/different objects to replace them.\r
-\r
- This means that this method should be adding SubElements or adding text\r
- to the parent, and should remove (``pop``) or add (``insert``) items to\r
- the list of blocks.\r
-\r
- Keywords:\r
-\r
- * ``parent``: A etree element which is the parent of the current block.\r
- * ``blocks``: A list of all remaining blocks of the document.\r
- """\r
- pass\r
-\r
-\r
-class ListIndentProcessor(BlockProcessor):\r
- """ Process children of list items. \r
- \r
- Example:\r
- * a list item\r
- process this part\r
-\r
- or this part\r
-\r
- """\r
-\r
- ITEM_TYPES = ['li']\r
- LIST_TYPES = ['ul', 'ol']\r
-\r
- def __init__(self, *args):\r
- BlockProcessor.__init__(self, *args)\r
- self.INDENT_RE = re.compile(r'^(([ ]{%s})+)'% self.tab_length)\r
-\r
- def test(self, parent, block):\r
- return block.startswith(' '*self.tab_length) and \\r
- not self.parser.state.isstate('detabbed') and \\r
- (parent.tag in self.ITEM_TYPES or \\r
- (len(parent) and parent[-1] and \\r
- (parent[-1].tag in self.LIST_TYPES)\r
- )\r
- )\r
-\r
- def run(self, parent, blocks):\r
- block = blocks.pop(0)\r
- level, sibling = self.get_level(parent, block)\r
- block = self.looseDetab(block, level)\r
-\r
- self.parser.state.set('detabbed')\r
- if parent.tag in self.ITEM_TYPES:\r
- # It's possible that this parent has a 'ul' or 'ol' child list\r
- # with a member. If that is the case, then that should be the\r
- # parent. This is intended to catch the edge case of an indented \r
- # list whose first member was parsed previous to this point\r
- # see OListProcessor\r
- if len(parent) and parent[-1].tag in self.LIST_TYPES:\r
- self.parser.parseBlocks(parent[-1], [block])\r
- else:\r
- # The parent is already a li. Just parse the child block.\r
- self.parser.parseBlocks(parent, [block])\r
- elif sibling.tag in self.ITEM_TYPES:\r
- # The sibling is a li. Use it as parent.\r
- self.parser.parseBlocks(sibling, [block])\r
- elif len(sibling) and sibling[-1].tag in self.ITEM_TYPES:\r
- # The parent is a list (``ol`` or ``ul``) which has children.\r
- # Assume the last child li is the parent of this block.\r
- if sibling[-1].text:\r
- # If the parent li has text, that text needs to be moved to a p\r
- # The p must be 'inserted' at beginning of list in the event\r
- # that other children already exist i.e.; a nested sublist.\r
- p = util.etree.Element('p')\r
- p.text = sibling[-1].text\r
- sibling[-1].text = ''\r
- sibling[-1].insert(0, p)\r
- self.parser.parseChunk(sibling[-1], block)\r
- else:\r
- self.create_item(sibling, block)\r
- self.parser.state.reset()\r
-\r
- def create_item(self, parent, block):\r
- """ Create a new li and parse the block with it as the parent. """\r
- li = util.etree.SubElement(parent, 'li')\r
- self.parser.parseBlocks(li, [block])\r
- \r
- def get_level(self, parent, block):\r
- """ Get level of indent based on list level. """\r
- # Get indent level\r
- m = self.INDENT_RE.match(block)\r
- if m:\r
- indent_level = len(m.group(1))/self.tab_length\r
- else:\r
- indent_level = 0\r
- if self.parser.state.isstate('list'):\r
- # We're in a tightlist - so we already are at correct parent.\r
- level = 1\r
- else:\r
- # We're in a looselist - so we need to find parent.\r
- level = 0\r
- # Step through children of tree to find matching indent level.\r
- while indent_level > level:\r
- child = self.lastChild(parent)\r
- if child is not None and (child.tag in self.LIST_TYPES or child.tag in self.ITEM_TYPES):\r
- if child.tag in self.LIST_TYPES:\r
- level += 1\r
- parent = child\r
- else:\r
- # No more child levels. If we're short of indent_level,\r
- # we have a code block. So we stop here.\r
- break\r
- return level, parent\r
-\r
-\r
-class CodeBlockProcessor(BlockProcessor):\r
- """ Process code blocks. """\r
-\r
- def test(self, parent, block):\r
- return block.startswith(' '*self.tab_length)\r
- \r
- def run(self, parent, blocks):\r
- sibling = self.lastChild(parent)\r
- block = blocks.pop(0)\r
- theRest = ''\r
- if sibling is not None and sibling.tag == "pre" and len(sibling) \\r
- and sibling[0].tag == "code":\r
- # The previous block was a code block. As blank lines do not start\r
- # new code blocks, append this block to the previous, adding back\r
- # linebreaks removed from the split into a list.\r
- code = sibling[0]\r
- block, theRest = self.detab(block)\r
- code.text = util.AtomicString('%s\n%s\n' % (code.text, block.rstrip()))\r
- else:\r
- # This is a new codeblock. Create the elements and insert text.\r
- pre = util.etree.SubElement(parent, 'pre')\r
- code = util.etree.SubElement(pre, 'code')\r
- block, theRest = self.detab(block)\r
- code.text = util.AtomicString('%s\n' % block.rstrip())\r
- if theRest:\r
- # This block contained unindented line(s) after the first indented \r
- # line. Insert these lines as the first block of the master blocks\r
- # list for future processing.\r
- blocks.insert(0, theRest)\r
-\r
-\r
-class BlockQuoteProcessor(BlockProcessor):\r
-\r
- RE = re.compile(r'(^|\n)[ ]{0,3}>[ ]?(.*)')\r
-\r
- def test(self, parent, block):\r
- return bool(self.RE.search(block))\r
-\r
- def run(self, parent, blocks):\r
- block = blocks.pop(0)\r
- m = self.RE.search(block)\r
- if m:\r
- before = block[:m.start()] # Lines before blockquote\r
- # Pass lines before blockquote in recursively for parsing forst.\r
- self.parser.parseBlocks(parent, [before])\r
- # Remove ``> `` from begining of each line.\r
- block = '\n'.join([self.clean(line) for line in \r
- block[m.start():].split('\n')])\r
- sibling = self.lastChild(parent)\r
- if sibling is not None and sibling.tag == "blockquote":\r
- # Previous block was a blockquote so set that as this blocks parent\r
- quote = sibling\r
- else:\r
- # This is a new blockquote. Create a new parent element.\r
- quote = util.etree.SubElement(parent, 'blockquote')\r
- # Recursively parse block with blockquote as parent.\r
- # change parser state so blockquotes embedded in lists use p tags\r
- self.parser.state.set('blockquote')\r
- self.parser.parseChunk(quote, block)\r
- self.parser.state.reset()\r
-\r
- def clean(self, line):\r
- """ Remove ``>`` from beginning of a line. """\r
- m = self.RE.match(line)\r
- if line.strip() == ">":\r
- return ""\r
- elif m:\r
- return m.group(2)\r
- else:\r
- return line\r
-\r
-class OListProcessor(BlockProcessor):\r
- """ Process ordered list blocks. """\r
-\r
- TAG = 'ol'\r
- # Detect an item (``1. item``). ``group(1)`` contains contents of item.\r
- RE = re.compile(r'^[ ]{0,3}\d+\.[ ]+(.*)')\r
- # Detect items on secondary lines. they can be of either list type.\r
- CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.)|[*+-])[ ]+(.*)')\r
- # Detect indented (nested) items of either type\r
- INDENT_RE = re.compile(r'^[ ]{4,7}((\d+\.)|[*+-])[ ]+.*')\r
- # The integer (python string) with which the lists starts (default=1)\r
- # Eg: If list is intialized as)\r
- # 3. Item\r
- # The ol tag will get starts="3" attribute\r
- STARTSWITH = '1'\r
- # List of allowed sibling tags. \r
- SIBLING_TAGS = ['ol', 'ul']\r
-\r
- def test(self, parent, block):\r
- return bool(self.RE.match(block))\r
-\r
- def run(self, parent, blocks):\r
- # Check fr multiple items in one block.\r
- items = self.get_items(blocks.pop(0))\r
- sibling = self.lastChild(parent)\r
-\r
- if sibling is not None and sibling.tag in self.SIBLING_TAGS:\r
- # Previous block was a list item, so set that as parent\r
- lst = sibling\r
- # make sure previous item is in a p- if the item has text, then it\r
- # it isn't in a p\r
- if lst[-1].text: \r
- # since it's possible there are other children for this sibling,\r
- # we can't just SubElement the p, we need to insert it as the \r
- # first item\r
- p = util.etree.Element('p')\r
- p.text = lst[-1].text\r
- lst[-1].text = ''\r
- lst[-1].insert(0, p)\r
- # if the last item has a tail, then the tail needs to be put in a p\r
- # likely only when a header is not followed by a blank line\r
- lch = self.lastChild(lst[-1])\r
- if lch is not None and lch.tail:\r
- p = util.etree.SubElement(lst[-1], 'p')\r
- p.text = lch.tail.lstrip()\r
- lch.tail = ''\r
-\r
- # parse first block differently as it gets wrapped in a p.\r
- li = util.etree.SubElement(lst, 'li')\r
- self.parser.state.set('looselist')\r
- firstitem = items.pop(0)\r
- self.parser.parseBlocks(li, [firstitem])\r
- self.parser.state.reset()\r
- elif parent.tag in ['ol', 'ul']:\r
- # this catches the edge case of a multi-item indented list whose \r
- # first item is in a blank parent-list item:\r
- # * * subitem1\r
- # * subitem2\r
- # see also ListIndentProcessor\r
- lst = parent\r
- else:\r
- # This is a new list so create parent with appropriate tag.\r
- lst = util.etree.SubElement(parent, self.TAG)\r
- # Check if a custom start integer is set\r
- if not self.parser.markdown.lazy_ol and self.STARTSWITH !='1':\r
- lst.attrib['start'] = self.STARTSWITH\r
-\r
- self.parser.state.set('list')\r
- # Loop through items in block, recursively parsing each with the\r
- # appropriate parent.\r
- for item in items:\r
- if item.startswith(' '*self.tab_length):\r
- # Item is indented. Parse with last item as parent\r
- self.parser.parseBlocks(lst[-1], [item])\r
- else:\r
- # New item. Create li and parse with it as parent\r
- li = util.etree.SubElement(lst, 'li')\r
- self.parser.parseBlocks(li, [item])\r
- self.parser.state.reset()\r
-\r
- def get_items(self, block):\r
- """ Break a block into list items. """\r
- items = []\r
- for line in block.split('\n'):\r
- m = self.CHILD_RE.match(line)\r
- if m:\r
- # This is a new list item\r
- # Check first item for the start index\r
- if not items and self.TAG=='ol':\r
- # Detect the integer value of first list item\r
- INTEGER_RE = re.compile('(\d+)')\r
- self.STARTSWITH = INTEGER_RE.match(m.group(1)).group()\r
- # Append to the list\r
- items.append(m.group(3))\r
- elif self.INDENT_RE.match(line):\r
- # This is an indented (possibly nested) item.\r
- if items[-1].startswith(' '*self.tab_length):\r
- # Previous item was indented. Append to that item.\r
- items[-1] = '%s\n%s' % (items[-1], line)\r
- else:\r
- items.append(line)\r
- else:\r
- # This is another line of previous item. Append to that item.\r
- items[-1] = '%s\n%s' % (items[-1], line)\r
- return items\r
-\r
-\r
-class UListProcessor(OListProcessor):\r
- """ Process unordered list blocks. """\r
-\r
- TAG = 'ul'\r
- RE = re.compile(r'^[ ]{0,3}[*+-][ ]+(.*)')\r
-\r
-\r
-class HashHeaderProcessor(BlockProcessor):\r
- """ Process Hash Headers. """\r
-\r
- # Detect a header at start of any line in block\r
- RE = re.compile(r'(^|\n)(?P<level>#{1,6})(?P<header>.*?)#*(\n|$)')\r
-\r
- def test(self, parent, block):\r
- return bool(self.RE.search(block))\r
-\r
- def run(self, parent, blocks):\r
- block = blocks.pop(0)\r
- m = self.RE.search(block)\r
- if m:\r
- before = block[:m.start()] # All lines before header\r
- after = block[m.end():] # All lines after header\r
- if before:\r
- # As the header was not the first line of the block and the\r
- # lines before the header must be parsed first,\r
- # recursively parse this lines as a block.\r
- self.parser.parseBlocks(parent, [before])\r
- # Create header using named groups from RE\r
- h = util.etree.SubElement(parent, 'h%d' % len(m.group('level')))\r
- h.text = m.group('header').strip()\r
- if after:\r
- # Insert remaining lines as first block for future parsing.\r
- blocks.insert(0, after)\r
- else:\r
- # This should never happen, but just in case...\r
- logger.warn("We've got a problem header: %r" % block)\r
-\r
-\r
-class SetextHeaderProcessor(BlockProcessor):\r
- """ Process Setext-style Headers. """\r
-\r
- # Detect Setext-style header. Must be first 2 lines of block.\r
- RE = re.compile(r'^.*?\n[=-]+[ ]*(\n|$)', re.MULTILINE)\r
-\r
- def test(self, parent, block):\r
- return bool(self.RE.match(block))\r
-\r
- def run(self, parent, blocks):\r
- lines = blocks.pop(0).split('\n')\r
- # Determine level. ``=`` is 1 and ``-`` is 2.\r
- if lines[1].startswith('='):\r
- level = 1\r
- else:\r
- level = 2\r
- h = util.etree.SubElement(parent, 'h%d' % level)\r
- h.text = lines[0].strip()\r
- if len(lines) > 2:\r
- # Block contains additional lines. Add to master blocks for later.\r
- blocks.insert(0, '\n'.join(lines[2:]))\r
-\r
-\r
-class HRProcessor(BlockProcessor):\r
- """ Process Horizontal Rules. """\r
-\r
- RE = r'^[ ]{0,3}((-+[ ]{0,2}){3,}|(_+[ ]{0,2}){3,}|(\*+[ ]{0,2}){3,})[ ]*'\r
- # Detect hr on any line of a block.\r
- SEARCH_RE = re.compile(RE, re.MULTILINE)\r
-\r
- def test(self, parent, block):\r
- m = self.SEARCH_RE.search(block)\r
- # No atomic grouping in python so we simulate it here for performance.\r
- # The regex only matches what would be in the atomic group - the HR.\r
- # Then check if we are at end of block or if next char is a newline.\r
- if m and (m.end() == len(block) or block[m.end()] == '\n'):\r
- # Save match object on class instance so we can use it later.\r
- self.match = m\r
- return True\r
- return False\r
-\r
- def run(self, parent, blocks):\r
- block = blocks.pop(0)\r
- # Check for lines in block before hr.\r
- prelines = block[:self.match.start()].rstrip('\n')\r
- if prelines:\r
- # Recursively parse lines before hr so they get parsed first.\r
- self.parser.parseBlocks(parent, [prelines])\r
- # create hr\r
- util.etree.SubElement(parent, 'hr')\r
- # check for lines in block after hr.\r
- postlines = block[self.match.end():].lstrip('\n')\r
- if postlines:\r
- # Add lines after hr to master blocks for later parsing.\r
- blocks.insert(0, postlines)\r
-\r
-\r
-\r
-class EmptyBlockProcessor(BlockProcessor):\r
- """ Process blocks that are empty or start with an empty line. """\r
-\r
- def test(self, parent, block):\r
- return not block or block.startswith('\n')\r
-\r
- def run(self, parent, blocks):\r
- block = blocks.pop(0)\r
- filler = '\n\n'\r
- if block:\r
- # Starts with empty line\r
- # Only replace a single line.\r
- filler = '\n'\r
- # Save the rest for later.\r
- theRest = block[1:]\r
- if theRest:\r
- # Add remaining lines to master blocks for later.\r
- blocks.insert(0, theRest)\r
- sibling = self.lastChild(parent)\r
- if sibling is not None and sibling.tag == 'pre' and len(sibling) and sibling[0].tag == 'code':\r
- # Last block is a codeblock. Append to preserve whitespace.\r
- sibling[0].text = util.AtomicString('%s%s' % (sibling[0].text, filler))\r
-\r
-\r
-class ParagraphProcessor(BlockProcessor):\r
- """ Process Paragraph blocks. """\r
-\r
- def test(self, parent, block):\r
- return True\r
-\r
- def run(self, parent, blocks):\r
- block = blocks.pop(0)\r
- if block.strip():\r
- # Not a blank block. Add to parent, otherwise throw it away.\r
- if self.parser.state.isstate('list'):\r
- # The parent is a tight-list.\r
- #\r
- # Check for any children. This will likely only happen in a \r
- # tight-list when a header isn't followed by a blank line.\r
- # For example:\r
- #\r
- # * # Header\r
- # Line 2 of list item - not part of header.\r
- sibling = self.lastChild(parent)\r
- if sibling is not None:\r
- # Insetrt after sibling.\r
- if sibling.tail:\r
- sibling.tail = '%s\n%s' % (sibling.tail, block)\r
- else:\r
- sibling.tail = '\n%s' % block\r
- else:\r
- # Append to parent.text\r
- if parent.text:\r
- parent.text = '%s\n%s' % (parent.text, block)\r
- else:\r
- parent.text = block.lstrip()\r
- else:\r
- # Create a regular paragraph\r
- p = util.etree.SubElement(parent, 'p')\r
- p.text = block.lstrip()\r
+"""
+CORE MARKDOWN BLOCKPARSER
+===========================================================================
+
+This parser handles basic parsing of Markdown blocks. It doesn't concern itself
+with inline elements such as **bold** or *italics*, but rather just catches
+blocks, lists, quotes, etc.
+
+The BlockParser is made up of a bunch of BlockProssors, each handling a
+different type of block. Extensions may add/replace/remove BlockProcessors
+as they need to alter how markdown blocks are parsed.
+"""
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import unicode_literals
+import logging
+import re
+from . import util
+from .blockparser import BlockParser
+
+logger = logging.getLogger('MARKDOWN')
+
+
+def build_block_parser(md_instance, **kwargs):
+ """ Build the default block parser used by Markdown. """
+ parser = BlockParser(md_instance)
+ parser.blockprocessors['empty'] = EmptyBlockProcessor(parser)
+ parser.blockprocessors['indent'] = ListIndentProcessor(parser)
+ parser.blockprocessors['code'] = CodeBlockProcessor(parser)
+ parser.blockprocessors['hashheader'] = HashHeaderProcessor(parser)
+ parser.blockprocessors['setextheader'] = SetextHeaderProcessor(parser)
+ parser.blockprocessors['hr'] = HRProcessor(parser)
+ parser.blockprocessors['olist'] = OListProcessor(parser)
+ parser.blockprocessors['ulist'] = UListProcessor(parser)
+ parser.blockprocessors['quote'] = BlockQuoteProcessor(parser)
+ parser.blockprocessors['paragraph'] = ParagraphProcessor(parser)
+ return parser
+
+
+class BlockProcessor:
+ """ Base class for block processors.
+
+ Each subclass will provide the methods below to work with the source and
+ tree. Each processor will need to define it's own ``test`` and ``run``
+ methods. The ``test`` method should return True or False, to indicate
+ whether the current block should be processed by this processor. If the
+ test passes, the parser will call the processors ``run`` method.
+
+ """
+
+ def __init__(self, parser):
+ self.parser = parser
+ self.tab_length = parser.markdown.tab_length
+
+ def lastChild(self, parent):
+ """ Return the last child of an etree element. """
+ if len(parent):
+ return parent[-1]
+ else:
+ return None
+
+ def detab(self, text):
+ """ Remove a tab from the front of each line of the given text. """
+ newtext = []
+ lines = text.split('\n')
+ for line in lines:
+ if line.startswith(' '*self.tab_length):
+ newtext.append(line[self.tab_length:])
+ elif not line.strip():
+ newtext.append('')
+ else:
+ break
+ return '\n'.join(newtext), '\n'.join(lines[len(newtext):])
+
+ def looseDetab(self, text, level=1):
+ """ Remove a tab from front of lines but allowing dedented lines. """
+ lines = text.split('\n')
+ for i in range(len(lines)):
+ if lines[i].startswith(' '*self.tab_length*level):
+ lines[i] = lines[i][self.tab_length*level:]
+ return '\n'.join(lines)
+
+ def test(self, parent, block):
+ """ Test for block type. Must be overridden by subclasses.
+
+ As the parser loops through processors, it will call the ``test`` method
+ on each to determine if the given block of text is of that type. This
+ method must return a boolean ``True`` or ``False``. The actual method of
+ testing is left to the needs of that particular block type. It could
+ be as simple as ``block.startswith(some_string)`` or a complex regular
+ expression. As the block type may be different depending on the parent
+ of the block (i.e. inside a list), the parent etree element is also
+ provided and may be used as part of the test.
+
+ Keywords:
+
+ * ``parent``: A etree element which will be the parent of the block.
+ * ``block``: A block of text from the source which has been split at
+ blank lines.
+ """
+ pass #pragma: no cover
+
+ def run(self, parent, blocks):
+ """ Run processor. Must be overridden by subclasses.
+
+ When the parser determines the appropriate type of a block, the parser
+ will call the corresponding processor's ``run`` method. This method
+ should parse the individual lines of the block and append them to
+ the etree.
+
+ Note that both the ``parent`` and ``etree`` keywords are pointers
+ to instances of the objects which should be edited in place. Each
+ processor must make changes to the existing objects as there is no
+ mechanism to return new/different objects to replace them.
+
+ This means that this method should be adding SubElements or adding text
+ to the parent, and should remove (``pop``) or add (``insert``) items to
+ the list of blocks.
+
+ Keywords:
+
+ * ``parent``: A etree element which is the parent of the current block.
+ * ``blocks``: A list of all remaining blocks of the document.
+ """
+ pass #pragma: no cover
+
+
+class ListIndentProcessor(BlockProcessor):
+ """ Process children of list items.
+
+ Example:
+ * a list item
+ process this part
+
+ or this part
+
+ """
+
+ ITEM_TYPES = ['li']
+ LIST_TYPES = ['ul', 'ol']
+
+ def __init__(self, *args):
+ BlockProcessor.__init__(self, *args)
+ self.INDENT_RE = re.compile(r'^(([ ]{%s})+)'% self.tab_length)
+
+ def test(self, parent, block):
+ return block.startswith(' '*self.tab_length) and \
+ not self.parser.state.isstate('detabbed') and \
+ (parent.tag in self.ITEM_TYPES or \
+ (len(parent) and parent[-1] and \
+ (parent[-1].tag in self.LIST_TYPES)
+ )
+ )
+
+ def run(self, parent, blocks):
+ block = blocks.pop(0)
+ level, sibling = self.get_level(parent, block)
+ block = self.looseDetab(block, level)
+
+ self.parser.state.set('detabbed')
+ if parent.tag in self.ITEM_TYPES:
+ # It's possible that this parent has a 'ul' or 'ol' child list
+ # with a member. If that is the case, then that should be the
+ # parent. This is intended to catch the edge case of an indented
+ # list whose first member was parsed previous to this point
+ # see OListProcessor
+ if len(parent) and parent[-1].tag in self.LIST_TYPES:
+ self.parser.parseBlocks(parent[-1], [block])
+ else:
+ # The parent is already a li. Just parse the child block.
+ self.parser.parseBlocks(parent, [block])
+ elif sibling.tag in self.ITEM_TYPES:
+ # The sibling is a li. Use it as parent.
+ self.parser.parseBlocks(sibling, [block])
+ elif len(sibling) and sibling[-1].tag in self.ITEM_TYPES:
+ # The parent is a list (``ol`` or ``ul``) which has children.
+ # Assume the last child li is the parent of this block.
+ if sibling[-1].text:
+ # If the parent li has text, that text needs to be moved to a p
+ # The p must be 'inserted' at beginning of list in the event
+ # that other children already exist i.e.; a nested sublist.
+ p = util.etree.Element('p')
+ p.text = sibling[-1].text
+ sibling[-1].text = ''
+ sibling[-1].insert(0, p)
+ self.parser.parseChunk(sibling[-1], block)
+ else:
+ self.create_item(sibling, block)
+ self.parser.state.reset()
+
+ def create_item(self, parent, block):
+ """ Create a new li and parse the block with it as the parent. """
+ li = util.etree.SubElement(parent, 'li')
+ self.parser.parseBlocks(li, [block])
+
+ def get_level(self, parent, block):
+ """ Get level of indent based on list level. """
+ # Get indent level
+ m = self.INDENT_RE.match(block)
+ if m:
+ indent_level = len(m.group(1))/self.tab_length
+ else:
+ indent_level = 0
+ if self.parser.state.isstate('list'):
+ # We're in a tightlist - so we already are at correct parent.
+ level = 1
+ else:
+ # We're in a looselist - so we need to find parent.
+ level = 0
+ # Step through children of tree to find matching indent level.
+ while indent_level > level:
+ child = self.lastChild(parent)
+ if child is not None and (child.tag in self.LIST_TYPES or child.tag in self.ITEM_TYPES):
+ if child.tag in self.LIST_TYPES:
+ level += 1
+ parent = child
+ else:
+ # No more child levels. If we're short of indent_level,
+ # we have a code block. So we stop here.
+ break
+ return level, parent
+
+
+class CodeBlockProcessor(BlockProcessor):
+ """ Process code blocks. """
+
+ def test(self, parent, block):
+ return block.startswith(' '*self.tab_length)
+
+ def run(self, parent, blocks):
+ sibling = self.lastChild(parent)
+ block = blocks.pop(0)
+ theRest = ''
+ if sibling is not None and sibling.tag == "pre" and len(sibling) \
+ and sibling[0].tag == "code":
+ # The previous block was a code block. As blank lines do not start
+ # new code blocks, append this block to the previous, adding back
+ # linebreaks removed from the split into a list.
+ code = sibling[0]
+ block, theRest = self.detab(block)
+ code.text = util.AtomicString('%s\n%s\n' % (code.text, block.rstrip()))
+ else:
+ # This is a new codeblock. Create the elements and insert text.
+ pre = util.etree.SubElement(parent, 'pre')
+ code = util.etree.SubElement(pre, 'code')
+ block, theRest = self.detab(block)
+ code.text = util.AtomicString('%s\n' % block.rstrip())
+ if theRest:
+ # This block contained unindented line(s) after the first indented
+ # line. Insert these lines as the first block of the master blocks
+ # list for future processing.
+ blocks.insert(0, theRest)
+
+
+class BlockQuoteProcessor(BlockProcessor):
+
+ RE = re.compile(r'(^|\n)[ ]{0,3}>[ ]?(.*)')
+
+ def test(self, parent, block):
+ return bool(self.RE.search(block))
+
+ def run(self, parent, blocks):
+ block = blocks.pop(0)
+ m = self.RE.search(block)
+ if m:
+ before = block[:m.start()] # Lines before blockquote
+ # Pass lines before blockquote in recursively for parsing forst.
+ self.parser.parseBlocks(parent, [before])
+ # Remove ``> `` from begining of each line.
+ block = '\n'.join([self.clean(line) for line in
+ block[m.start():].split('\n')])
+ sibling = self.lastChild(parent)
+ if sibling is not None and sibling.tag == "blockquote":
+ # Previous block was a blockquote so set that as this blocks parent
+ quote = sibling
+ else:
+ # This is a new blockquote. Create a new parent element.
+ quote = util.etree.SubElement(parent, 'blockquote')
+ # Recursively parse block with blockquote as parent.
+ # change parser state so blockquotes embedded in lists use p tags
+ self.parser.state.set('blockquote')
+ self.parser.parseChunk(quote, block)
+ self.parser.state.reset()
+
+ def clean(self, line):
+ """ Remove ``>`` from beginning of a line. """
+ m = self.RE.match(line)
+ if line.strip() == ">":
+ return ""
+ elif m:
+ return m.group(2)
+ else:
+ return line
+
+class OListProcessor(BlockProcessor):
+ """ Process ordered list blocks. """
+
+ TAG = 'ol'
+ # Detect an item (``1. item``). ``group(1)`` contains contents of item.
+ RE = re.compile(r'^[ ]{0,3}\d+\.[ ]+(.*)')
+ # Detect items on secondary lines. they can be of either list type.
+ CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.)|[*+-])[ ]+(.*)')
+ # Detect indented (nested) items of either type
+ INDENT_RE = re.compile(r'^[ ]{4,7}((\d+\.)|[*+-])[ ]+.*')
+ # The integer (python string) with which the lists starts (default=1)
+ # Eg: If list is intialized as)
+ # 3. Item
+ # The ol tag will get starts="3" attribute
+ STARTSWITH = '1'
+ # List of allowed sibling tags.
+ SIBLING_TAGS = ['ol', 'ul']
+
+ def test(self, parent, block):
+ return bool(self.RE.match(block))
+
+ def run(self, parent, blocks):
+ # Check fr multiple items in one block.
+ items = self.get_items(blocks.pop(0))
+ sibling = self.lastChild(parent)
+
+ if sibling is not None and sibling.tag in self.SIBLING_TAGS:
+ # Previous block was a list item, so set that as parent
+ lst = sibling
+ # make sure previous item is in a p- if the item has text, then it
+ # it isn't in a p
+ if lst[-1].text:
+ # since it's possible there are other children for this sibling,
+ # we can't just SubElement the p, we need to insert it as the
+ # first item
+ p = util.etree.Element('p')
+ p.text = lst[-1].text
+ lst[-1].text = ''
+ lst[-1].insert(0, p)
+ # if the last item has a tail, then the tail needs to be put in a p
+ # likely only when a header is not followed by a blank line
+ lch = self.lastChild(lst[-1])
+ if lch is not None and lch.tail:
+ p = util.etree.SubElement(lst[-1], 'p')
+ p.text = lch.tail.lstrip()
+ lch.tail = ''
+
+ # parse first block differently as it gets wrapped in a p.
+ li = util.etree.SubElement(lst, 'li')
+ self.parser.state.set('looselist')
+ firstitem = items.pop(0)
+ self.parser.parseBlocks(li, [firstitem])
+ self.parser.state.reset()
+ elif parent.tag in ['ol', 'ul']:
+ # this catches the edge case of a multi-item indented list whose
+ # first item is in a blank parent-list item:
+ # * * subitem1
+ # * subitem2
+ # see also ListIndentProcessor
+ lst = parent
+ else:
+ # This is a new list so create parent with appropriate tag.
+ lst = util.etree.SubElement(parent, self.TAG)
+ # Check if a custom start integer is set
+ if not self.parser.markdown.lazy_ol and self.STARTSWITH !='1':
+ lst.attrib['start'] = self.STARTSWITH
+
+ self.parser.state.set('list')
+ # Loop through items in block, recursively parsing each with the
+ # appropriate parent.
+ for item in items:
+ if item.startswith(' '*self.tab_length):
+ # Item is indented. Parse with last item as parent
+ self.parser.parseBlocks(lst[-1], [item])
+ else:
+ # New item. Create li and parse with it as parent
+ li = util.etree.SubElement(lst, 'li')
+ self.parser.parseBlocks(li, [item])
+ self.parser.state.reset()
+
+ def get_items(self, block):
+ """ Break a block into list items. """
+ items = []
+ for line in block.split('\n'):
+ m = self.CHILD_RE.match(line)
+ if m:
+ # This is a new list item
+ # Check first item for the start index
+ if not items and self.TAG=='ol':
+ # Detect the integer value of first list item
+ INTEGER_RE = re.compile('(\d+)')
+ self.STARTSWITH = INTEGER_RE.match(m.group(1)).group()
+ # Append to the list
+ items.append(m.group(3))
+ elif self.INDENT_RE.match(line):
+ # This is an indented (possibly nested) item.
+ if items[-1].startswith(' '*self.tab_length):
+ # Previous item was indented. Append to that item.
+ items[-1] = '%s\n%s' % (items[-1], line)
+ else:
+ items.append(line)
+ else:
+ # This is another line of previous item. Append to that item.
+ items[-1] = '%s\n%s' % (items[-1], line)
+ return items
+
+
+class UListProcessor(OListProcessor):
+ """ Process unordered list blocks. """
+
+ TAG = 'ul'
+ RE = re.compile(r'^[ ]{0,3}[*+-][ ]+(.*)')
+
+
+class HashHeaderProcessor(BlockProcessor):
+ """ Process Hash Headers. """
+
+ # Detect a header at start of any line in block
+ RE = re.compile(r'(^|\n)(?P<level>#{1,6})(?P<header>.*?)#*(\n|$)')
+
+ def test(self, parent, block):
+ return bool(self.RE.search(block))
+
+ def run(self, parent, blocks):
+ block = blocks.pop(0)
+ m = self.RE.search(block)
+ if m:
+ before = block[:m.start()] # All lines before header
+ after = block[m.end():] # All lines after header
+ if before:
+ # As the header was not the first line of the block and the
+ # lines before the header must be parsed first,
+ # recursively parse this lines as a block.
+ self.parser.parseBlocks(parent, [before])
+ # Create header using named groups from RE
+ h = util.etree.SubElement(parent, 'h%d' % len(m.group('level')))
+ h.text = m.group('header').strip()
+ if after:
+ # Insert remaining lines as first block for future parsing.
+ blocks.insert(0, after)
+ else: #pragma: no cover
+ # This should never happen, but just in case...
+ logger.warn("We've got a problem header: %r" % block)
+
+
+class SetextHeaderProcessor(BlockProcessor):
+ """ Process Setext-style Headers. """
+
+ # Detect Setext-style header. Must be first 2 lines of block.
+ RE = re.compile(r'^.*?\n[=-]+[ ]*(\n|$)', re.MULTILINE)
+
+ def test(self, parent, block):
+ return bool(self.RE.match(block))
+
+ def run(self, parent, blocks):
+ lines = blocks.pop(0).split('\n')
+ # Determine level. ``=`` is 1 and ``-`` is 2.
+ if lines[1].startswith('='):
+ level = 1
+ else:
+ level = 2
+ h = util.etree.SubElement(parent, 'h%d' % level)
+ h.text = lines[0].strip()
+ if len(lines) > 2:
+ # Block contains additional lines. Add to master blocks for later.
+ blocks.insert(0, '\n'.join(lines[2:]))
+
+
+class HRProcessor(BlockProcessor):
+ """ Process Horizontal Rules. """
+
+ RE = r'^[ ]{0,3}((-+[ ]{0,2}){3,}|(_+[ ]{0,2}){3,}|(\*+[ ]{0,2}){3,})[ ]*'
+ # Detect hr on any line of a block.
+ SEARCH_RE = re.compile(RE, re.MULTILINE)
+
+ def test(self, parent, block):
+ m = self.SEARCH_RE.search(block)
+ # No atomic grouping in python so we simulate it here for performance.
+ # The regex only matches what would be in the atomic group - the HR.
+ # Then check if we are at end of block or if next char is a newline.
+ if m and (m.end() == len(block) or block[m.end()] == '\n'):
+ # Save match object on class instance so we can use it later.
+ self.match = m
+ return True
+ return False
+
+ def run(self, parent, blocks):
+ block = blocks.pop(0)
+ # Check for lines in block before hr.
+ prelines = block[:self.match.start()].rstrip('\n')
+ if prelines:
+ # Recursively parse lines before hr so they get parsed first.
+ self.parser.parseBlocks(parent, [prelines])
+ # create hr
+ util.etree.SubElement(parent, 'hr')
+ # check for lines in block after hr.
+ postlines = block[self.match.end():].lstrip('\n')
+ if postlines:
+ # Add lines after hr to master blocks for later parsing.
+ blocks.insert(0, postlines)
+
+
+
+class EmptyBlockProcessor(BlockProcessor):
+ """ Process blocks that are empty or start with an empty line. """
+
+ def test(self, parent, block):
+ return not block or block.startswith('\n')
+
+ def run(self, parent, blocks):
+ block = blocks.pop(0)
+ filler = '\n\n'
+ if block:
+ # Starts with empty line
+ # Only replace a single line.
+ filler = '\n'
+ # Save the rest for later.
+ theRest = block[1:]
+ if theRest:
+ # Add remaining lines to master blocks for later.
+ blocks.insert(0, theRest)
+ sibling = self.lastChild(parent)
+ if sibling is not None and sibling.tag == 'pre' and len(sibling) and sibling[0].tag == 'code':
+ # Last block is a codeblock. Append to preserve whitespace.
+ sibling[0].text = util.AtomicString('%s%s' % (sibling[0].text, filler))
+
+
+class ParagraphProcessor(BlockProcessor):
+ """ Process Paragraph blocks. """
+
+ def test(self, parent, block):
+ return True
+
+ def run(self, parent, blocks):
+ block = blocks.pop(0)
+ if block.strip():
+ # Not a blank block. Add to parent, otherwise throw it away.
+ if self.parser.state.isstate('list'):
+ # The parent is a tight-list.
+ #
+ # Check for any children. This will likely only happen in a
+ # tight-list when a header isn't followed by a blank line.
+ # For example:
+ #
+ # * # Header
+ # Line 2 of list item - not part of header.
+ sibling = self.lastChild(parent)
+ if sibling is not None:
+ # Insetrt after sibling.
+ if sibling.tail:
+ sibling.tail = '%s\n%s' % (sibling.tail, block)
+ else:
+ sibling.tail = '\n%s' % block
+ else:
+ # Append to parent.text
+ if parent.text:
+ parent.text = '%s\n%s' % (parent.text, block)
+ else:
+ parent.text = block.lstrip()
+ else:
+ # Create a regular paragraph
+ p = util.etree.SubElement(parent, 'p')
+ p.text = block.lstrip()
-"""\r
-Extensions\r
------------------------------------------------------------------------------\r
-"""\r
-\r
-from __future__ import unicode_literals\r
-\r
-class Extension(object):\r
- """ Base class for extensions to subclass. """\r
- def __init__(self, configs = {}):\r
- """Create an instance of an Extention.\r
-\r
- Keyword arguments:\r
-\r
- * configs: A dict of configuration setting used by an Extension.\r
- """\r
- self.config = configs\r
-\r
- def getConfig(self, key, default=''):\r
- """ Return a setting for the given key or an empty string. """\r
- if key in self.config:\r
- return self.config[key][0]\r
- else:\r
- return default\r
-\r
- def getConfigs(self):\r
- """ Return all configs settings as a dict. """\r
- return dict([(key, self.getConfig(key)) for key in self.config.keys()])\r
-\r
- def getConfigInfo(self):\r
- """ Return all config descriptions as a list of tuples. """\r
- return [(key, self.config[key][1]) for key in self.config.keys()]\r
-\r
- def setConfig(self, key, value):\r
- """ Set a config setting for `key` with the given `value`. """\r
- self.config[key][0] = value\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """\r
- Add the various proccesors and patterns to the Markdown Instance.\r
-\r
- This method must be overriden by every extension.\r
-\r
- Keyword arguments:\r
-\r
- * md: The Markdown instance.\r
-\r
- * md_globals: Global variables in the markdown module namespace.\r
-\r
- """\r
- raise NotImplementedError('Extension "%s.%s" must define an "extendMarkdown"' \\r
- 'method.' % (self.__class__.__module__, self.__class__.__name__))\r
-\r
+"""
+Extensions
+-----------------------------------------------------------------------------
+"""
+
+from __future__ import unicode_literals
+from ..util import parseBoolValue
+import warnings
+
+class Extension(object):
+ """ Base class for extensions to subclass. """
+
+ # Default config -- to be overriden by a subclass
+ # Must be of the following format:
+ # {
+ # 'key': ['value', 'description']
+ # }
+ # Note that Extension.setConfig will raise a KeyError
+ # if a default is not set here.
+ config = {}
+
+ def __init__(self, *args, **kwargs):
+ """ Initiate Extension and set up configs. """
+
+ # check for configs arg for backward compat.
+ # (there only ever used to be one so we use arg[0])
+ if len(args):
+ self.setConfigs(args[0])
+ warnings.warn('Extension classes accepting positional args is pending Deprecation. '
+ 'Each setting should be passed into the Class as a keyword. Positional '
+ 'args will be deprecated in version 2.6 and raise an error in version '
+ '2.7. See the Release Notes for Python-Markdown version 2.5 for more info.',
+ PendingDeprecationWarning)
+ # check for configs kwarg for backward compat.
+ if 'configs' in kwargs.keys():
+ self.setConfigs(kwargs.pop('configs', {}))
+ warnings.warn('Extension classes accepting a dict on the single keyword "config" is '
+ 'pending Deprecation. Each setting should be passed into the Class as '
+ 'a keyword directly. The "config" keyword will be deprecated in version '
+ '2.6 and raise an error in version 2.7. See the Release Notes for '
+ 'Python-Markdown version 2.5 for more info.',
+ PendingDeprecationWarning)
+ # finally, use kwargs
+ self.setConfigs(kwargs)
+
+
+ def getConfig(self, key, default=''):
+ """ Return a setting for the given key or an empty string. """
+ if key in self.config:
+ return self.config[key][0]
+ else:
+ return default
+
+ def getConfigs(self):
+ """ Return all configs settings as a dict. """
+ return dict([(key, self.getConfig(key)) for key in self.config.keys()])
+
+ def getConfigInfo(self):
+ """ Return all config descriptions as a list of tuples. """
+ return [(key, self.config[key][1]) for key in self.config.keys()]
+
+ def setConfig(self, key, value):
+ """ Set a config setting for `key` with the given `value`. """
+ if isinstance(self.config[key][0], bool):
+ value = parseBoolValue(value)
+ if self.config[key][0] is None:
+ value = parseBoolValue(value, preserve_none=True)
+ self.config[key][0] = value
+
+ def setConfigs(self, items):
+ """ Set multiple config settings given a dict or list of tuples. """
+ if hasattr(items, 'items'):
+ # it's a dict
+ items = items.items()
+ for key, value in items:
+ self.setConfig(key, value)
+
+ def extendMarkdown(self, md, md_globals):
+ """
+ Add the various proccesors and patterns to the Markdown Instance.
+
+ This method must be overriden by every extension.
+
+ Keyword arguments:
+
+ * md: The Markdown instance.
+
+ * md_globals: Global variables in the markdown module namespace.
+
+ """
+ raise NotImplementedError('Extension "%s.%s" must define an "extendMarkdown"' \
+ 'method.' % (self.__class__.__module__, self.__class__.__name__))
+
-'''\r
-Abbreviation Extension for Python-Markdown\r
-==========================================\r
-\r
-This extension adds abbreviation handling to Python-Markdown.\r
-\r
-Simple Usage:\r
-\r
- >>> import markdown\r
- >>> text = """\r
- ... Some text with an ABBR and a REF. Ignore REFERENCE and ref.\r
- ...\r
- ... *[ABBR]: Abbreviation\r
- ... *[REF]: Abbreviation Reference\r
- ... """\r
- >>> print markdown.markdown(text, ['abbr'])\r
- <p>Some text with an <abbr title="Abbreviation">ABBR</abbr> and a <abbr title="Abbreviation Reference">REF</abbr>. Ignore REFERENCE and ref.</p>\r
-\r
-Copyright 2007-2008\r
-* [Waylan Limberg](http://achinghead.com/)\r
-* [Seemant Kulleen](http://www.kulleen.org/)\r
- \r
-\r
-'''\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..preprocessors import Preprocessor\r
-from ..inlinepatterns import Pattern\r
-from ..util import etree, AtomicString\r
-import re\r
-\r
-# Global Vars\r
-ABBR_REF_RE = re.compile(r'[*]\[(?P<abbr>[^\]]*)\][ ]?:\s*(?P<title>.*)')\r
-\r
-class AbbrExtension(Extension):\r
- """ Abbreviation Extension for Python-Markdown. """\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Insert AbbrPreprocessor before ReferencePreprocessor. """\r
- md.preprocessors.add('abbr', AbbrPreprocessor(md), '<reference')\r
- \r
- \r
-class AbbrPreprocessor(Preprocessor):\r
- """ Abbreviation Preprocessor - parse text for abbr references. """\r
-\r
- def run(self, lines):\r
- '''\r
- Find and remove all Abbreviation references from the text.\r
- Each reference is set as a new AbbrPattern in the markdown instance.\r
- \r
- '''\r
- new_text = []\r
- for line in lines:\r
- m = ABBR_REF_RE.match(line)\r
- if m:\r
- abbr = m.group('abbr').strip()\r
- title = m.group('title').strip()\r
- self.markdown.inlinePatterns['abbr-%s'%abbr] = \\r
- AbbrPattern(self._generate_pattern(abbr), title)\r
- else:\r
- new_text.append(line)\r
- return new_text\r
- \r
- def _generate_pattern(self, text):\r
- '''\r
- Given a string, returns an regex pattern to match that string. \r
- \r
- 'HTML' -> r'(?P<abbr>[H][T][M][L])' \r
- \r
- Note: we force each char as a literal match (in brackets) as we don't \r
- know what they will be beforehand.\r
-\r
- '''\r
- chars = list(text)\r
- for i in range(len(chars)):\r
- chars[i] = r'[%s]' % chars[i]\r
- return r'(?P<abbr>\b%s\b)' % (r''.join(chars))\r
-\r
-\r
-class AbbrPattern(Pattern):\r
- """ Abbreviation inline pattern. """\r
-\r
- def __init__(self, pattern, title):\r
- super(AbbrPattern, self).__init__(pattern)\r
- self.title = title\r
-\r
- def handleMatch(self, m):\r
- abbr = etree.Element('abbr')\r
- abbr.text = AtomicString(m.group('abbr'))\r
- abbr.set('title', self.title)\r
- return abbr\r
-\r
-def makeExtension(configs=None):\r
- return AbbrExtension(configs=configs)\r
+'''
+Abbreviation Extension for Python-Markdown
+==========================================
+
+This extension adds abbreviation handling to Python-Markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/abbreviations.html>
+for documentation.
+
+Oringinal code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/) and
+ [Seemant Kulleen](http://www.kulleen.org/)
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+'''
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..preprocessors import Preprocessor
+from ..inlinepatterns import Pattern
+from ..util import etree, AtomicString
+import re
+
+# Global Vars
+ABBR_REF_RE = re.compile(r'[*]\[(?P<abbr>[^\]]*)\][ ]?:\s*(?P<title>.*)')
+
+class AbbrExtension(Extension):
+ """ Abbreviation Extension for Python-Markdown. """
+
+ def extendMarkdown(self, md, md_globals):
+ """ Insert AbbrPreprocessor before ReferencePreprocessor. """
+ md.preprocessors.add('abbr', AbbrPreprocessor(md), '<reference')
+
+
+class AbbrPreprocessor(Preprocessor):
+ """ Abbreviation Preprocessor - parse text for abbr references. """
+
+ def run(self, lines):
+ '''
+ Find and remove all Abbreviation references from the text.
+ Each reference is set as a new AbbrPattern in the markdown instance.
+
+ '''
+ new_text = []
+ for line in lines:
+ m = ABBR_REF_RE.match(line)
+ if m:
+ abbr = m.group('abbr').strip()
+ title = m.group('title').strip()
+ self.markdown.inlinePatterns['abbr-%s'%abbr] = \
+ AbbrPattern(self._generate_pattern(abbr), title)
+ else:
+ new_text.append(line)
+ return new_text
+
+ def _generate_pattern(self, text):
+ '''
+ Given a string, returns an regex pattern to match that string.
+
+ 'HTML' -> r'(?P<abbr>[H][T][M][L])'
+
+ Note: we force each char as a literal match (in brackets) as we don't
+ know what they will be beforehand.
+
+ '''
+ chars = list(text)
+ for i in range(len(chars)):
+ chars[i] = r'[%s]' % chars[i]
+ return r'(?P<abbr>\b%s\b)' % (r''.join(chars))
+
+
+class AbbrPattern(Pattern):
+ """ Abbreviation inline pattern. """
+
+ def __init__(self, pattern, title):
+ super(AbbrPattern, self).__init__(pattern)
+ self.title = title
+
+ def handleMatch(self, m):
+ abbr = etree.Element('abbr')
+ abbr.text = AtomicString(m.group('abbr'))
+ abbr.set('title', self.title)
+ return abbr
+
+def makeExtension(*args, **kwargs):
+ return AbbrExtension(*args, **kwargs)
-"""\r
-Admonition extension for Python-Markdown\r
-========================================\r
-\r
-Adds rST-style admonitions. Inspired by [rST][] feature with the same name.\r
-\r
-The syntax is (followed by an indented block with the contents):\r
- !!! [type] [optional explicit title]\r
-\r
-Where `type` is used as a CSS class name of the div. If not present, `title`\r
-defaults to the capitalized `type`, so "note" -> "Note".\r
-\r
-rST suggests the following `types`, but you're free to use whatever you want:\r
- attention, caution, danger, error, hint, important, note, tip, warning\r
-\r
-\r
-A simple example:\r
- !!! note\r
- This is the first line inside the box.\r
-\r
-Outputs:\r
- <div class="admonition note">\r
- <p class="admonition-title">Note</p>\r
- <p>This is the first line inside the box</p>\r
- </div>\r
-\r
-You can also specify the title and CSS class of the admonition:\r
- !!! custom "Did you know?"\r
- Another line here.\r
-\r
-Outputs:\r
- <div class="admonition custom">\r
- <p class="admonition-title">Did you know?</p>\r
- <p>Another line here.</p>\r
- </div>\r
-\r
-[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions\r
-\r
-By [Tiago Serafim](http://www.tiagoserafim.com/).\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..blockprocessors import BlockProcessor\r
-from ..util import etree\r
-import re\r
-\r
-\r
-class AdmonitionExtension(Extension):\r
- """ Admonition extension for Python-Markdown. """\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add Admonition to Markdown instance. """\r
- md.registerExtension(self)\r
-\r
- md.parser.blockprocessors.add('admonition',\r
- AdmonitionProcessor(md.parser),\r
- '_begin')\r
-\r
-\r
-class AdmonitionProcessor(BlockProcessor):\r
-\r
- CLASSNAME = 'admonition'\r
- CLASSNAME_TITLE = 'admonition-title'\r
- RE = re.compile(r'(?:^|\n)!!!\ ?([\w\-]+)(?:\ "(.*?)")?')\r
-\r
- def test(self, parent, block):\r
- sibling = self.lastChild(parent)\r
- return self.RE.search(block) or \\r
- (block.startswith(' ' * self.tab_length) and sibling and \\r
- sibling.get('class', '').find(self.CLASSNAME) != -1)\r
-\r
- def run(self, parent, blocks):\r
- sibling = self.lastChild(parent)\r
- block = blocks.pop(0)\r
- m = self.RE.search(block)\r
-\r
- if m:\r
- block = block[m.end() + 1:] # removes the first line\r
-\r
- block, theRest = self.detab(block)\r
-\r
- if m:\r
- klass, title = self.get_class_and_title(m)\r
- div = etree.SubElement(parent, 'div')\r
- div.set('class', '%s %s' % (self.CLASSNAME, klass))\r
- if title:\r
- p = etree.SubElement(div, 'p')\r
- p.text = title\r
- p.set('class', self.CLASSNAME_TITLE)\r
- else:\r
- div = sibling\r
-\r
- self.parser.parseChunk(div, block)\r
-\r
- if theRest:\r
- # This block contained unindented line(s) after the first indented\r
- # line. Insert these lines as the first block of the master blocks\r
- # list for future processing.\r
- blocks.insert(0, theRest)\r
-\r
- def get_class_and_title(self, match):\r
- klass, title = match.group(1).lower(), match.group(2)\r
- if title is None:\r
- # no title was provided, use the capitalized classname as title\r
- # e.g.: `!!! note` will render `<p class="admonition-title">Note</p>`\r
- title = klass.capitalize()\r
- elif title == '':\r
- # an explicit blank title should not be rendered\r
- # e.g.: `!!! warning ""` will *not* render `p` with a title\r
- title = None\r
- return klass, title\r
-\r
-\r
-def makeExtension(configs={}):\r
- return AdmonitionExtension(configs=configs)\r
+"""
+Admonition extension for Python-Markdown
+========================================
+
+Adds rST-style admonitions. Inspired by [rST][] feature with the same name.
+
+[rST]: http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions
+
+See <https://pythonhosted.org/Markdown/extensions/admonition.html>
+for documentation.
+
+Original code Copyright [Tiago Serafim](http://www.tiagoserafim.com/).
+
+All changes Copyright The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..blockprocessors import BlockProcessor
+from ..util import etree
+import re
+
+
+class AdmonitionExtension(Extension):
+ """ Admonition extension for Python-Markdown. """
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add Admonition to Markdown instance. """
+ md.registerExtension(self)
+
+ md.parser.blockprocessors.add('admonition',
+ AdmonitionProcessor(md.parser),
+ '_begin')
+
+
+class AdmonitionProcessor(BlockProcessor):
+
+ CLASSNAME = 'admonition'
+ CLASSNAME_TITLE = 'admonition-title'
+ RE = re.compile(r'(?:^|\n)!!!\ ?([\w\-]+)(?:\ "(.*?)")?')
+
+ def test(self, parent, block):
+ sibling = self.lastChild(parent)
+ return self.RE.search(block) or \
+ (block.startswith(' ' * self.tab_length) and sibling and \
+ sibling.get('class', '').find(self.CLASSNAME) != -1)
+
+ def run(self, parent, blocks):
+ sibling = self.lastChild(parent)
+ block = blocks.pop(0)
+ m = self.RE.search(block)
+
+ if m:
+ block = block[m.end() + 1:] # removes the first line
+
+ block, theRest = self.detab(block)
+
+ if m:
+ klass, title = self.get_class_and_title(m)
+ div = etree.SubElement(parent, 'div')
+ div.set('class', '%s %s' % (self.CLASSNAME, klass))
+ if title:
+ p = etree.SubElement(div, 'p')
+ p.text = title
+ p.set('class', self.CLASSNAME_TITLE)
+ else:
+ div = sibling
+
+ self.parser.parseChunk(div, block)
+
+ if theRest:
+ # This block contained unindented line(s) after the first indented
+ # line. Insert these lines as the first block of the master blocks
+ # list for future processing.
+ blocks.insert(0, theRest)
+
+ def get_class_and_title(self, match):
+ klass, title = match.group(1).lower(), match.group(2)
+ if title is None:
+ # no title was provided, use the capitalized classname as title
+ # e.g.: `!!! note` will render `<p class="admonition-title">Note</p>`
+ title = klass.capitalize()
+ elif title == '':
+ # an explicit blank title should not be rendered
+ # e.g.: `!!! warning ""` will *not* render `p` with a title
+ title = None
+ return klass, title
+
+
+def makeExtension(*args, **kwargs):
+ return AdmonitionExtension(*args, **kwargs)
+
-"""\r
-Attribute List Extension for Python-Markdown\r
-============================================\r
-\r
-Adds attribute list syntax. Inspired by \r
-[maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s\r
-feature of the same name.\r
-\r
-Copyright 2011 [Waylan Limberg](http://achinghead.com/).\r
-\r
-Contact: markdown@freewisdom.org\r
-\r
-License: BSD (see ../LICENSE.md for details) \r
-\r
-Dependencies:\r
-* [Python 2.4+](http://python.org)\r
-* [Markdown 2.1+](http://packages.python.org/Markdown/)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..treeprocessors import Treeprocessor\r
-from ..util import isBlockLevel\r
-import re\r
-\r
-try:\r
- Scanner = re.Scanner\r
-except AttributeError:\r
- # must be on Python 2.4\r
- from sre import Scanner\r
-\r
-def _handle_double_quote(s, t):\r
- k, v = t.split('=')\r
- return k, v.strip('"')\r
-\r
-def _handle_single_quote(s, t):\r
- k, v = t.split('=')\r
- return k, v.strip("'")\r
-\r
-def _handle_key_value(s, t): \r
- return t.split('=')\r
-\r
-def _handle_word(s, t):\r
- if t.startswith('.'):\r
- return '.', t[1:]\r
- if t.startswith('#'):\r
- return 'id', t[1:]\r
- return t, t\r
-\r
-_scanner = Scanner([\r
- (r'[^ ]+=".*?"', _handle_double_quote),\r
- (r"[^ ]+='.*?'", _handle_single_quote),\r
- (r'[^ ]+=[^ ]*', _handle_key_value),\r
- (r'[^ ]+', _handle_word),\r
- (r' ', None)\r
-])\r
-\r
-def get_attrs(str):\r
- """ Parse attribute list and return a list of attribute tuples. """\r
- return _scanner.scan(str)[0]\r
-\r
-def isheader(elem):\r
- return elem.tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']\r
-\r
-class AttrListTreeprocessor(Treeprocessor):\r
- \r
- BASE_RE = r'\{\:?([^\}]*)\}'\r
- HEADER_RE = re.compile(r'[ ]+%s[ ]*$' % BASE_RE)\r
- BLOCK_RE = re.compile(r'\n[ ]*%s[ ]*$' % BASE_RE)\r
- INLINE_RE = re.compile(r'^%s' % BASE_RE)\r
- NAME_RE = re.compile(r'[^A-Z_a-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0370-\u037d'\r
- r'\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef'\r
- r'\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd'\r
- r'\:\-\.0-9\u00b7\u0300-\u036f\u203f-\u2040]+')\r
-\r
- def run(self, doc):\r
- for elem in doc.getiterator():\r
- if isBlockLevel(elem.tag):\r
- # Block level: check for attrs on last line of text\r
- RE = self.BLOCK_RE\r
- if isheader(elem) or elem.tag == 'dt':\r
- # header or def-term: check for attrs at end of line\r
- RE = self.HEADER_RE\r
- if len(elem) and elem.tag == 'li':\r
- # special case list items. children may include a ul or ol.\r
- pos = None\r
- # find the ul or ol position\r
- for i, child in enumerate(elem):\r
- if child.tag in ['ul', 'ol']:\r
- pos = i\r
- break\r
- if pos is None and elem[-1].tail:\r
- # use tail of last child. no ul or ol.\r
- m = RE.search(elem[-1].tail)\r
- if m:\r
- self.assign_attrs(elem, m.group(1))\r
- elem[-1].tail = elem[-1].tail[:m.start()]\r
- elif pos is not None and pos > 0 and elem[pos-1].tail:\r
- # use tail of last child before ul or ol\r
- m = RE.search(elem[pos-1].tail)\r
- if m:\r
- self.assign_attrs(elem, m.group(1))\r
- elem[pos-1].tail = elem[pos-1].tail[:m.start()]\r
- elif elem.text:\r
- # use text. ul is first child.\r
- m = RE.search(elem.text)\r
- if m:\r
- self.assign_attrs(elem, m.group(1))\r
- elem.text = elem.text[:m.start()]\r
- elif len(elem) and elem[-1].tail:\r
- # has children. Get from tail of last child\r
- m = RE.search(elem[-1].tail)\r
- if m:\r
- self.assign_attrs(elem, m.group(1))\r
- elem[-1].tail = elem[-1].tail[:m.start()]\r
- if isheader(elem):\r
- # clean up trailing #s\r
- elem[-1].tail = elem[-1].tail.rstrip('#').rstrip()\r
- elif elem.text:\r
- # no children. Get from text.\r
- m = RE.search(elem.text)\r
- if not m and elem.tag == 'td':\r
- m = re.search(self.BASE_RE, elem.text)\r
- if m:\r
- self.assign_attrs(elem, m.group(1))\r
- elem.text = elem.text[:m.start()]\r
- if isheader(elem):\r
- # clean up trailing #s\r
- elem.text = elem.text.rstrip('#').rstrip()\r
- else:\r
- # inline: check for attrs at start of tail\r
- if elem.tail:\r
- m = self.INLINE_RE.match(elem.tail)\r
- if m:\r
- self.assign_attrs(elem, m.group(1))\r
- elem.tail = elem.tail[m.end():]\r
-\r
- def assign_attrs(self, elem, attrs):\r
- """ Assign attrs to element. """\r
- for k, v in get_attrs(attrs):\r
- if k == '.':\r
- # add to class\r
- cls = elem.get('class')\r
- if cls:\r
- elem.set('class', '%s %s' % (cls, v))\r
- else:\r
- elem.set('class', v)\r
- else:\r
- # assign attr k with v\r
- elem.set(self.sanitize_name(k), v)\r
-\r
- def sanitize_name(self, name):\r
- """\r
- Sanitize name as 'an XML Name, minus the ":"'.\r
- See http://www.w3.org/TR/REC-xml-names/#NT-NCName\r
- """\r
- return self.NAME_RE.sub('_', name)\r
-\r
-\r
-class AttrListExtension(Extension):\r
- def extendMarkdown(self, md, md_globals):\r
- md.treeprocessors.add('attr_list', AttrListTreeprocessor(md), '>prettify')\r
-\r
-\r
-def makeExtension(configs={}):\r
- return AttrListExtension(configs=configs)\r
+"""
+Attribute List Extension for Python-Markdown
+============================================
+
+Adds attribute list syntax. Inspired by
+[maruku](http://maruku.rubyforge.org/proposal.html#attribute_lists)'s
+feature of the same name.
+
+See <https://pythonhosted.org/Markdown/extensions/attr_list.html>
+for documentation.
+
+Original code Copyright 2011 [Waylan Limberg](http://achinghead.com/).
+
+All changes Copyright 2011-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..treeprocessors import Treeprocessor
+from ..util import isBlockLevel
+import re
+
+try:
+ Scanner = re.Scanner
+except AttributeError: #pragma: no cover
+ # must be on Python 2.4
+ from sre import Scanner
+
+def _handle_double_quote(s, t):
+ k, v = t.split('=')
+ return k, v.strip('"')
+
+def _handle_single_quote(s, t):
+ k, v = t.split('=')
+ return k, v.strip("'")
+
+def _handle_key_value(s, t):
+ return t.split('=')
+
+def _handle_word(s, t):
+ if t.startswith('.'):
+ return '.', t[1:]
+ if t.startswith('#'):
+ return 'id', t[1:]
+ return t, t
+
+_scanner = Scanner([
+ (r'[^ ]+=".*?"', _handle_double_quote),
+ (r"[^ ]+='.*?'", _handle_single_quote),
+ (r'[^ ]+=[^ ]*', _handle_key_value),
+ (r'[^ ]+', _handle_word),
+ (r' ', None)
+])
+
+def get_attrs(str):
+ """ Parse attribute list and return a list of attribute tuples. """
+ return _scanner.scan(str)[0]
+
+def isheader(elem):
+ return elem.tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
+
+class AttrListTreeprocessor(Treeprocessor):
+
+ BASE_RE = r'\{\:?([^\}]*)\}'
+ HEADER_RE = re.compile(r'[ ]+%s[ ]*$' % BASE_RE)
+ BLOCK_RE = re.compile(r'\n[ ]*%s[ ]*$' % BASE_RE)
+ INLINE_RE = re.compile(r'^%s' % BASE_RE)
+ NAME_RE = re.compile(r'[^A-Z_a-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0370-\u037d'
+ r'\u037f-\u1fff\u200c-\u200d\u2070-\u218f\u2c00-\u2fef'
+ r'\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd'
+ r'\:\-\.0-9\u00b7\u0300-\u036f\u203f-\u2040]+')
+
+ def run(self, doc):
+ for elem in doc.getiterator():
+ if isBlockLevel(elem.tag):
+ # Block level: check for attrs on last line of text
+ RE = self.BLOCK_RE
+ if isheader(elem) or elem.tag == 'dt':
+ # header or def-term: check for attrs at end of line
+ RE = self.HEADER_RE
+ if len(elem) and elem.tag == 'li':
+ # special case list items. children may include a ul or ol.
+ pos = None
+ # find the ul or ol position
+ for i, child in enumerate(elem):
+ if child.tag in ['ul', 'ol']:
+ pos = i
+ break
+ if pos is None and elem[-1].tail:
+ # use tail of last child. no ul or ol.
+ m = RE.search(elem[-1].tail)
+ if m:
+ self.assign_attrs(elem, m.group(1))
+ elem[-1].tail = elem[-1].tail[:m.start()]
+ elif pos is not None and pos > 0 and elem[pos-1].tail:
+ # use tail of last child before ul or ol
+ m = RE.search(elem[pos-1].tail)
+ if m:
+ self.assign_attrs(elem, m.group(1))
+ elem[pos-1].tail = elem[pos-1].tail[:m.start()]
+ elif elem.text:
+ # use text. ul is first child.
+ m = RE.search(elem.text)
+ if m:
+ self.assign_attrs(elem, m.group(1))
+ elem.text = elem.text[:m.start()]
+ elif len(elem) and elem[-1].tail:
+ # has children. Get from tail of last child
+ m = RE.search(elem[-1].tail)
+ if m:
+ self.assign_attrs(elem, m.group(1))
+ elem[-1].tail = elem[-1].tail[:m.start()]
+ if isheader(elem):
+ # clean up trailing #s
+ elem[-1].tail = elem[-1].tail.rstrip('#').rstrip()
+ elif elem.text:
+ # no children. Get from text.
+ m = RE.search(elem.text)
+ if not m and elem.tag == 'td':
+ m = re.search(self.BASE_RE, elem.text)
+ if m:
+ self.assign_attrs(elem, m.group(1))
+ elem.text = elem.text[:m.start()]
+ if isheader(elem):
+ # clean up trailing #s
+ elem.text = elem.text.rstrip('#').rstrip()
+ else:
+ # inline: check for attrs at start of tail
+ if elem.tail:
+ m = self.INLINE_RE.match(elem.tail)
+ if m:
+ self.assign_attrs(elem, m.group(1))
+ elem.tail = elem.tail[m.end():]
+
+ def assign_attrs(self, elem, attrs):
+ """ Assign attrs to element. """
+ for k, v in get_attrs(attrs):
+ if k == '.':
+ # add to class
+ cls = elem.get('class')
+ if cls:
+ elem.set('class', '%s %s' % (cls, v))
+ else:
+ elem.set('class', v)
+ else:
+ # assign attr k with v
+ elem.set(self.sanitize_name(k), v)
+
+ def sanitize_name(self, name):
+ """
+ Sanitize name as 'an XML Name, minus the ":"'.
+ See http://www.w3.org/TR/REC-xml-names/#NT-NCName
+ """
+ return self.NAME_RE.sub('_', name)
+
+
+class AttrListExtension(Extension):
+ def extendMarkdown(self, md, md_globals):
+ md.treeprocessors.add('attr_list', AttrListTreeprocessor(md), '>prettify')
+
+
+def makeExtension(*args, **kwargs):
+ return AttrListExtension(*args, **kwargs)
-"""\r
-CodeHilite Extension for Python-Markdown\r
-========================================\r
-\r
-Adds code/syntax highlighting to standard Python-Markdown code blocks.\r
-\r
-Copyright 2006-2008 [Waylan Limberg](http://achinghead.com/).\r
-\r
-Project website: <http://packages.python.org/Markdown/extensions/code_hilite.html>\r
-Contact: markdown@freewisdom.org\r
-\r
-License: BSD (see ../LICENSE.md for details)\r
-\r
-Dependencies:\r
-* [Python 2.3+](http://python.org/)\r
-* [Markdown 2.0+](http://packages.python.org/Markdown/)\r
-* [Pygments](http://pygments.org/)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..treeprocessors import Treeprocessor\r
-import warnings\r
-try:\r
- from pygments import highlight\r
- from pygments.lexers import get_lexer_by_name, guess_lexer, TextLexer\r
- from pygments.formatters import HtmlFormatter\r
- pygments = True\r
-except ImportError:\r
- pygments = False\r
-\r
-\r
-def parse_hl_lines(expr):\r
- """Support our syntax for emphasizing certain lines of code.\r
-\r
- expr should be like '1 2' to emphasize lines 1 and 2 of a code block.\r
- Returns a list of ints, the line numbers to emphasize.\r
- """\r
- if not expr:\r
- return []\r
-\r
- try:\r
- return list(map(int, expr.split()))\r
- except ValueError:\r
- return []\r
-\r
-\r
-# ------------------ The Main CodeHilite Class ----------------------\r
-class CodeHilite(object):\r
- """\r
- Determine language of source code, and pass it into the pygments hilighter.\r
-\r
- Basic Usage:\r
- >>> code = CodeHilite(src = 'some text')\r
- >>> html = code.hilite()\r
-\r
- * src: Source string or any object with a .readline attribute.\r
-\r
- * linenums: (Boolean) Set line numbering to 'on' (True), 'off' (False) or 'auto'(None). \r
- Set to 'auto' by default.\r
-\r
- * guess_lang: (Boolean) Turn language auto-detection 'on' or 'off' (on by default).\r
-\r
- * css_class: Set class name of wrapper div ('codehilite' by default).\r
-\r
- * hl_lines: (List of integers) Lines to emphasize, 1-indexed.\r
-\r
- Low Level Usage:\r
- >>> code = CodeHilite()\r
- >>> code.src = 'some text' # String or anything with a .readline attr.\r
- >>> code.linenos = True # True or False; Turns line numbering on or of.\r
- >>> html = code.hilite()\r
-\r
- """\r
-\r
- def __init__(self, src=None, linenums=None, guess_lang=True,\r
- css_class="codehilite", lang=None, style='default',\r
- noclasses=False, tab_length=4, hl_lines=None):\r
- self.src = src\r
- self.lang = lang\r
- self.linenums = linenums\r
- self.guess_lang = guess_lang\r
- self.css_class = css_class\r
- self.style = style\r
- self.noclasses = noclasses\r
- self.tab_length = tab_length\r
- self.hl_lines = hl_lines or []\r
-\r
- def hilite(self):\r
- """\r
- Pass code to the [Pygments](http://pygments.pocoo.org/) highliter with\r
- optional line numbers. The output should then be styled with css to\r
- your liking. No styles are applied by default - only styling hooks\r
- (i.e.: <span class="k">).\r
-\r
- returns : A string of html.\r
-\r
- """\r
-\r
- self.src = self.src.strip('\n')\r
-\r
- if self.lang is None:\r
- self._parseHeader()\r
-\r
- if pygments:\r
- try:\r
- lexer = get_lexer_by_name(self.lang)\r
- except ValueError:\r
- try:\r
- if self.guess_lang:\r
- lexer = guess_lexer(self.src)\r
- else:\r
- lexer = TextLexer()\r
- except ValueError:\r
- lexer = TextLexer()\r
- formatter = HtmlFormatter(linenos=self.linenums,\r
- cssclass=self.css_class,\r
- style=self.style,\r
- noclasses=self.noclasses,\r
- hl_lines=self.hl_lines)\r
- return highlight(self.src, lexer, formatter)\r
- else:\r
- # just escape and build markup usable by JS highlighting libs\r
- txt = self.src.replace('&', '&')\r
- txt = txt.replace('<', '<')\r
- txt = txt.replace('>', '>')\r
- txt = txt.replace('"', '"')\r
- classes = []\r
- if self.lang:\r
- classes.append('language-%s' % self.lang)\r
- if self.linenums:\r
- classes.append('linenums')\r
- class_str = ''\r
- if classes:\r
- class_str = ' class="%s"' % ' '.join(classes) \r
- return '<pre class="%s"><code%s>%s</code></pre>\n'% \\r
- (self.css_class, class_str, txt)\r
-\r
- def _parseHeader(self):\r
- """\r
- Determines language of a code block from shebang line and whether said\r
- line should be removed or left in place. If the sheband line contains a\r
- path (even a single /) then it is assumed to be a real shebang line and\r
- left alone. However, if no path is given (e.i.: #!python or :::python)\r
- then it is assumed to be a mock shebang for language identifitation of a\r
- code fragment and removed from the code block prior to processing for\r
- code highlighting. When a mock shebang (e.i: #!python) is found, line\r
- numbering is turned on. When colons are found in place of a shebang\r
- (e.i.: :::python), line numbering is left in the current state - off\r
- by default.\r
-\r
- Also parses optional list of highlight lines, like:\r
-\r
- :::python hl_lines="1 3"\r
- """\r
-\r
- import re\r
-\r
- #split text into lines\r
- lines = self.src.split("\n")\r
- #pull first line to examine\r
- fl = lines.pop(0)\r
-\r
- c = re.compile(r'''\r
- (?:(?:^::+)|(?P<shebang>^[#]!)) # Shebang or 2 or more colons\r
- (?P<path>(?:/\w+)*[/ ])? # Zero or 1 path\r
- (?P<lang>[\w+-]*) # The language\r
- \s* # Arbitrary whitespace\r
- # Optional highlight lines, single- or double-quote-delimited\r
- (hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot))?\r
- ''', re.VERBOSE)\r
- # search first line for shebang\r
- m = c.search(fl)\r
- if m:\r
- # we have a match\r
- try:\r
- self.lang = m.group('lang').lower()\r
- except IndexError:\r
- self.lang = None\r
- if m.group('path'):\r
- # path exists - restore first line\r
- lines.insert(0, fl)\r
- if self.linenums is None and m.group('shebang'):\r
- # Overridable and Shebang exists - use line numbers\r
- self.linenums = True\r
-\r
- self.hl_lines = parse_hl_lines(m.group('hl_lines'))\r
- else:\r
- # No match\r
- lines.insert(0, fl)\r
-\r
- self.src = "\n".join(lines).strip("\n")\r
-\r
-\r
-\r
-# ------------------ The Markdown Extension -------------------------------\r
-class HiliteTreeprocessor(Treeprocessor):\r
- """ Hilight source code in code blocks. """\r
-\r
- def run(self, root):\r
- """ Find code blocks and store in htmlStash. """\r
- blocks = root.getiterator('pre')\r
- for block in blocks:\r
- children = block.getchildren()\r
- if len(children) == 1 and children[0].tag == 'code':\r
- code = CodeHilite(children[0].text,\r
- linenums=self.config['linenums'],\r
- guess_lang=self.config['guess_lang'],\r
- css_class=self.config['css_class'],\r
- style=self.config['pygments_style'],\r
- noclasses=self.config['noclasses'],\r
- tab_length=self.markdown.tab_length)\r
- placeholder = self.markdown.htmlStash.store(code.hilite(),\r
- safe=True)\r
- # Clear codeblock in etree instance\r
- block.clear()\r
- # Change to p element which will later\r
- # be removed when inserting raw html\r
- block.tag = 'p'\r
- block.text = placeholder\r
-\r
-\r
-class CodeHiliteExtension(Extension):\r
- """ Add source code hilighting to markdown codeblocks. """\r
-\r
- def __init__(self, configs):\r
- # define default configs\r
- self.config = {\r
- 'linenums': [None, "Use lines numbers. True=yes, False=no, None=auto"],\r
- 'force_linenos' : [False, "Depreciated! Use 'linenums' instead. Force line numbers - Default: False"],\r
- 'guess_lang' : [True, "Automatic language detection - Default: True"],\r
- 'css_class' : ["codehilite",\r
- "Set class name for wrapper <div> - Default: codehilite"],\r
- 'pygments_style' : ['default', 'Pygments HTML Formatter Style (Colorscheme) - Default: default'],\r
- 'noclasses': [False, 'Use inline styles instead of CSS classes - Default false']\r
- }\r
-\r
- # Override defaults with user settings\r
- for key, value in configs:\r
- # convert strings to booleans\r
- if value == 'True': value = True\r
- if value == 'False': value = False\r
- if value == 'None': value = None\r
-\r
- if key == 'force_linenos':\r
- warnings.warn('The "force_linenos" config setting'\r
- ' to the CodeHilite extension is deprecrecated.'\r
- ' Use "linenums" instead.', DeprecationWarning)\r
- if value:\r
- # Carry 'force_linenos' over to new 'linenos'.\r
- self.setConfig('linenums', True)\r
-\r
- self.setConfig(key, value)\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add HilitePostprocessor to Markdown instance. """\r
- hiliter = HiliteTreeprocessor(md)\r
- hiliter.config = self.getConfigs()\r
- md.treeprocessors.add("hilite", hiliter, "<inline")\r
-\r
- md.registerExtension(self)\r
-\r
-\r
-def makeExtension(configs={}):\r
- return CodeHiliteExtension(configs=configs)\r
-\r
+"""
+CodeHilite Extension for Python-Markdown
+========================================
+
+Adds code/syntax highlighting to standard Python-Markdown code blocks.
+
+See <https://pythonhosted.org/Markdown/extensions/code_hilite.html>
+for documentation.
+
+Original code Copyright 2006-2008 [Waylan Limberg](http://achinghead.com/).
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..treeprocessors import Treeprocessor
+import warnings
+try:
+ from pygments import highlight
+ from pygments.lexers import get_lexer_by_name, guess_lexer, TextLexer
+ from pygments.formatters import HtmlFormatter
+ pygments = True
+except ImportError:
+ pygments = False
+
+
+def parse_hl_lines(expr):
+ """Support our syntax for emphasizing certain lines of code.
+
+ expr should be like '1 2' to emphasize lines 1 and 2 of a code block.
+ Returns a list of ints, the line numbers to emphasize.
+ """
+ if not expr:
+ return []
+
+ try:
+ return list(map(int, expr.split()))
+ except ValueError:
+ return []
+
+
+# ------------------ The Main CodeHilite Class ----------------------
+class CodeHilite(object):
+ """
+ Determine language of source code, and pass it into the pygments hilighter.
+
+ Basic Usage:
+ >>> code = CodeHilite(src = 'some text')
+ >>> html = code.hilite()
+
+ * src: Source string or any object with a .readline attribute.
+
+ * linenums: (Boolean) Set line numbering to 'on' (True), 'off' (False) or 'auto'(None).
+ Set to 'auto' by default.
+
+ * guess_lang: (Boolean) Turn language auto-detection 'on' or 'off' (on by default).
+
+ * css_class: Set class name of wrapper div ('codehilite' by default).
+
+ * hl_lines: (List of integers) Lines to emphasize, 1-indexed.
+
+ Low Level Usage:
+ >>> code = CodeHilite()
+ >>> code.src = 'some text' # String or anything with a .readline attr.
+ >>> code.linenos = True # True or False; Turns line numbering on or of.
+ >>> html = code.hilite()
+
+ """
+
+ def __init__(self, src=None, linenums=None, guess_lang=True,
+ css_class="codehilite", lang=None, style='default',
+ noclasses=False, tab_length=4, hl_lines=None):
+ self.src = src
+ self.lang = lang
+ self.linenums = linenums
+ self.guess_lang = guess_lang
+ self.css_class = css_class
+ self.style = style
+ self.noclasses = noclasses
+ self.tab_length = tab_length
+ self.hl_lines = hl_lines or []
+
+ def hilite(self):
+ """
+ Pass code to the [Pygments](http://pygments.pocoo.org/) highliter with
+ optional line numbers. The output should then be styled with css to
+ your liking. No styles are applied by default - only styling hooks
+ (i.e.: <span class="k">).
+
+ returns : A string of html.
+
+ """
+
+ self.src = self.src.strip('\n')
+
+ if self.lang is None:
+ self._parseHeader()
+
+ if pygments:
+ try:
+ lexer = get_lexer_by_name(self.lang)
+ except ValueError:
+ try:
+ if self.guess_lang:
+ lexer = guess_lexer(self.src)
+ else:
+ lexer = TextLexer()
+ except ValueError:
+ lexer = TextLexer()
+ formatter = HtmlFormatter(linenos=self.linenums,
+ cssclass=self.css_class,
+ style=self.style,
+ noclasses=self.noclasses,
+ hl_lines=self.hl_lines)
+ return highlight(self.src, lexer, formatter)
+ else:
+ # just escape and build markup usable by JS highlighting libs
+ txt = self.src.replace('&', '&')
+ txt = txt.replace('<', '<')
+ txt = txt.replace('>', '>')
+ txt = txt.replace('"', '"')
+ classes = []
+ if self.lang:
+ classes.append('language-%s' % self.lang)
+ if self.linenums:
+ classes.append('linenums')
+ class_str = ''
+ if classes:
+ class_str = ' class="%s"' % ' '.join(classes)
+ return '<pre class="%s"><code%s>%s</code></pre>\n'% \
+ (self.css_class, class_str, txt)
+
+ def _parseHeader(self):
+ """
+ Determines language of a code block from shebang line and whether said
+ line should be removed or left in place. If the sheband line contains a
+ path (even a single /) then it is assumed to be a real shebang line and
+ left alone. However, if no path is given (e.i.: #!python or :::python)
+ then it is assumed to be a mock shebang for language identifitation of a
+ code fragment and removed from the code block prior to processing for
+ code highlighting. When a mock shebang (e.i: #!python) is found, line
+ numbering is turned on. When colons are found in place of a shebang
+ (e.i.: :::python), line numbering is left in the current state - off
+ by default.
+
+ Also parses optional list of highlight lines, like:
+
+ :::python hl_lines="1 3"
+ """
+
+ import re
+
+ #split text into lines
+ lines = self.src.split("\n")
+ #pull first line to examine
+ fl = lines.pop(0)
+
+ c = re.compile(r'''
+ (?:(?:^::+)|(?P<shebang>^[#]!)) # Shebang or 2 or more colons
+ (?P<path>(?:/\w+)*[/ ])? # Zero or 1 path
+ (?P<lang>[\w+-]*) # The language
+ \s* # Arbitrary whitespace
+ # Optional highlight lines, single- or double-quote-delimited
+ (hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot))?
+ ''', re.VERBOSE)
+ # search first line for shebang
+ m = c.search(fl)
+ if m:
+ # we have a match
+ try:
+ self.lang = m.group('lang').lower()
+ except IndexError:
+ self.lang = None
+ if m.group('path'):
+ # path exists - restore first line
+ lines.insert(0, fl)
+ if self.linenums is None and m.group('shebang'):
+ # Overridable and Shebang exists - use line numbers
+ self.linenums = True
+
+ self.hl_lines = parse_hl_lines(m.group('hl_lines'))
+ else:
+ # No match
+ lines.insert(0, fl)
+
+ self.src = "\n".join(lines).strip("\n")
+
+
+
+# ------------------ The Markdown Extension -------------------------------
+class HiliteTreeprocessor(Treeprocessor):
+ """ Hilight source code in code blocks. """
+
+ def run(self, root):
+ """ Find code blocks and store in htmlStash. """
+ blocks = root.getiterator('pre')
+ for block in blocks:
+ children = block.getchildren()
+ if len(children) == 1 and children[0].tag == 'code':
+ code = CodeHilite(children[0].text,
+ linenums=self.config['linenums'],
+ guess_lang=self.config['guess_lang'],
+ css_class=self.config['css_class'],
+ style=self.config['pygments_style'],
+ noclasses=self.config['noclasses'],
+ tab_length=self.markdown.tab_length)
+ placeholder = self.markdown.htmlStash.store(code.hilite(),
+ safe=True)
+ # Clear codeblock in etree instance
+ block.clear()
+ # Change to p element which will later
+ # be removed when inserting raw html
+ block.tag = 'p'
+ block.text = placeholder
+
+
+class CodeHiliteExtension(Extension):
+ """ Add source code hilighting to markdown codeblocks. """
+
+ def __init__(self, *args, **kwargs):
+ # define default configs
+ self.config = {
+ 'linenums': [None, "Use lines numbers. True=yes, False=no, None=auto"],
+ 'force_linenos' : [False, "Depreciated! Use 'linenums' instead. Force line numbers - Default: False"],
+ 'guess_lang' : [True, "Automatic language detection - Default: True"],
+ 'css_class' : ["codehilite",
+ "Set class name for wrapper <div> - Default: codehilite"],
+ 'pygments_style' : ['default', 'Pygments HTML Formatter Style (Colorscheme) - Default: default'],
+ 'noclasses': [False, 'Use inline styles instead of CSS classes - Default false']
+ }
+
+ super(CodeHiliteExtension, self).__init__(*args, **kwargs)
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add HilitePostprocessor to Markdown instance. """
+ hiliter = HiliteTreeprocessor(md)
+ hiliter.config = self.getConfigs()
+ md.treeprocessors.add("hilite", hiliter, "<inline")
+
+ md.registerExtension(self)
+
+
+def makeExtension(*args, **kwargs):
+ return CodeHiliteExtension(*args, **kwargs)
+
-"""\r
-Definition List Extension for Python-Markdown\r
-=============================================\r
-\r
-Added parsing of Definition Lists to Python-Markdown.\r
-\r
-A simple example:\r
-\r
- Apple\r
- : Pomaceous fruit of plants of the genus Malus in \r
- the family Rosaceae.\r
- : An american computer company.\r
-\r
- Orange\r
- : The fruit of an evergreen tree of the genus Citrus.\r
-\r
-Copyright 2008 - [Waylan Limberg](http://achinghead.com)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..blockprocessors import BlockProcessor, ListIndentProcessor\r
-from ..util import etree\r
-import re\r
-\r
-\r
-class DefListProcessor(BlockProcessor):\r
- """ Process Definition Lists. """\r
-\r
- RE = re.compile(r'(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)')\r
- NO_INDENT_RE = re.compile(r'^[ ]{0,3}[^ :]')\r
-\r
- def test(self, parent, block):\r
- return bool(self.RE.search(block))\r
-\r
- def run(self, parent, blocks):\r
-\r
- raw_block = blocks.pop(0)\r
- m = self.RE.search(raw_block)\r
- terms = [l.strip() for l in raw_block[:m.start()].split('\n') if l.strip()]\r
- block = raw_block[m.end():]\r
- no_indent = self.NO_INDENT_RE.match(block)\r
- if no_indent:\r
- d, theRest = (block, None)\r
- else:\r
- d, theRest = self.detab(block)\r
- if d:\r
- d = '%s\n%s' % (m.group(2), d)\r
- else:\r
- d = m.group(2)\r
- sibling = self.lastChild(parent)\r
- if not terms and sibling is None:\r
- # This is not a definition item. Most likely a paragraph that \r
- # starts with a colon at the begining of a document or list.\r
- blocks.insert(0, raw_block)\r
- return False\r
- if not terms and sibling.tag == 'p':\r
- # The previous paragraph contains the terms\r
- state = 'looselist'\r
- terms = sibling.text.split('\n')\r
- parent.remove(sibling)\r
- # Aquire new sibling\r
- sibling = self.lastChild(parent)\r
- else:\r
- state = 'list'\r
-\r
- if sibling and sibling.tag == 'dl':\r
- # This is another item on an existing list\r
- dl = sibling\r
- if not terms and len(dl) and dl[-1].tag == 'dd' and len(dl[-1]):\r
- state = 'looselist'\r
- else:\r
- # This is a new list\r
- dl = etree.SubElement(parent, 'dl')\r
- # Add terms\r
- for term in terms:\r
- dt = etree.SubElement(dl, 'dt')\r
- dt.text = term\r
- # Add definition\r
- self.parser.state.set(state)\r
- dd = etree.SubElement(dl, 'dd')\r
- self.parser.parseBlocks(dd, [d])\r
- self.parser.state.reset()\r
-\r
- if theRest:\r
- blocks.insert(0, theRest)\r
-\r
-class DefListIndentProcessor(ListIndentProcessor):\r
- """ Process indented children of definition list items. """\r
-\r
- ITEM_TYPES = ['dd']\r
- LIST_TYPES = ['dl']\r
-\r
- def create_item(self, parent, block):\r
- """ Create a new dd and parse the block with it as the parent. """\r
- dd = etree.SubElement(parent, 'dd')\r
- self.parser.parseBlocks(dd, [block])\r
- \r
-\r
-\r
-class DefListExtension(Extension):\r
- """ Add definition lists to Markdown. """\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add an instance of DefListProcessor to BlockParser. """\r
- md.parser.blockprocessors.add('defindent',\r
- DefListIndentProcessor(md.parser),\r
- '>indent')\r
- md.parser.blockprocessors.add('deflist', \r
- DefListProcessor(md.parser),\r
- '>ulist')\r
-\r
-\r
-def makeExtension(configs={}):\r
- return DefListExtension(configs=configs)\r
-\r
+"""
+Definition List Extension for Python-Markdown
+=============================================
+
+Adds parsing of Definition Lists to Python-Markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/definition_lists.html>
+for documentation.
+
+Original code Copyright 2008 [Waylan Limberg](http://achinghead.com)
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..blockprocessors import BlockProcessor, ListIndentProcessor
+from ..util import etree
+import re
+
+
+class DefListProcessor(BlockProcessor):
+ """ Process Definition Lists. """
+
+ RE = re.compile(r'(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)')
+ NO_INDENT_RE = re.compile(r'^[ ]{0,3}[^ :]')
+
+ def test(self, parent, block):
+ return bool(self.RE.search(block))
+
+ def run(self, parent, blocks):
+
+ raw_block = blocks.pop(0)
+ m = self.RE.search(raw_block)
+ terms = [l.strip() for l in raw_block[:m.start()].split('\n') if l.strip()]
+ block = raw_block[m.end():]
+ no_indent = self.NO_INDENT_RE.match(block)
+ if no_indent:
+ d, theRest = (block, None)
+ else:
+ d, theRest = self.detab(block)
+ if d:
+ d = '%s\n%s' % (m.group(2), d)
+ else:
+ d = m.group(2)
+ sibling = self.lastChild(parent)
+ if not terms and sibling is None:
+ # This is not a definition item. Most likely a paragraph that
+ # starts with a colon at the begining of a document or list.
+ blocks.insert(0, raw_block)
+ return False
+ if not terms and sibling.tag == 'p':
+ # The previous paragraph contains the terms
+ state = 'looselist'
+ terms = sibling.text.split('\n')
+ parent.remove(sibling)
+ # Aquire new sibling
+ sibling = self.lastChild(parent)
+ else:
+ state = 'list'
+
+ if sibling and sibling.tag == 'dl':
+ # This is another item on an existing list
+ dl = sibling
+ if not terms and len(dl) and dl[-1].tag == 'dd' and len(dl[-1]):
+ state = 'looselist'
+ else:
+ # This is a new list
+ dl = etree.SubElement(parent, 'dl')
+ # Add terms
+ for term in terms:
+ dt = etree.SubElement(dl, 'dt')
+ dt.text = term
+ # Add definition
+ self.parser.state.set(state)
+ dd = etree.SubElement(dl, 'dd')
+ self.parser.parseBlocks(dd, [d])
+ self.parser.state.reset()
+
+ if theRest:
+ blocks.insert(0, theRest)
+
+class DefListIndentProcessor(ListIndentProcessor):
+ """ Process indented children of definition list items. """
+
+ ITEM_TYPES = ['dd']
+ LIST_TYPES = ['dl']
+
+ def create_item(self, parent, block):
+ """ Create a new dd and parse the block with it as the parent. """
+ dd = etree.SubElement(parent, 'dd')
+ self.parser.parseBlocks(dd, [block])
+
+
+
+class DefListExtension(Extension):
+ """ Add definition lists to Markdown. """
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add an instance of DefListProcessor to BlockParser. """
+ md.parser.blockprocessors.add('defindent',
+ DefListIndentProcessor(md.parser),
+ '>indent')
+ md.parser.blockprocessors.add('deflist',
+ DefListProcessor(md.parser),
+ '>ulist')
+
+
+def makeExtension(*args, **kwargs):
+ return DefListExtension(*args, **kwargs)
+
-"""\r
-Python-Markdown Extra Extension\r
-===============================\r
-\r
-A compilation of various Python-Markdown extensions that imitates\r
-[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).\r
-\r
-Note that each of the individual extensions still need to be available\r
-on your PYTHONPATH. This extension simply wraps them all up as a\r
-convenience so that only one extension needs to be listed when\r
-initiating Markdown. See the documentation for each individual\r
-extension for specifics about that extension.\r
-\r
-In the event that one or more of the supported extensions are not\r
-available for import, Markdown will issue a warning and simply continue\r
-without that extension.\r
-\r
-There may be additional extensions that are distributed with\r
-Python-Markdown that are not included here in Extra. Those extensions\r
-are not part of PHP Markdown Extra, and therefore, not part of\r
-Python-Markdown Extra. If you really would like Extra to include\r
-additional extensions, we suggest creating your own clone of Extra\r
-under a differant name. You could also edit the `extensions` global\r
-variable defined below, but be aware that such changes may be lost\r
-when you upgrade to any future version of Python-Markdown.\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..blockprocessors import BlockProcessor\r
-from .. import util\r
-import re\r
-\r
-extensions = ['smart_strong',\r
- 'fenced_code',\r
- 'footnotes',\r
- 'attr_list',\r
- 'def_list',\r
- 'tables',\r
- 'abbr',\r
- ]\r
-\r
-\r
-class ExtraExtension(Extension):\r
- """ Add various extensions to Markdown class."""\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Register extension instances. """\r
- md.registerExtensions(extensions, self.config)\r
- if not md.safeMode:\r
- # Turn on processing of markdown text within raw html\r
- md.preprocessors['html_block'].markdown_in_raw = True\r
- md.parser.blockprocessors.add('markdown_block',\r
- MarkdownInHtmlProcessor(md.parser),\r
- '_begin')\r
- md.parser.blockprocessors.tag_counter = -1\r
- md.parser.blockprocessors.contain_span_tags = re.compile(\r
- r'^(p|h[1-6]|li|dd|dt|td|th|legend|address)$', re.IGNORECASE)\r
-\r
-\r
-def makeExtension(configs={}):\r
- return ExtraExtension(configs=dict(configs))\r
-\r
-\r
-class MarkdownInHtmlProcessor(BlockProcessor):\r
- """Process Markdown Inside HTML Blocks."""\r
- def test(self, parent, block):\r
- return block == util.TAG_PLACEHOLDER % \\r
- str(self.parser.blockprocessors.tag_counter + 1)\r
-\r
- def _process_nests(self, element, block):\r
- """Process the element's child elements in self.run."""\r
- # Build list of indexes of each nest within the parent element.\r
- nest_index = [] # a list of tuples: (left index, right index)\r
- i = self.parser.blockprocessors.tag_counter + 1\r
- is_nest = self.parser.markdown.htmlStash.tag_data[i]['left_index']\r
- while len(self.parser.markdown.htmlStash.tag_data) > i and is_nest:\r
- left_child_index = \\r
- self.parser.markdown.htmlStash.tag_data[i]['left_index']\r
- right_child_index = \\r
- self.parser.markdown.htmlStash.tag_data[i]['right_index']\r
- nest_index.append((left_child_index - 1, right_child_index))\r
- i += 1\r
-\r
- # Create each nest subelement.\r
- for i, (left_index, right_index) in enumerate(nest_index[:-1]):\r
- self.run(element, block[left_index:right_index],\r
- block[right_index:nest_index[i + 1][0]], True)\r
- self.run(element, block[nest_index[-1][0]:nest_index[-1][1]], # last\r
- block[nest_index[-1][1]:], True) # nest\r
-\r
- def run(self, parent, blocks, tail=None, nest=False):\r
- self.parser.blockprocessors.tag_counter += 1\r
- tag_data = self.parser.markdown.htmlStash.tag_data[\r
- self.parser.blockprocessors.tag_counter]\r
-\r
- # Create Element\r
- markdown_value = tag_data['attrs'].pop('markdown')\r
- element = util.etree.SubElement(parent, tag_data['tag'],\r
- tag_data['attrs'])\r
-\r
- # Slice Off Block\r
- if nest:\r
- self.parser.parseBlocks(parent, tail) # Process Tail\r
- block = blocks[1:]\r
- else: # includes nests since a third level of nesting isn't supported\r
- block = blocks[tag_data['left_index'] + 1:\r
- tag_data['right_index']]\r
- del blocks[:tag_data['right_index']]\r
-\r
- # Process Text\r
- if (self.parser.blockprocessors.contain_span_tags.match( # Span Mode\r
- tag_data['tag']) and markdown_value != 'block') or \\r
- markdown_value == 'span':\r
- element.text = '\n'.join(block)\r
- else: # Block Mode\r
- i = self.parser.blockprocessors.tag_counter + 1\r
- if len(self.parser.markdown.htmlStash.tag_data) > i and self.\\r
- parser.markdown.htmlStash.tag_data[i]['left_index']:\r
- first_subelement_index = self.parser.markdown.htmlStash.\\r
- tag_data[i]['left_index'] - 1\r
- self.parser.parseBlocks(\r
- element, block[:first_subelement_index])\r
- if not nest:\r
- block = self._process_nests(element, block)\r
- else:\r
- self.parser.parseBlocks(element, block)\r
+"""
+Python-Markdown Extra Extension
+===============================
+
+A compilation of various Python-Markdown extensions that imitates
+[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).
+
+Note that each of the individual extensions still need to be available
+on your PYTHONPATH. This extension simply wraps them all up as a
+convenience so that only one extension needs to be listed when
+initiating Markdown. See the documentation for each individual
+extension for specifics about that extension.
+
+There may be additional extensions that are distributed with
+Python-Markdown that are not included here in Extra. Those extensions
+are not part of PHP Markdown Extra, and therefore, not part of
+Python-Markdown Extra. If you really would like Extra to include
+additional extensions, we suggest creating your own clone of Extra
+under a differant name. You could also edit the `extensions` global
+variable defined below, but be aware that such changes may be lost
+when you upgrade to any future version of Python-Markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/extra.html>
+for documentation.
+
+Copyright The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..blockprocessors import BlockProcessor
+from .. import util
+import re
+
+extensions = [
+ 'markdown.extensions.smart_strong',
+ 'markdown.extensions.fenced_code',
+ 'markdown.extensions.footnotes',
+ 'markdown.extensions.attr_list',
+ 'markdown.extensions.def_list',
+ 'markdown.extensions.tables',
+ 'markdown.extensions.abbr'
+]
+
+
+class ExtraExtension(Extension):
+ """ Add various extensions to Markdown class."""
+
+ def __init__(self, *args, **kwargs):
+ """ config is just a dumb holder which gets passed to actual ext later. """
+ self.config = kwargs.pop('configs', {})
+ self.config.update(kwargs)
+
+ def extendMarkdown(self, md, md_globals):
+ """ Register extension instances. """
+ md.registerExtensions(extensions, self.config)
+ if not md.safeMode:
+ # Turn on processing of markdown text within raw html
+ md.preprocessors['html_block'].markdown_in_raw = True
+ md.parser.blockprocessors.add('markdown_block',
+ MarkdownInHtmlProcessor(md.parser),
+ '_begin')
+ md.parser.blockprocessors.tag_counter = -1
+ md.parser.blockprocessors.contain_span_tags = re.compile(
+ r'^(p|h[1-6]|li|dd|dt|td|th|legend|address)$', re.IGNORECASE)
+
+
+def makeExtension(*args, **kwargs):
+ return ExtraExtension(*args, **kwargs)
+
+
+class MarkdownInHtmlProcessor(BlockProcessor):
+ """Process Markdown Inside HTML Blocks."""
+ def test(self, parent, block):
+ return block == util.TAG_PLACEHOLDER % \
+ str(self.parser.blockprocessors.tag_counter + 1)
+
+ def _process_nests(self, element, block):
+ """Process the element's child elements in self.run."""
+ # Build list of indexes of each nest within the parent element.
+ nest_index = [] # a list of tuples: (left index, right index)
+ i = self.parser.blockprocessors.tag_counter + 1
+ while len(self._tag_data) > i and self._tag_data[i]['left_index']:
+ left_child_index = self._tag_data[i]['left_index']
+ right_child_index = self._tag_data[i]['right_index']
+ nest_index.append((left_child_index - 1, right_child_index))
+ i += 1
+
+ # Create each nest subelement.
+ for i, (left_index, right_index) in enumerate(nest_index[:-1]):
+ self.run(element, block[left_index:right_index],
+ block[right_index:nest_index[i + 1][0]], True)
+ self.run(element, block[nest_index[-1][0]:nest_index[-1][1]], # last
+ block[nest_index[-1][1]:], True) # nest
+
+ def run(self, parent, blocks, tail=None, nest=False):
+ self._tag_data = self.parser.markdown.htmlStash.tag_data
+
+ self.parser.blockprocessors.tag_counter += 1
+ tag = self._tag_data[self.parser.blockprocessors.tag_counter]
+
+ # Create Element
+ markdown_value = tag['attrs'].pop('markdown')
+ element = util.etree.SubElement(parent, tag['tag'], tag['attrs'])
+
+ # Slice Off Block
+ if nest:
+ self.parser.parseBlocks(parent, tail) # Process Tail
+ block = blocks[1:]
+ else: # includes nests since a third level of nesting isn't supported
+ block = blocks[tag['left_index'] + 1: tag['right_index']]
+ del blocks[:tag['right_index']]
+
+ # Process Text
+ if (self.parser.blockprocessors.contain_span_tags.match( # Span Mode
+ tag['tag']) and markdown_value != 'block') or \
+ markdown_value == 'span':
+ element.text = '\n'.join(block)
+ else: # Block Mode
+ i = self.parser.blockprocessors.tag_counter + 1
+ if len(self._tag_data) > i and self._tag_data[i]['left_index']:
+ first_subelement_index = self._tag_data[i]['left_index'] - 1
+ self.parser.parseBlocks(
+ element, block[:first_subelement_index])
+ if not nest:
+ block = self._process_nests(element, block)
+ else:
+ self.parser.parseBlocks(element, block)
-"""\r
-Fenced Code Extension for Python Markdown\r
-=========================================\r
-\r
-This extension adds Fenced Code Blocks to Python-Markdown.\r
-\r
- >>> import markdown\r
- >>> text = '''\r
- ... A paragraph before a fenced code block:\r
- ...\r
- ... ~~~\r
- ... Fenced code block\r
- ... ~~~\r
- ... '''\r
- >>> html = markdown.markdown(text, extensions=['fenced_code'])\r
- >>> print html\r
- <p>A paragraph before a fenced code block:</p>\r
- <pre><code>Fenced code block\r
- </code></pre>\r
-\r
-Works with safe_mode also (we check this because we are using the HtmlStash):\r
-\r
- >>> print markdown.markdown(text, extensions=['fenced_code'], safe_mode='replace')\r
- <p>A paragraph before a fenced code block:</p>\r
- <pre><code>Fenced code block\r
- </code></pre>\r
-\r
-Include tilde's in a code block and wrap with blank lines:\r
-\r
- >>> text = '''\r
- ... ~~~~~~~~\r
- ...\r
- ... ~~~~\r
- ... ~~~~~~~~'''\r
- >>> print markdown.markdown(text, extensions=['fenced_code'])\r
- <pre><code>\r
- ~~~~\r
- </code></pre>\r
-\r
-Language tags:\r
-\r
- >>> text = '''\r
- ... ~~~~{.python}\r
- ... # Some python code\r
- ... ~~~~'''\r
- >>> print markdown.markdown(text, extensions=['fenced_code'])\r
- <pre><code class="python"># Some python code\r
- </code></pre>\r
-\r
-Optionally backticks instead of tildes as per how github's code block markdown is identified:\r
-\r
- >>> text = '''\r
- ... `````\r
- ... # Arbitrary code\r
- ... ~~~~~ # these tildes will not close the block\r
- ... `````'''\r
- >>> print markdown.markdown(text, extensions=['fenced_code'])\r
- <pre><code># Arbitrary code\r
- ~~~~~ # these tildes will not close the block\r
- </code></pre>\r
-\r
-If the codehighlite extension and Pygments are installed, lines can be highlighted:\r
-\r
- >>> text = '''\r
- ... ```hl_lines="1 3"\r
- ... line 1\r
- ... line 2\r
- ... line 3\r
- ... ```'''\r
- >>> print markdown.markdown(text, extensions=['codehilite', 'fenced_code'])\r
- <pre><code><span class="hilight">line 1</span>\r
- line 2\r
- <span class="hilight">line 3</span>\r
- </code></pre>\r
-\r
-Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/).\r
-\r
-Project website: <http://packages.python.org/Markdown/extensions/fenced_code_blocks.html>\r
-Contact: markdown@freewisdom.org\r
-\r
-License: BSD (see ../docs/LICENSE for details)\r
-\r
-Dependencies:\r
-* [Python 2.4+](http://python.org)\r
-* [Markdown 2.0+](http://packages.python.org/Markdown/)\r
-* [Pygments (optional)](http://pygments.org)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..preprocessors import Preprocessor\r
-from .codehilite import CodeHilite, CodeHiliteExtension, parse_hl_lines\r
-import re\r
-\r
-\r
-class FencedCodeExtension(Extension):\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add FencedBlockPreprocessor to the Markdown instance. """\r
- md.registerExtension(self)\r
-\r
- md.preprocessors.add('fenced_code_block',\r
- FencedBlockPreprocessor(md),\r
- ">normalize_whitespace")\r
-\r
-\r
-class FencedBlockPreprocessor(Preprocessor):\r
- FENCED_BLOCK_RE = re.compile(r'''\r
-(?P<fence>^(?:~{3,}|`{3,}))[ ]* # Opening ``` or ~~~\r
-(\{?\.?(?P<lang>[a-zA-Z0-9_+-]*))?[ ]* # Optional {, and lang\r
-# Optional highlight lines, single- or double-quote-delimited\r
-(hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot))?[ ]*\r
-}?[ ]*\n # Optional closing }\r
-(?P<code>.*?)(?<=\n)\r
-(?P=fence)[ ]*$''', re.MULTILINE | re.DOTALL | re.VERBOSE)\r
- CODE_WRAP = '<pre><code%s>%s</code></pre>'\r
- LANG_TAG = ' class="%s"'\r
-\r
- def __init__(self, md):\r
- super(FencedBlockPreprocessor, self).__init__(md)\r
-\r
- self.checked_for_codehilite = False\r
- self.codehilite_conf = {}\r
-\r
- def run(self, lines):\r
- """ Match and store Fenced Code Blocks in the HtmlStash. """\r
-\r
- # Check for code hilite extension\r
- if not self.checked_for_codehilite:\r
- for ext in self.markdown.registeredExtensions:\r
- if isinstance(ext, CodeHiliteExtension):\r
- self.codehilite_conf = ext.config\r
- break\r
-\r
- self.checked_for_codehilite = True\r
-\r
- text = "\n".join(lines)\r
- while 1:\r
- m = self.FENCED_BLOCK_RE.search(text)\r
- if m:\r
- lang = ''\r
- if m.group('lang'):\r
- lang = self.LANG_TAG % m.group('lang')\r
-\r
- # If config is not empty, then the codehighlite extension\r
- # is enabled, so we call it to highlight the code\r
- if self.codehilite_conf:\r
- highliter = CodeHilite(m.group('code'),\r
- linenums=self.codehilite_conf['linenums'][0],\r
- guess_lang=self.codehilite_conf['guess_lang'][0],\r
- css_class=self.codehilite_conf['css_class'][0],\r
- style=self.codehilite_conf['pygments_style'][0],\r
- lang=(m.group('lang') or None),\r
- noclasses=self.codehilite_conf['noclasses'][0],\r
- hl_lines=parse_hl_lines(m.group('hl_lines')))\r
-\r
- code = highliter.hilite()\r
- else:\r
- code = self.CODE_WRAP % (lang, self._escape(m.group('code')))\r
-\r
- placeholder = self.markdown.htmlStash.store(code, safe=True)\r
- text = '%s\n%s\n%s'% (text[:m.start()], placeholder, text[m.end():])\r
- else:\r
- break\r
- return text.split("\n")\r
-\r
- def _escape(self, txt):\r
- """ basic html escaping """\r
- txt = txt.replace('&', '&')\r
- txt = txt.replace('<', '<')\r
- txt = txt.replace('>', '>')\r
- txt = txt.replace('"', '"')\r
- return txt\r
-\r
-\r
-def makeExtension(configs=None):\r
- return FencedCodeExtension(configs=configs)\r
+"""
+Fenced Code Extension for Python Markdown
+=========================================
+
+This extension adds Fenced Code Blocks to Python-Markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html>
+for documentation.
+
+Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/).
+
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..preprocessors import Preprocessor
+from .codehilite import CodeHilite, CodeHiliteExtension, parse_hl_lines
+import re
+
+
+class FencedCodeExtension(Extension):
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add FencedBlockPreprocessor to the Markdown instance. """
+ md.registerExtension(self)
+
+ md.preprocessors.add('fenced_code_block',
+ FencedBlockPreprocessor(md),
+ ">normalize_whitespace")
+
+
+class FencedBlockPreprocessor(Preprocessor):
+ FENCED_BLOCK_RE = re.compile(r'''
+(?P<fence>^(?:~{3,}|`{3,}))[ ]* # Opening ``` or ~~~
+(\{?\.?(?P<lang>[a-zA-Z0-9_+-]*))?[ ]* # Optional {, and lang
+# Optional highlight lines, single- or double-quote-delimited
+(hl_lines=(?P<quot>"|')(?P<hl_lines>.*?)(?P=quot))?[ ]*
+}?[ ]*\n # Optional closing }
+(?P<code>.*?)(?<=\n)
+(?P=fence)[ ]*$''', re.MULTILINE | re.DOTALL | re.VERBOSE)
+ CODE_WRAP = '<pre><code%s>%s</code></pre>'
+ LANG_TAG = ' class="%s"'
+
+ def __init__(self, md):
+ super(FencedBlockPreprocessor, self).__init__(md)
+
+ self.checked_for_codehilite = False
+ self.codehilite_conf = {}
+
+ def run(self, lines):
+ """ Match and store Fenced Code Blocks in the HtmlStash. """
+
+ # Check for code hilite extension
+ if not self.checked_for_codehilite:
+ for ext in self.markdown.registeredExtensions:
+ if isinstance(ext, CodeHiliteExtension):
+ self.codehilite_conf = ext.config
+ break
+
+ self.checked_for_codehilite = True
+
+ text = "\n".join(lines)
+ while 1:
+ m = self.FENCED_BLOCK_RE.search(text)
+ if m:
+ lang = ''
+ if m.group('lang'):
+ lang = self.LANG_TAG % m.group('lang')
+
+ # If config is not empty, then the codehighlite extension
+ # is enabled, so we call it to highlight the code
+ if self.codehilite_conf:
+ highliter = CodeHilite(m.group('code'),
+ linenums=self.codehilite_conf['linenums'][0],
+ guess_lang=self.codehilite_conf['guess_lang'][0],
+ css_class=self.codehilite_conf['css_class'][0],
+ style=self.codehilite_conf['pygments_style'][0],
+ lang=(m.group('lang') or None),
+ noclasses=self.codehilite_conf['noclasses'][0],
+ hl_lines=parse_hl_lines(m.group('hl_lines')))
+
+ code = highliter.hilite()
+ else:
+ code = self.CODE_WRAP % (lang, self._escape(m.group('code')))
+
+ placeholder = self.markdown.htmlStash.store(code, safe=True)
+ text = '%s\n%s\n%s'% (text[:m.start()], placeholder, text[m.end():])
+ else:
+ break
+ return text.split("\n")
+
+ def _escape(self, txt):
+ """ basic html escaping """
+ txt = txt.replace('&', '&')
+ txt = txt.replace('<', '<')
+ txt = txt.replace('>', '>')
+ txt = txt.replace('"', '"')
+ return txt
+
+
+def makeExtension(*args, **kwargs):
+ return FencedCodeExtension(*args, **kwargs)
+
-"""\r
-========================= FOOTNOTES =================================\r
-\r
-This section adds footnote handling to markdown. It can be used as\r
-an example for extending python-markdown with relatively complex\r
-functionality. While in this case the extension is included inside\r
-the module itself, it could just as easily be added from outside the\r
-module. Not that all markdown classes above are ignorant about\r
-footnotes. All footnote functionality is provided separately and\r
-then added to the markdown instance at the run time.\r
-\r
-Footnote functionality is attached by calling extendMarkdown()\r
-method of FootnoteExtension. The method also registers the\r
-extension to allow it's state to be reset by a call to reset()\r
-method.\r
-\r
-Example:\r
- Footnotes[^1] have a label[^label] and a definition[^!DEF].\r
-\r
- [^1]: This is a footnote\r
- [^label]: A footnote on "label"\r
- [^!DEF]: The footnote for definition\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..preprocessors import Preprocessor\r
-from ..inlinepatterns import Pattern\r
-from ..treeprocessors import Treeprocessor\r
-from ..postprocessors import Postprocessor\r
-from ..util import etree, text_type\r
-from ..odict import OrderedDict\r
-import re\r
-\r
-FN_BACKLINK_TEXT = "zz1337820767766393qq"\r
-NBSP_PLACEHOLDER = "qq3936677670287331zz"\r
-DEF_RE = re.compile(r'[ ]{0,3}\[\^([^\]]*)\]:\s*(.*)')\r
-TABBED_RE = re.compile(r'((\t)|( ))(.*)')\r
-\r
-class FootnoteExtension(Extension):\r
- """ Footnote Extension. """\r
-\r
- def __init__ (self, configs):\r
- """ Setup configs. """\r
- self.config = {'PLACE_MARKER':\r
- ["///Footnotes Go Here///",\r
- "The text string that marks where the footnotes go"],\r
- 'UNIQUE_IDS':\r
- [False,\r
- "Avoid name collisions across "\r
- "multiple calls to reset()."],\r
- "BACKLINK_TEXT":\r
- ["↩",\r
- "The text string that links from the footnote to the reader's place."]\r
- }\r
-\r
- for key, value in configs:\r
- self.config[key][0] = value\r
-\r
- # In multiple invocations, emit links that don't get tangled.\r
- self.unique_prefix = 0\r
-\r
- self.reset()\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add pieces to Markdown. """\r
- md.registerExtension(self)\r
- self.parser = md.parser\r
- self.md = md\r
- # Insert a preprocessor before ReferencePreprocessor\r
- md.preprocessors.add("footnote", FootnotePreprocessor(self),\r
- "<reference")\r
- # Insert an inline pattern before ImageReferencePattern\r
- FOOTNOTE_RE = r'\[\^([^\]]*)\]' # blah blah [^1] blah\r
- md.inlinePatterns.add("footnote", FootnotePattern(FOOTNOTE_RE, self),\r
- "<reference")\r
- # Insert a tree-processor that would actually add the footnote div\r
- # This must be before all other treeprocessors (i.e., inline and \r
- # codehilite) so they can run on the the contents of the div.\r
- md.treeprocessors.add("footnote", FootnoteTreeprocessor(self),\r
- "_begin")\r
- # Insert a postprocessor after amp_substitute oricessor\r
- md.postprocessors.add("footnote", FootnotePostprocessor(self),\r
- ">amp_substitute")\r
-\r
- def reset(self):\r
- """ Clear the footnotes on reset, and prepare for a distinct document. """\r
- self.footnotes = OrderedDict()\r
- self.unique_prefix += 1\r
-\r
- def findFootnotesPlaceholder(self, root):\r
- """ Return ElementTree Element that contains Footnote placeholder. """\r
- def finder(element):\r
- for child in element:\r
- if child.text:\r
- if child.text.find(self.getConfig("PLACE_MARKER")) > -1:\r
- return child, element, True\r
- if child.tail:\r
- if child.tail.find(self.getConfig("PLACE_MARKER")) > -1:\r
- return child, element, False\r
- finder(child)\r
- return None\r
- \r
- res = finder(root)\r
- return res\r
-\r
- def setFootnote(self, id, text):\r
- """ Store a footnote for later retrieval. """\r
- self.footnotes[id] = text\r
-\r
- def get_separator(self):\r
- if self.md.output_format in ['html5', 'xhtml5']:\r
- return '-'\r
- return ':'\r
-\r
- def makeFootnoteId(self, id):\r
- """ Return footnote link id. """\r
- if self.getConfig("UNIQUE_IDS"):\r
- return 'fn%s%d-%s' % (self.get_separator(), self.unique_prefix, id)\r
- else:\r
- return 'fn%s%s' % (self.get_separator(), id)\r
-\r
- def makeFootnoteRefId(self, id):\r
- """ Return footnote back-link id. """\r
- if self.getConfig("UNIQUE_IDS"):\r
- return 'fnref%s%d-%s' % (self.get_separator(), self.unique_prefix, id)\r
- else:\r
- return 'fnref%s%s' % (self.get_separator(), id)\r
-\r
- def makeFootnotesDiv(self, root):\r
- """ Return div of footnotes as et Element. """\r
-\r
- if not list(self.footnotes.keys()):\r
- return None\r
-\r
- div = etree.Element("div")\r
- div.set('class', 'footnote')\r
- etree.SubElement(div, "hr")\r
- ol = etree.SubElement(div, "ol")\r
-\r
- for id in self.footnotes.keys():\r
- li = etree.SubElement(ol, "li")\r
- li.set("id", self.makeFootnoteId(id))\r
- self.parser.parseChunk(li, self.footnotes[id])\r
- backlink = etree.Element("a")\r
- backlink.set("href", "#" + self.makeFootnoteRefId(id))\r
- if self.md.output_format not in ['html5', 'xhtml5']:\r
- backlink.set("rev", "footnote") # Invalid in HTML5\r
- backlink.set("class", "footnote-backref")\r
- backlink.set("title", "Jump back to footnote %d in the text" % \\r
- (self.footnotes.index(id)+1))\r
- backlink.text = FN_BACKLINK_TEXT\r
-\r
- if li.getchildren():\r
- node = li[-1]\r
- if node.tag == "p":\r
- node.text = node.text + NBSP_PLACEHOLDER\r
- node.append(backlink)\r
- else:\r
- p = etree.SubElement(li, "p")\r
- p.append(backlink)\r
- return div\r
-\r
-\r
-class FootnotePreprocessor(Preprocessor):\r
- """ Find all footnote references and store for later use. """\r
-\r
- def __init__ (self, footnotes):\r
- self.footnotes = footnotes\r
-\r
- def run(self, lines):\r
- """\r
- Loop through lines and find, set, and remove footnote definitions.\r
-\r
- Keywords:\r
-\r
- * lines: A list of lines of text\r
-\r
- Return: A list of lines of text with footnote definitions removed.\r
-\r
- """\r
- newlines = []\r
- i = 0\r
- while True:\r
- m = DEF_RE.match(lines[i])\r
- if m:\r
- fn, _i = self.detectTabbed(lines[i+1:])\r
- fn.insert(0, m.group(2))\r
- i += _i-1 # skip past footnote\r
- self.footnotes.setFootnote(m.group(1), "\n".join(fn))\r
- else:\r
- newlines.append(lines[i])\r
- if len(lines) > i+1:\r
- i += 1\r
- else:\r
- break\r
- return newlines\r
-\r
- def detectTabbed(self, lines):\r
- """ Find indented text and remove indent before further proccesing.\r
-\r
- Keyword arguments:\r
-\r
- * lines: an array of strings\r
-\r
- Returns: a list of post processed items and the index of last line.\r
-\r
- """\r
- items = []\r
- blank_line = False # have we encountered a blank line yet?\r
- i = 0 # to keep track of where we are\r
-\r
- def detab(line):\r
- match = TABBED_RE.match(line)\r
- if match:\r
- return match.group(4)\r
-\r
- for line in lines:\r
- if line.strip(): # Non-blank line\r
- detabbed_line = detab(line)\r
- if detabbed_line:\r
- items.append(detabbed_line)\r
- i += 1\r
- continue\r
- elif not blank_line and not DEF_RE.match(line):\r
- # not tabbed but still part of first par.\r
- items.append(line)\r
- i += 1\r
- continue\r
- else:\r
- return items, i+1\r
-\r
- else: # Blank line: _maybe_ we are done.\r
- blank_line = True\r
- i += 1 # advance\r
-\r
- # Find the next non-blank line\r
- for j in range(i, len(lines)):\r
- if lines[j].strip():\r
- next_line = lines[j]; break\r
- else:\r
- break # There is no more text; we are done.\r
-\r
- # Check if the next non-blank line is tabbed\r
- if detab(next_line): # Yes, more work to do.\r
- items.append("")\r
- continue\r
- else:\r
- break # No, we are done.\r
- else:\r
- i += 1\r
-\r
- return items, i\r
-\r
-\r
-class FootnotePattern(Pattern):\r
- """ InlinePattern for footnote markers in a document's body text. """\r
-\r
- def __init__(self, pattern, footnotes):\r
- super(FootnotePattern, self).__init__(pattern)\r
- self.footnotes = footnotes\r
-\r
- def handleMatch(self, m):\r
- id = m.group(2)\r
- if id in self.footnotes.footnotes.keys():\r
- sup = etree.Element("sup")\r
- a = etree.SubElement(sup, "a")\r
- sup.set('id', self.footnotes.makeFootnoteRefId(id))\r
- a.set('href', '#' + self.footnotes.makeFootnoteId(id))\r
- if self.footnotes.md.output_format not in ['html5', 'xhtml5']:\r
- a.set('rel', 'footnote') # invalid in HTML5\r
- a.set('class', 'footnote-ref')\r
- a.text = text_type(self.footnotes.footnotes.index(id) + 1)\r
- return sup\r
- else:\r
- return None\r
-\r
-\r
-class FootnoteTreeprocessor(Treeprocessor):\r
- """ Build and append footnote div to end of document. """\r
-\r
- def __init__ (self, footnotes):\r
- self.footnotes = footnotes\r
-\r
- def run(self, root):\r
- footnotesDiv = self.footnotes.makeFootnotesDiv(root)\r
- if footnotesDiv:\r
- result = self.footnotes.findFootnotesPlaceholder(root)\r
- if result:\r
- child, parent, isText = result\r
- ind = parent.getchildren().index(child)\r
- if isText:\r
- parent.remove(child)\r
- parent.insert(ind, footnotesDiv)\r
- else:\r
- parent.insert(ind + 1, footnotesDiv)\r
- child.tail = None\r
- else:\r
- root.append(footnotesDiv)\r
-\r
-class FootnotePostprocessor(Postprocessor):\r
- """ Replace placeholders with html entities. """\r
- def __init__(self, footnotes):\r
- self.footnotes = footnotes\r
-\r
- def run(self, text):\r
- text = text.replace(FN_BACKLINK_TEXT, self.footnotes.getConfig("BACKLINK_TEXT"))\r
- return text.replace(NBSP_PLACEHOLDER, " ")\r
-\r
-def makeExtension(configs=[]):\r
- """ Return an instance of the FootnoteExtension """\r
- return FootnoteExtension(configs=configs)\r
-\r
+"""
+Footnotes Extension for Python-Markdown
+=======================================
+
+Adds footnote handling to Python-Markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/footnotes.html>
+for documentation.
+
+Copyright The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..preprocessors import Preprocessor
+from ..inlinepatterns import Pattern
+from ..treeprocessors import Treeprocessor
+from ..postprocessors import Postprocessor
+from ..util import etree, text_type
+from ..odict import OrderedDict
+import re
+
+FN_BACKLINK_TEXT = "zz1337820767766393qq"
+NBSP_PLACEHOLDER = "qq3936677670287331zz"
+DEF_RE = re.compile(r'[ ]{0,3}\[\^([^\]]*)\]:\s*(.*)')
+TABBED_RE = re.compile(r'((\t)|( ))(.*)')
+
+class FootnoteExtension(Extension):
+ """ Footnote Extension. """
+
+ def __init__ (self, *args, **kwargs):
+ """ Setup configs. """
+
+ self.config = {
+ 'PLACE_MARKER':
+ ["///Footnotes Go Here///",
+ "The text string that marks where the footnotes go"],
+ 'UNIQUE_IDS':
+ [False,
+ "Avoid name collisions across "
+ "multiple calls to reset()."],
+ "BACKLINK_TEXT":
+ ["↩",
+ "The text string that links from the footnote to the reader's place."]
+ }
+ super(FootnoteExtension, self).__init__(*args, **kwargs)
+
+ # In multiple invocations, emit links that don't get tangled.
+ self.unique_prefix = 0
+
+ self.reset()
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add pieces to Markdown. """
+ md.registerExtension(self)
+ self.parser = md.parser
+ self.md = md
+ # Insert a preprocessor before ReferencePreprocessor
+ md.preprocessors.add("footnote", FootnotePreprocessor(self),
+ "<reference")
+ # Insert an inline pattern before ImageReferencePattern
+ FOOTNOTE_RE = r'\[\^([^\]]*)\]' # blah blah [^1] blah
+ md.inlinePatterns.add("footnote", FootnotePattern(FOOTNOTE_RE, self),
+ "<reference")
+ # Insert a tree-processor that would actually add the footnote div
+ # This must be before all other treeprocessors (i.e., inline and
+ # codehilite) so they can run on the the contents of the div.
+ md.treeprocessors.add("footnote", FootnoteTreeprocessor(self),
+ "_begin")
+ # Insert a postprocessor after amp_substitute oricessor
+ md.postprocessors.add("footnote", FootnotePostprocessor(self),
+ ">amp_substitute")
+
+ def reset(self):
+ """ Clear the footnotes on reset, and prepare for a distinct document. """
+ self.footnotes = OrderedDict()
+ self.unique_prefix += 1
+
+ def findFootnotesPlaceholder(self, root):
+ """ Return ElementTree Element that contains Footnote placeholder. """
+ def finder(element):
+ for child in element:
+ if child.text:
+ if child.text.find(self.getConfig("PLACE_MARKER")) > -1:
+ return child, element, True
+ if child.tail:
+ if child.tail.find(self.getConfig("PLACE_MARKER")) > -1:
+ return child, element, False
+ finder(child)
+ return None
+
+ res = finder(root)
+ return res
+
+ def setFootnote(self, id, text):
+ """ Store a footnote for later retrieval. """
+ self.footnotes[id] = text
+
+ def get_separator(self):
+ if self.md.output_format in ['html5', 'xhtml5']:
+ return '-'
+ return ':'
+
+ def makeFootnoteId(self, id):
+ """ Return footnote link id. """
+ if self.getConfig("UNIQUE_IDS"):
+ return 'fn%s%d-%s' % (self.get_separator(), self.unique_prefix, id)
+ else:
+ return 'fn%s%s' % (self.get_separator(), id)
+
+ def makeFootnoteRefId(self, id):
+ """ Return footnote back-link id. """
+ if self.getConfig("UNIQUE_IDS"):
+ return 'fnref%s%d-%s' % (self.get_separator(), self.unique_prefix, id)
+ else:
+ return 'fnref%s%s' % (self.get_separator(), id)
+
+ def makeFootnotesDiv(self, root):
+ """ Return div of footnotes as et Element. """
+
+ if not list(self.footnotes.keys()):
+ return None
+
+ div = etree.Element("div")
+ div.set('class', 'footnote')
+ etree.SubElement(div, "hr")
+ ol = etree.SubElement(div, "ol")
+
+ for id in self.footnotes.keys():
+ li = etree.SubElement(ol, "li")
+ li.set("id", self.makeFootnoteId(id))
+ self.parser.parseChunk(li, self.footnotes[id])
+ backlink = etree.Element("a")
+ backlink.set("href", "#" + self.makeFootnoteRefId(id))
+ if self.md.output_format not in ['html5', 'xhtml5']:
+ backlink.set("rev", "footnote") # Invalid in HTML5
+ backlink.set("class", "footnote-backref")
+ backlink.set("title", "Jump back to footnote %d in the text" % \
+ (self.footnotes.index(id)+1))
+ backlink.text = FN_BACKLINK_TEXT
+
+ if li.getchildren():
+ node = li[-1]
+ if node.tag == "p":
+ node.text = node.text + NBSP_PLACEHOLDER
+ node.append(backlink)
+ else:
+ p = etree.SubElement(li, "p")
+ p.append(backlink)
+ return div
+
+
+class FootnotePreprocessor(Preprocessor):
+ """ Find all footnote references and store for later use. """
+
+ def __init__ (self, footnotes):
+ self.footnotes = footnotes
+
+ def run(self, lines):
+ """
+ Loop through lines and find, set, and remove footnote definitions.
+
+ Keywords:
+
+ * lines: A list of lines of text
+
+ Return: A list of lines of text with footnote definitions removed.
+
+ """
+ newlines = []
+ i = 0
+ while True:
+ m = DEF_RE.match(lines[i])
+ if m:
+ fn, _i = self.detectTabbed(lines[i+1:])
+ fn.insert(0, m.group(2))
+ i += _i-1 # skip past footnote
+ self.footnotes.setFootnote(m.group(1), "\n".join(fn))
+ else:
+ newlines.append(lines[i])
+ if len(lines) > i+1:
+ i += 1
+ else:
+ break
+ return newlines
+
+ def detectTabbed(self, lines):
+ """ Find indented text and remove indent before further proccesing.
+
+ Keyword arguments:
+
+ * lines: an array of strings
+
+ Returns: a list of post processed items and the index of last line.
+
+ """
+ items = []
+ blank_line = False # have we encountered a blank line yet?
+ i = 0 # to keep track of where we are
+
+ def detab(line):
+ match = TABBED_RE.match(line)
+ if match:
+ return match.group(4)
+
+ for line in lines:
+ if line.strip(): # Non-blank line
+ detabbed_line = detab(line)
+ if detabbed_line:
+ items.append(detabbed_line)
+ i += 1
+ continue
+ elif not blank_line and not DEF_RE.match(line):
+ # not tabbed but still part of first par.
+ items.append(line)
+ i += 1
+ continue
+ else:
+ return items, i+1
+
+ else: # Blank line: _maybe_ we are done.
+ blank_line = True
+ i += 1 # advance
+
+ # Find the next non-blank line
+ for j in range(i, len(lines)):
+ if lines[j].strip():
+ next_line = lines[j]; break
+ else:
+ break # There is no more text; we are done.
+
+ # Check if the next non-blank line is tabbed
+ if detab(next_line): # Yes, more work to do.
+ items.append("")
+ continue
+ else:
+ break # No, we are done.
+ else:
+ i += 1
+
+ return items, i
+
+
+class FootnotePattern(Pattern):
+ """ InlinePattern for footnote markers in a document's body text. """
+
+ def __init__(self, pattern, footnotes):
+ super(FootnotePattern, self).__init__(pattern)
+ self.footnotes = footnotes
+
+ def handleMatch(self, m):
+ id = m.group(2)
+ if id in self.footnotes.footnotes.keys():
+ sup = etree.Element("sup")
+ a = etree.SubElement(sup, "a")
+ sup.set('id', self.footnotes.makeFootnoteRefId(id))
+ a.set('href', '#' + self.footnotes.makeFootnoteId(id))
+ if self.footnotes.md.output_format not in ['html5', 'xhtml5']:
+ a.set('rel', 'footnote') # invalid in HTML5
+ a.set('class', 'footnote-ref')
+ a.text = text_type(self.footnotes.footnotes.index(id) + 1)
+ return sup
+ else:
+ return None
+
+
+class FootnoteTreeprocessor(Treeprocessor):
+ """ Build and append footnote div to end of document. """
+
+ def __init__ (self, footnotes):
+ self.footnotes = footnotes
+
+ def run(self, root):
+ footnotesDiv = self.footnotes.makeFootnotesDiv(root)
+ if footnotesDiv:
+ result = self.footnotes.findFootnotesPlaceholder(root)
+ if result:
+ child, parent, isText = result
+ ind = parent.getchildren().index(child)
+ if isText:
+ parent.remove(child)
+ parent.insert(ind, footnotesDiv)
+ else:
+ parent.insert(ind + 1, footnotesDiv)
+ child.tail = None
+ else:
+ root.append(footnotesDiv)
+
+class FootnotePostprocessor(Postprocessor):
+ """ Replace placeholders with html entities. """
+ def __init__(self, footnotes):
+ self.footnotes = footnotes
+
+ def run(self, text):
+ text = text.replace(FN_BACKLINK_TEXT, self.footnotes.getConfig("BACKLINK_TEXT"))
+ return text.replace(NBSP_PLACEHOLDER, " ")
+
+def makeExtension(*args, **kwargs):
+ """ Return an instance of the FootnoteExtension """
+ return FootnoteExtension(*args, **kwargs)
+
-"""\r
-HeaderID Extension for Python-Markdown\r
-======================================\r
-\r
-Auto-generate id attributes for HTML headers.\r
-\r
-Basic usage:\r
-\r
- >>> import markdown\r
- >>> text = "# Some Header #"\r
- >>> md = markdown.markdown(text, ['headerid'])\r
- >>> print md\r
- <h1 id="some-header">Some Header</h1>\r
-\r
-All header IDs are unique:\r
-\r
- >>> text = '''\r
- ... #Header\r
- ... #Header\r
- ... #Header'''\r
- >>> md = markdown.markdown(text, ['headerid'])\r
- >>> print md\r
- <h1 id="header">Header</h1>\r
- <h1 id="header_1">Header</h1>\r
- <h1 id="header_2">Header</h1>\r
-\r
-To fit within a html template's hierarchy, set the header base level:\r
-\r
- >>> text = '''\r
- ... #Some Header\r
- ... ## Next Level'''\r
- >>> md = markdown.markdown(text, ['headerid(level=3)'])\r
- >>> print md\r
- <h3 id="some-header">Some Header</h3>\r
- <h4 id="next-level">Next Level</h4>\r
-\r
-Works with inline markup.\r
-\r
- >>> text = '#Some *Header* with [markup](http://example.com).'\r
- >>> md = markdown.markdown(text, ['headerid'])\r
- >>> print md\r
- <h1 id="some-header-with-markup">Some <em>Header</em> with <a href="http://example.com">markup</a>.</h1>\r
-\r
-Turn off auto generated IDs:\r
-\r
- >>> text = '''\r
- ... # Some Header\r
- ... # Another Header'''\r
- >>> md = markdown.markdown(text, ['headerid(forceid=False)'])\r
- >>> print md\r
- <h1>Some Header</h1>\r
- <h1>Another Header</h1>\r
-\r
-Use with MetaData extension:\r
-\r
- >>> text = '''header_level: 2\r
- ... header_forceid: Off\r
- ...\r
- ... # A Header'''\r
- >>> md = markdown.markdown(text, ['headerid', 'meta'])\r
- >>> print md\r
- <h2>A Header</h2>\r
-\r
-Copyright 2007-2011 [Waylan Limberg](http://achinghead.com/).\r
-\r
-Project website: <http://packages.python.org/Markdown/extensions/header_id.html>\r
-Contact: markdown@freewisdom.org\r
-\r
-License: BSD (see ../docs/LICENSE for details) \r
-\r
-Dependencies:\r
-* [Python 2.3+](http://python.org)\r
-* [Markdown 2.0+](http://packages.python.org/Markdown/)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..treeprocessors import Treeprocessor\r
-from ..util import HTML_PLACEHOLDER_RE, parseBoolValue\r
-import re\r
-import logging\r
-import unicodedata\r
-\r
-logger = logging.getLogger('MARKDOWN')\r
-\r
-IDCOUNT_RE = re.compile(r'^(.*)_([0-9]+)$')\r
-\r
-\r
-def slugify(value, separator):\r
- """ Slugify a string, to make it URL friendly. """\r
- value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')\r
- value = re.sub('[^\w\s-]', '', value.decode('ascii')).strip().lower()\r
- return re.sub('[%s\s]+' % separator, separator, value)\r
-\r
-\r
-def unique(id, ids):\r
- """ Ensure id is unique in set of ids. Append '_1', '_2'... if not """\r
- while id in ids or not id:\r
- m = IDCOUNT_RE.match(id)\r
- if m:\r
- id = '%s_%d'% (m.group(1), int(m.group(2))+1)\r
- else:\r
- id = '%s_%d'% (id, 1)\r
- ids.add(id)\r
- return id\r
-\r
-\r
-def itertext(elem):\r
- """ Loop through all children and return text only. \r
- \r
- Reimplements method of same name added to ElementTree in Python 2.7\r
- \r
- """\r
- if elem.text:\r
- yield elem.text\r
- for e in elem:\r
- for s in itertext(e):\r
- yield s\r
- if e.tail:\r
- yield e.tail\r
-\r
-\r
-def stashedHTML2text(text, md):\r
- """ Extract raw HTML, reduce to plain text and swap with placeholder. """\r
- def _html_sub(m):\r
- """ Substitute raw html with plain text. """\r
- try:\r
- raw, safe = md.htmlStash.rawHtmlBlocks[int(m.group(1))]\r
- except (IndexError, TypeError):\r
- return m.group(0)\r
- if md.safeMode and not safe:\r
- return ''\r
- # Strip out tags and entities - leaveing text\r
- return re.sub(r'(<[^>]+>)|(&[\#a-zA-Z0-9]+;)', '', raw)\r
-\r
- return HTML_PLACEHOLDER_RE.sub(_html_sub, text)\r
-\r
-\r
-class HeaderIdTreeprocessor(Treeprocessor):\r
- """ Assign IDs to headers. """\r
-\r
- IDs = set()\r
-\r
- def run(self, doc):\r
- start_level, force_id = self._get_meta()\r
- slugify = self.config['slugify']\r
- sep = self.config['separator']\r
- for elem in doc.getiterator():\r
- if elem.tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:\r
- if force_id:\r
- if "id" in elem.attrib:\r
- id = elem.get('id')\r
- else:\r
- id = stashedHTML2text(''.join(itertext(elem)), self.md)\r
- id = slugify(id, sep)\r
- elem.set('id', unique(id, self.IDs))\r
- if start_level:\r
- level = int(elem.tag[-1]) + start_level\r
- if level > 6:\r
- level = 6\r
- elem.tag = 'h%d' % level\r
-\r
-\r
- def _get_meta(self):\r
- """ Return meta data suported by this ext as a tuple """\r
- level = int(self.config['level']) - 1\r
- force = parseBoolValue(self.config['forceid'])\r
- if hasattr(self.md, 'Meta'):\r
- if 'header_level' in self.md.Meta:\r
- level = int(self.md.Meta['header_level'][0]) - 1\r
- if 'header_forceid' in self.md.Meta: \r
- force = parseBoolValue(self.md.Meta['header_forceid'][0])\r
- return level, force\r
-\r
-\r
-class HeaderIdExtension(Extension):\r
- def __init__(self, configs):\r
- # set defaults\r
- self.config = {\r
- 'level' : ['1', 'Base level for headers.'],\r
- 'forceid' : ['True', 'Force all headers to have an id.'],\r
- 'separator' : ['-', 'Word separator.'],\r
- 'slugify' : [slugify, 'Callable to generate anchors'], \r
- }\r
-\r
- for key, value in configs:\r
- self.setConfig(key, value)\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- md.registerExtension(self)\r
- self.processor = HeaderIdTreeprocessor()\r
- self.processor.md = md\r
- self.processor.config = self.getConfigs()\r
- if 'attr_list' in md.treeprocessors.keys():\r
- # insert after attr_list treeprocessor\r
- md.treeprocessors.add('headerid', self.processor, '>attr_list')\r
- else:\r
- # insert after 'prettify' treeprocessor.\r
- md.treeprocessors.add('headerid', self.processor, '>prettify')\r
-\r
- def reset(self):\r
- self.processor.IDs = set()\r
-\r
-\r
-def makeExtension(configs=None):\r
- return HeaderIdExtension(configs=configs)\r
+"""
+HeaderID Extension for Python-Markdown
+======================================
+
+Auto-generate id attributes for HTML headers.
+
+See <https://pythonhosted.org/Markdown/extensions/header_id.html>
+for documentation.
+
+Original code Copyright 2007-2011 [Waylan Limberg](http://achinghead.com/).
+
+All changes Copyright 2011-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..treeprocessors import Treeprocessor
+from ..util import HTML_PLACEHOLDER_RE, parseBoolValue
+import re
+import logging
+import unicodedata
+
+logger = logging.getLogger('MARKDOWN')
+
+IDCOUNT_RE = re.compile(r'^(.*)_([0-9]+)$')
+
+
+def slugify(value, separator):
+ """ Slugify a string, to make it URL friendly. """
+ value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
+ value = re.sub('[^\w\s-]', '', value.decode('ascii')).strip().lower()
+ return re.sub('[%s\s]+' % separator, separator, value)
+
+
+def unique(id, ids):
+ """ Ensure id is unique in set of ids. Append '_1', '_2'... if not """
+ while id in ids or not id:
+ m = IDCOUNT_RE.match(id)
+ if m:
+ id = '%s_%d'% (m.group(1), int(m.group(2))+1)
+ else:
+ id = '%s_%d'% (id, 1)
+ ids.add(id)
+ return id
+
+
+def itertext(elem):
+ """ Loop through all children and return text only.
+
+ Reimplements method of same name added to ElementTree in Python 2.7
+
+ """
+ if elem.text:
+ yield elem.text
+ for e in elem:
+ for s in itertext(e):
+ yield s
+ if e.tail:
+ yield e.tail
+
+
+def stashedHTML2text(text, md):
+ """ Extract raw HTML, reduce to plain text and swap with placeholder. """
+ def _html_sub(m):
+ """ Substitute raw html with plain text. """
+ try:
+ raw, safe = md.htmlStash.rawHtmlBlocks[int(m.group(1))]
+ except (IndexError, TypeError):
+ return m.group(0)
+ if md.safeMode and not safe:
+ return ''
+ # Strip out tags and entities - leaveing text
+ return re.sub(r'(<[^>]+>)|(&[\#a-zA-Z0-9]+;)', '', raw)
+
+ return HTML_PLACEHOLDER_RE.sub(_html_sub, text)
+
+
+class HeaderIdTreeprocessor(Treeprocessor):
+ """ Assign IDs to headers. """
+
+ IDs = set()
+
+ def run(self, doc):
+ start_level, force_id = self._get_meta()
+ slugify = self.config['slugify']
+ sep = self.config['separator']
+ for elem in doc.getiterator():
+ if elem.tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:
+ if force_id:
+ if "id" in elem.attrib:
+ id = elem.get('id')
+ else:
+ id = stashedHTML2text(''.join(itertext(elem)), self.md)
+ id = slugify(id, sep)
+ elem.set('id', unique(id, self.IDs))
+ if start_level:
+ level = int(elem.tag[-1]) + start_level
+ if level > 6:
+ level = 6
+ elem.tag = 'h%d' % level
+
+
+ def _get_meta(self):
+ """ Return meta data suported by this ext as a tuple """
+ level = int(self.config['level']) - 1
+ force = parseBoolValue(self.config['forceid'])
+ if hasattr(self.md, 'Meta'):
+ if 'header_level' in self.md.Meta:
+ level = int(self.md.Meta['header_level'][0]) - 1
+ if 'header_forceid' in self.md.Meta:
+ force = parseBoolValue(self.md.Meta['header_forceid'][0])
+ return level, force
+
+
+class HeaderIdExtension(Extension):
+ def __init__(self, *args, **kwargs):
+ # set defaults
+ self.config = {
+ 'level' : ['1', 'Base level for headers.'],
+ 'forceid' : ['True', 'Force all headers to have an id.'],
+ 'separator' : ['-', 'Word separator.'],
+ 'slugify' : [slugify, 'Callable to generate anchors'],
+ }
+
+ super(HeaderIdExtension, self).__init__(*args, **kwargs)
+
+ def extendMarkdown(self, md, md_globals):
+ md.registerExtension(self)
+ self.processor = HeaderIdTreeprocessor()
+ self.processor.md = md
+ self.processor.config = self.getConfigs()
+ if 'attr_list' in md.treeprocessors.keys():
+ # insert after attr_list treeprocessor
+ md.treeprocessors.add('headerid', self.processor, '>attr_list')
+ else:
+ # insert after 'prettify' treeprocessor.
+ md.treeprocessors.add('headerid', self.processor, '>prettify')
+
+ def reset(self):
+ self.processor.IDs = set()
+
+
+def makeExtension(*args, **kwargs):
+ return HeaderIdExtension(*args, **kwargs)
+
-"""\r
-Meta Data Extension for Python-Markdown\r
-=======================================\r
-\r
-This extension adds Meta Data handling to markdown.\r
-\r
-Basic Usage:\r
-\r
- >>> import markdown\r
- >>> text = '''Title: A Test Doc.\r
- ... Author: Waylan Limberg\r
- ... John Doe\r
- ... Blank_Data:\r
- ...\r
- ... The body. This is paragraph one.\r
- ... '''\r
- >>> md = markdown.Markdown(['meta'])\r
- >>> print md.convert(text)\r
- <p>The body. This is paragraph one.</p>\r
- >>> print md.Meta\r
- {u'blank_data': [u''], u'author': [u'Waylan Limberg', u'John Doe'], u'title': [u'A Test Doc.']}\r
-\r
-Make sure text without Meta Data still works (markdown < 1.6b returns a <p>).\r
-\r
- >>> text = ' Some Code - not extra lines of meta data.'\r
- >>> md = markdown.Markdown(['meta'])\r
- >>> print md.convert(text)\r
- <pre><code>Some Code - not extra lines of meta data.\r
- </code></pre>\r
- >>> md.Meta\r
- {}\r
-\r
-Copyright 2007-2008 [Waylan Limberg](http://achinghead.com).\r
-\r
-Project website: <http://packages.python.org/Markdown/meta_data.html>\r
-Contact: markdown@freewisdom.org\r
-\r
-License: BSD (see ../LICENSE.md for details)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..preprocessors import Preprocessor\r
-import re\r
-\r
-# Global Vars\r
-META_RE = re.compile(r'^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)')\r
-META_MORE_RE = re.compile(r'^[ ]{4,}(?P<value>.*)')\r
-\r
-class MetaExtension (Extension):\r
- """ Meta-Data extension for Python-Markdown. """\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add MetaPreprocessor to Markdown instance. """\r
-\r
- md.preprocessors.add("meta", MetaPreprocessor(md), "_begin")\r
-\r
-\r
-class MetaPreprocessor(Preprocessor):\r
- """ Get Meta-Data. """\r
-\r
- def run(self, lines):\r
- """ Parse Meta-Data and store in Markdown.Meta. """\r
- meta = {}\r
- key = None\r
- while lines:\r
- line = lines.pop(0)\r
- if line.strip() == '':\r
- break # blank line - done\r
- m1 = META_RE.match(line)\r
- if m1:\r
- key = m1.group('key').lower().strip()\r
- value = m1.group('value').strip()\r
- try:\r
- meta[key].append(value)\r
- except KeyError:\r
- meta[key] = [value]\r
- else:\r
- m2 = META_MORE_RE.match(line)\r
- if m2 and key:\r
- # Add another line to existing key\r
- meta[key].append(m2.group('value').strip())\r
- else:\r
- lines.insert(0, line)\r
- break # no meta data - done\r
- self.markdown.Meta = meta\r
- return lines\r
- \r
-\r
-def makeExtension(configs={}):\r
- return MetaExtension(configs=configs)\r
+"""
+Meta Data Extension for Python-Markdown
+=======================================
+
+This extension adds Meta Data handling to markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/meta_data.html>
+for documentation.
+
+Original code Copyright 2007-2008 [Waylan Limberg](http://achinghead.com).
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..preprocessors import Preprocessor
+import re
+
+# Global Vars
+META_RE = re.compile(r'^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)')
+META_MORE_RE = re.compile(r'^[ ]{4,}(?P<value>.*)')
+
+class MetaExtension (Extension):
+ """ Meta-Data extension for Python-Markdown. """
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add MetaPreprocessor to Markdown instance. """
+
+ md.preprocessors.add("meta", MetaPreprocessor(md), "_begin")
+
+
+class MetaPreprocessor(Preprocessor):
+ """ Get Meta-Data. """
+
+ def run(self, lines):
+ """ Parse Meta-Data and store in Markdown.Meta. """
+ meta = {}
+ key = None
+ while lines:
+ line = lines.pop(0)
+ if line.strip() == '':
+ break # blank line - done
+ m1 = META_RE.match(line)
+ if m1:
+ key = m1.group('key').lower().strip()
+ value = m1.group('value').strip()
+ try:
+ meta[key].append(value)
+ except KeyError:
+ meta[key] = [value]
+ else:
+ m2 = META_MORE_RE.match(line)
+ if m2 and key:
+ # Add another line to existing key
+ meta[key].append(m2.group('value').strip())
+ else:
+ lines.insert(0, line)
+ break # no meta data - done
+ self.markdown.Meta = meta
+ return lines
+
+
+def makeExtension(*args, **kwargs):
+ return MetaExtension(*args, **kwargs)
+
-"""\r
-NL2BR Extension\r
-===============\r
-\r
-A Python-Markdown extension to treat newlines as hard breaks; like\r
-GitHub-flavored Markdown does.\r
-\r
-Usage:\r
-\r
- >>> import markdown\r
- >>> print markdown.markdown('line 1\\nline 2', extensions=['nl2br'])\r
- <p>line 1<br />\r
- line 2</p>\r
-\r
-Copyright 2011 [Brian Neal](http://deathofagremmie.com/)\r
-\r
-Dependencies:\r
-* [Python 2.4+](http://python.org)\r
-* [Markdown 2.1+](http://packages.python.org/Markdown/)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..inlinepatterns import SubstituteTagPattern\r
-\r
-BR_RE = r'\n'\r
-\r
-class Nl2BrExtension(Extension):\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- br_tag = SubstituteTagPattern(BR_RE, 'br')\r
- md.inlinePatterns.add('nl', br_tag, '_end')\r
-\r
-\r
-def makeExtension(configs=None):\r
- return Nl2BrExtension(configs)\r
+"""
+NL2BR Extension
+===============
+
+A Python-Markdown extension to treat newlines as hard breaks; like
+GitHub-flavored Markdown does.
+
+See <https://pythonhosted.org/Markdown/extensions/nl2br.html>
+for documentation.
+
+Oringinal code Copyright 2011 [Brian Neal](http://deathofagremmie.com/)
+
+All changes Copyright 2011-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..inlinepatterns import SubstituteTagPattern
+
+BR_RE = r'\n'
+
+class Nl2BrExtension(Extension):
+
+ def extendMarkdown(self, md, md_globals):
+ br_tag = SubstituteTagPattern(BR_RE, 'br')
+ md.inlinePatterns.add('nl', br_tag, '_end')
+
+
+def makeExtension(*args, **kwargs):
+ return Nl2BrExtension(*args, **kwargs)
+
-"""\r
-Sane List Extension for Python-Markdown\r
-=======================================\r
-\r
-Modify the behavior of Lists in Python-Markdown t act in a sane manor.\r
-\r
-In standard Markdown syntax, the following would constitute a single \r
-ordered list. However, with this extension, the output would include \r
-two lists, the first an ordered list and the second and unordered list.\r
-\r
- 1. ordered\r
- 2. list\r
-\r
- * unordered\r
- * list\r
-\r
-Copyright 2011 - [Waylan Limberg](http://achinghead.com)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..blockprocessors import OListProcessor, UListProcessor\r
-import re\r
-\r
-\r
-class SaneOListProcessor(OListProcessor):\r
- \r
- CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.))[ ]+(.*)')\r
- SIBLING_TAGS = ['ol']\r
-\r
-\r
-class SaneUListProcessor(UListProcessor):\r
- \r
- CHILD_RE = re.compile(r'^[ ]{0,3}(([*+-]))[ ]+(.*)')\r
- SIBLING_TAGS = ['ul']\r
-\r
-\r
-class SaneListExtension(Extension):\r
- """ Add sane lists to Markdown. """\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Override existing Processors. """\r
- md.parser.blockprocessors['olist'] = SaneOListProcessor(md.parser)\r
- md.parser.blockprocessors['ulist'] = SaneUListProcessor(md.parser)\r
-\r
-\r
-def makeExtension(configs={}):\r
- return SaneListExtension(configs=configs)\r
-\r
+"""
+Sane List Extension for Python-Markdown
+=======================================
+
+Modify the behavior of Lists in Python-Markdown to act in a sane manor.
+
+See <https://pythonhosted.org/Markdown/extensions/sane_lists.html>
+for documentation.
+
+Original code Copyright 2011 [Waylan Limberg](http://achinghead.com)
+
+All changes Copyright 2011-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..blockprocessors import OListProcessor, UListProcessor
+import re
+
+
+class SaneOListProcessor(OListProcessor):
+
+ CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.))[ ]+(.*)')
+ SIBLING_TAGS = ['ol']
+
+
+class SaneUListProcessor(UListProcessor):
+
+ CHILD_RE = re.compile(r'^[ ]{0,3}(([*+-]))[ ]+(.*)')
+ SIBLING_TAGS = ['ul']
+
+
+class SaneListExtension(Extension):
+ """ Add sane lists to Markdown. """
+
+ def extendMarkdown(self, md, md_globals):
+ """ Override existing Processors. """
+ md.parser.blockprocessors['olist'] = SaneOListProcessor(md.parser)
+ md.parser.blockprocessors['ulist'] = SaneUListProcessor(md.parser)
+
+
+def makeExtension(*args, **kwargs):
+ return SaneListExtension(*args, **kwargs)
+
-'''\r
-Smart_Strong Extension for Python-Markdown\r
-==========================================\r
-\r
-This extention adds smarter handling of double underscores within words.\r
-\r
-Simple Usage:\r
-\r
- >>> import markdown\r
- >>> print markdown.markdown('Text with double__underscore__words.',\r
- ... extensions=['smart_strong'])\r
- <p>Text with double__underscore__words.</p>\r
- >>> print markdown.markdown('__Strong__ still works.',\r
- ... extensions=['smart_strong'])\r
- <p><strong>Strong</strong> still works.</p>\r
- >>> print markdown.markdown('__this__works__too__.',\r
- ... extensions=['smart_strong'])\r
- <p><strong>this__works__too</strong>.</p>\r
-\r
-Copyright 2011\r
-[Waylan Limberg](http://achinghead.com)\r
-\r
-'''\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..inlinepatterns import SimpleTagPattern\r
-\r
-SMART_STRONG_RE = r'(?<!\w)(_{2})(?!_)(.+?)(?<!_)\2(?!\w)'\r
-STRONG_RE = r'(\*{2})(.+?)\2'\r
-\r
-class SmartEmphasisExtension(Extension):\r
- """ Add smart_emphasis extension to Markdown class."""\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Modify inline patterns. """\r
- md.inlinePatterns['strong'] = SimpleTagPattern(STRONG_RE, 'strong')\r
- md.inlinePatterns.add('strong2', SimpleTagPattern(SMART_STRONG_RE, 'strong'), '>emphasis2')\r
-\r
-def makeExtension(configs={}):\r
- return SmartEmphasisExtension(configs=dict(configs))\r
+'''
+Smart_Strong Extension for Python-Markdown
+==========================================
+
+This extention adds smarter handling of double underscores within words.
+
+See <https://pythonhosted.org/Markdown/extensions/smart_strong.html>
+for documentation.
+
+Original code Copyright 2011 [Waylan Limberg](http://achinghead.com)
+
+All changes Copyright 2011-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+'''
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..inlinepatterns import SimpleTagPattern
+
+SMART_STRONG_RE = r'(?<!\w)(_{2})(?!_)(.+?)(?<!_)\2(?!\w)'
+STRONG_RE = r'(\*{2})(.+?)\2'
+
+class SmartEmphasisExtension(Extension):
+ """ Add smart_emphasis extension to Markdown class."""
+
+ def extendMarkdown(self, md, md_globals):
+ """ Modify inline patterns. """
+ md.inlinePatterns['strong'] = SimpleTagPattern(STRONG_RE, 'strong')
+ md.inlinePatterns.add('strong2', SimpleTagPattern(SMART_STRONG_RE, 'strong'), '>emphasis2')
+
+def makeExtension(*args, **kwargs):
+ return SmartEmphasisExtension(*args, **kwargs)
-# -*- coding: utf-8 -*-\r
-# Smarty extension for Python-Markdown\r
-# Author: 2013, Dmitry Shachnev <mitya57@gmail.com>\r
-\r
-# SmartyPants license:\r
-#\r
-# Copyright (c) 2003 John Gruber <http://daringfireball.net/>\r
-# All rights reserved.\r
-#\r
-# Redistribution and use in source and binary forms, with or without\r
-# modification, are permitted provided that the following conditions are\r
-# met:\r
-#\r
-# * Redistributions of source code must retain the above copyright\r
-# notice, this list of conditions and the following disclaimer.\r
-#\r
-# * Redistributions in binary form must reproduce the above copyright\r
-# notice, this list of conditions and the following disclaimer in\r
-# the documentation and/or other materials provided with the\r
-# distribution.\r
-#\r
-# * Neither the name "SmartyPants" nor the names of its contributors \r
-# may be used to endorse or promote products derived from this\r
-# software without specific prior written permission.\r
-#\r
-# This software is provided by the copyright holders and contributors "as\r
-# is" and any express or implied warranties, including, but not limited\r
-# to, the implied warranties of merchantability and fitness for a\r
-# particular purpose are disclaimed. In no event shall the copyright\r
-# owner or contributors be liable for any direct, indirect, incidental,\r
-# special, exemplary, or consequential damages (including, but not\r
-# limited to, procurement of substitute goods or services; loss of use,\r
-# data, or profits; or business interruption) however caused and on any\r
-# theory of liability, whether in contract, strict liability, or tort\r
-# (including negligence or otherwise) arising in any way out of the use\r
-# of this software, even if advised of the possibility of such damage.\r
-#\r
-#\r
-# smartypants.py license:\r
-#\r
-# smartypants.py is a derivative work of SmartyPants.\r
-# Copyright (c) 2004, 2007 Chad Miller <http://web.chad.org/>\r
-#\r
-# Redistribution and use in source and binary forms, with or without\r
-# modification, are permitted provided that the following conditions are\r
-# met:\r
-#\r
-# * Redistributions of source code must retain the above copyright\r
-# notice, this list of conditions and the following disclaimer.\r
-#\r
-# * Redistributions in binary form must reproduce the above copyright\r
-# notice, this list of conditions and the following disclaimer in\r
-# the documentation and/or other materials provided with the\r
-# distribution.\r
-#\r
-# This software is provided by the copyright holders and contributors "as\r
-# is" and any express or implied warranties, including, but not limited\r
-# to, the implied warranties of merchantability and fitness for a\r
-# particular purpose are disclaimed. In no event shall the copyright\r
-# owner or contributors be liable for any direct, indirect, incidental,\r
-# special, exemplary, or consequential damages (including, but not\r
-# limited to, procurement of substitute goods or services; loss of use,\r
-# data, or profits; or business interruption) however caused and on any\r
-# theory of liability, whether in contract, strict liability, or tort\r
-# (including negligence or otherwise) arising in any way out of the use\r
-# of this software, even if advised of the possibility of such damage.\r
-\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..inlinepatterns import HtmlPattern\r
-from ..util import parseBoolValue\r
-\r
-# Constants for quote education.\r
-punctClass = r"""[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]"""\r
-endOfWordClass = r"[\s.,;:!?)]"\r
-closeClass = r"[^\ \t\r\n\[\{\(\-\u0002\u0003]"\r
-\r
-openingQuotesBase = (\r
- '(\s' # a whitespace char\r
- '| ' # or a non-breaking space entity\r
- '|--' # or dashes\r
- '|–|—' # or unicode\r
- '|&[mn]dash;' # or named dash entities\r
- '|–|—' # or decimal entities\r
- ')'\r
-)\r
-\r
-# Special case if the very first character is a quote\r
-# followed by punctuation at a non-word-break. Close the quotes by brute force:\r
-singleQuoteStartRe = r"^'(?=%s\\B)" % punctClass\r
-doubleQuoteStartRe = r'^"(?=%s\\B)' % punctClass\r
-\r
-# Special case for double sets of quotes, e.g.:\r
-# <p>He said, "'Quoted' words in a larger quote."</p>\r
-doubleQuoteSetsRe = r""""'(?=\w)"""\r
-singleQuoteSetsRe = r"""'"(?=\w)"""\r
-\r
-# Get most opening double quotes:\r
-openingDoubleQuotesRegex = r'%s"(?=\w)' % openingQuotesBase\r
-\r
-# Double closing quotes:\r
-closingDoubleQuotesRegex = r'"(?=\s)'\r
-closingDoubleQuotesRegex2 = '(?<=%s)"' % closeClass\r
-\r
-# Get most opening single quotes:\r
-openingSingleQuotesRegex = r"%s'(?=\w)" % openingQuotesBase\r
-\r
-# Single closing quotes:\r
-closingSingleQuotesRegex = r"(?<=%s)'(?!\s|s\b|\d)" % closeClass\r
-closingSingleQuotesRegex2 = r"(?<=%s)'(\s|s\b)" % closeClass\r
-\r
-# All remaining quotes should be opening ones\r
-remainingSingleQuotesRegex = "'"\r
-remainingDoubleQuotesRegex = '"'\r
-\r
-lsquo, rsquo, ldquo, rdquo = '‘', '’', '“', '”'\r
-\r
-class SubstituteTextPattern(HtmlPattern):\r
- def __init__(self, pattern, replace, markdown_instance):\r
- """ Replaces matches with some text. """\r
- HtmlPattern.__init__(self, pattern)\r
- self.replace = replace\r
- self.markdown = markdown_instance\r
-\r
- def handleMatch(self, m):\r
- result = ''\r
- for part in self.replace:\r
- if isinstance(part, int):\r
- result += m.group(part)\r
- else:\r
- result += self.markdown.htmlStash.store(part, safe=True)\r
- return result\r
-\r
-class SmartyExtension(Extension):\r
- def __init__(self, configs):\r
- self.config = {\r
- 'smart_quotes': [True, 'Educate quotes'],\r
- 'smart_dashes': [True, 'Educate dashes'],\r
- 'smart_ellipses': [True, 'Educate ellipses']\r
- }\r
- for key, value in configs:\r
- self.setConfig(key, parseBoolValue(value))\r
-\r
- def _addPatterns(self, md, patterns, serie):\r
- for ind, pattern in enumerate(patterns):\r
- pattern += (md,)\r
- pattern = SubstituteTextPattern(*pattern)\r
- after = ('>smarty-%s-%d' % (serie, ind - 1) if ind else '>entity')\r
- name = 'smarty-%s-%d' % (serie, ind)\r
- md.inlinePatterns.add(name, pattern, after)\r
-\r
- def educateDashes(self, md):\r
- emDashesPattern = SubstituteTextPattern(r'(?<!-)---(?!-)', '—', md)\r
- enDashesPattern = SubstituteTextPattern(r'(?<!-)--(?!-)', '–', md)\r
- md.inlinePatterns.add('smarty-em-dashes', emDashesPattern, '>entity')\r
- md.inlinePatterns.add('smarty-en-dashes', enDashesPattern,\r
- '>smarty-em-dashes')\r
-\r
- def educateEllipses(self, md):\r
- ellipsesPattern = SubstituteTextPattern(r'(?<!\.)\.{3}(?!\.)', '…', md)\r
- md.inlinePatterns.add('smarty-ellipses', ellipsesPattern, '>entity')\r
-\r
- def educateQuotes(self, md):\r
- patterns = (\r
- (singleQuoteStartRe, (rsquo,)),\r
- (doubleQuoteStartRe, (rdquo,)),\r
- (doubleQuoteSetsRe, (ldquo + lsquo,)),\r
- (singleQuoteSetsRe, (lsquo + ldquo,)),\r
- (openingSingleQuotesRegex, (2, lsquo)),\r
- (closingSingleQuotesRegex, (rsquo,)),\r
- (closingSingleQuotesRegex2, (rsquo, 2)),\r
- (remainingSingleQuotesRegex, (lsquo,)),\r
- (openingDoubleQuotesRegex, (2, ldquo)),\r
- (closingDoubleQuotesRegex, (rdquo,)),\r
- (closingDoubleQuotesRegex2, (rdquo,)),\r
- (remainingDoubleQuotesRegex, (ldquo,))\r
- )\r
- self._addPatterns(md, patterns, 'quotes')\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- configs = self.getConfigs()\r
- if configs['smart_quotes']:\r
- self.educateQuotes(md)\r
- if configs['smart_dashes']:\r
- self.educateDashes(md)\r
- if configs['smart_ellipses']:\r
- self.educateEllipses(md)\r
- md.ESCAPED_CHARS.extend(['"', "'"])\r
-\r
-def makeExtension(configs=None):\r
- return SmartyExtension(configs)\r
+# -*- coding: utf-8 -*-
+'''
+Smarty extension for Python-Markdown
+====================================
+
+Adds conversion of ASCII dashes, quotes and ellipses to their HTML
+entity equivalents.
+
+See <https://pythonhosted.org/Markdown/extensions/smarty.html>
+for documentation.
+
+Author: 2013, Dmitry Shachnev <mitya57@gmail.com>
+
+All changes Copyright 2013-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+SmartyPants license:
+
+ Copyright (c) 2003 John Gruber <http://daringfireball.net/>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name "SmartyPants" nor the names of its contributors
+ may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ This software is provided by the copyright holders and contributors "as
+ is" and any express or implied warranties, including, but not limited
+ to, the implied warranties of merchantability and fitness for a
+ particular purpose are disclaimed. In no event shall the copyright
+ owner or contributors be liable for any direct, indirect, incidental,
+ special, exemplary, or consequential damages (including, but not
+ limited to, procurement of substitute goods or services; loss of use,
+ data, or profits; or business interruption) however caused and on any
+ theory of liability, whether in contract, strict liability, or tort
+ (including negligence or otherwise) arising in any way out of the use
+ of this software, even if advised of the possibility of such damage.
+
+
+smartypants.py license:
+
+ smartypants.py is a derivative work of SmartyPants.
+ Copyright (c) 2004, 2007 Chad Miller <http://web.chad.org/>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ This software is provided by the copyright holders and contributors "as
+ is" and any express or implied warranties, including, but not limited
+ to, the implied warranties of merchantability and fitness for a
+ particular purpose are disclaimed. In no event shall the copyright
+ owner or contributors be liable for any direct, indirect, incidental,
+ special, exemplary, or consequential damages (including, but not
+ limited to, procurement of substitute goods or services; loss of use,
+ data, or profits; or business interruption) however caused and on any
+ theory of liability, whether in contract, strict liability, or tort
+ (including negligence or otherwise) arising in any way out of the use
+ of this software, even if advised of the possibility of such damage.
+
+'''
+
+
+from __future__ import unicode_literals
+from . import Extension
+from ..inlinepatterns import HtmlPattern
+from ..odict import OrderedDict
+from ..treeprocessors import InlineProcessor
+from ..util import parseBoolValue
+
+# Constants for quote education.
+punctClass = r"""[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]"""
+endOfWordClass = r"[\s.,;:!?)]"
+closeClass = "[^\ \t\r\n\[\{\(\-\u0002\u0003]"
+
+openingQuotesBase = (
+ '(\s' # a whitespace char
+ '| ' # or a non-breaking space entity
+ '|--' # or dashes
+ '|–|—' # or unicode
+ '|&[mn]dash;' # or named dash entities
+ '|–|—' # or decimal entities
+ ')'
+)
+
+substitutions = {
+ 'mdash': '—',
+ 'ndash': '–',
+ 'ellipsis': '…',
+ 'left-angle-quote': '«',
+ 'right-angle-quote': '»',
+ 'left-single-quote': '‘',
+ 'right-single-quote': '’',
+ 'left-double-quote': '“',
+ 'right-double-quote': '”',
+}
+
+
+# Special case if the very first character is a quote
+# followed by punctuation at a non-word-break. Close the quotes by brute force:
+singleQuoteStartRe = r"^'(?=%s\B)" % punctClass
+doubleQuoteStartRe = r'^"(?=%s\B)' % punctClass
+
+# Special case for double sets of quotes, e.g.:
+# <p>He said, "'Quoted' words in a larger quote."</p>
+doubleQuoteSetsRe = r""""'(?=\w)"""
+singleQuoteSetsRe = r"""'"(?=\w)"""
+
+# Get most opening double quotes:
+openingDoubleQuotesRegex = r'%s"(?=\w)' % openingQuotesBase
+
+# Double closing quotes:
+closingDoubleQuotesRegex = r'"(?=\s)'
+closingDoubleQuotesRegex2 = '(?<=%s)"' % closeClass
+
+# Get most opening single quotes:
+openingSingleQuotesRegex = r"%s'(?=\w)" % openingQuotesBase
+
+# Single closing quotes:
+closingSingleQuotesRegex = r"(?<=%s)'(?!\s|s\b|\d)" % closeClass
+closingSingleQuotesRegex2 = r"(?<=%s)'(\s|s\b)" % closeClass
+
+# All remaining quotes should be opening ones
+remainingSingleQuotesRegex = "'"
+remainingDoubleQuotesRegex = '"'
+
+class SubstituteTextPattern(HtmlPattern):
+ def __init__(self, pattern, replace, markdown_instance):
+ """ Replaces matches with some text. """
+ HtmlPattern.__init__(self, pattern)
+ self.replace = replace
+ self.markdown = markdown_instance
+
+ def handleMatch(self, m):
+ result = ''
+ for part in self.replace:
+ if isinstance(part, int):
+ result += m.group(part)
+ else:
+ result += self.markdown.htmlStash.store(part, safe=True)
+ return result
+
+class SmartyExtension(Extension):
+ def __init__(self, *args, **kwargs):
+ self.config = {
+ 'smart_quotes': [True, 'Educate quotes'],
+ 'smart_angled_quotes': [False, 'Educate angled quotes'],
+ 'smart_dashes': [True, 'Educate dashes'],
+ 'smart_ellipses': [True, 'Educate ellipses'],
+ 'substitutions' : [{}, 'Overwrite default substitutions'],
+ }
+ super(SmartyExtension, self).__init__(*args, **kwargs)
+ self.substitutions = dict(substitutions)
+ self.substitutions.update(self.getConfig('substitutions', default={}))
+
+ def _addPatterns(self, md, patterns, serie):
+ for ind, pattern in enumerate(patterns):
+ pattern += (md,)
+ pattern = SubstituteTextPattern(*pattern)
+ after = ('>smarty-%s-%d' % (serie, ind - 1) if ind else '_begin')
+ name = 'smarty-%s-%d' % (serie, ind)
+ self.inlinePatterns.add(name, pattern, after)
+
+ def educateDashes(self, md):
+ emDashesPattern = SubstituteTextPattern(r'(?<!-)---(?!-)',
+ (self.substitutions['mdash'],), md)
+ enDashesPattern = SubstituteTextPattern(r'(?<!-)--(?!-)',
+ (self.substitutions['ndash'],), md)
+ self.inlinePatterns.add('smarty-em-dashes', emDashesPattern, '_begin')
+ self.inlinePatterns.add('smarty-en-dashes', enDashesPattern,
+ '>smarty-em-dashes')
+
+ def educateEllipses(self, md):
+ ellipsesPattern = SubstituteTextPattern(r'(?<!\.)\.{3}(?!\.)',
+ (self.substitutions['ellipsis'],), md)
+ self.inlinePatterns.add('smarty-ellipses', ellipsesPattern, '_begin')
+
+ def educateAngledQuotes(self, md):
+ leftAngledQuotePattern = SubstituteTextPattern(r'\<\<',
+ (self.substitutions['left-angle-quote'],), md)
+ rightAngledQuotePattern = SubstituteTextPattern(r'\>\>',
+ (self.substitutions['right-angle-quote'],), md)
+ self.inlinePatterns.add('smarty-left-angle-quotes',
+ leftAngledQuotePattern, '_begin')
+ self.inlinePatterns.add('smarty-right-angle-quotes',
+ rightAngledQuotePattern, '>smarty-left-angle-quotes')
+
+ def educateQuotes(self, md):
+ configs = self.getConfigs()
+ lsquo = self.substitutions['left-single-quote']
+ rsquo = self.substitutions['right-single-quote']
+ ldquo = self.substitutions['left-double-quote']
+ rdquo = self.substitutions['right-double-quote']
+ patterns = (
+ (singleQuoteStartRe, (rsquo,)),
+ (doubleQuoteStartRe, (rdquo,)),
+ (doubleQuoteSetsRe, (ldquo + lsquo,)),
+ (singleQuoteSetsRe, (lsquo + ldquo,)),
+ (openingSingleQuotesRegex, (2, lsquo)),
+ (closingSingleQuotesRegex, (rsquo,)),
+ (closingSingleQuotesRegex2, (rsquo, 2)),
+ (remainingSingleQuotesRegex, (lsquo,)),
+ (openingDoubleQuotesRegex, (2, ldquo)),
+ (closingDoubleQuotesRegex, (rdquo,)),
+ (closingDoubleQuotesRegex2, (rdquo,)),
+ (remainingDoubleQuotesRegex, (ldquo,))
+ )
+ self._addPatterns(md, patterns, 'quotes')
+
+ def extendMarkdown(self, md, md_globals):
+ configs = self.getConfigs()
+ self.inlinePatterns = OrderedDict()
+ if configs['smart_ellipses']:
+ self.educateEllipses(md)
+ if configs['smart_quotes']:
+ self.educateQuotes(md)
+ if configs['smart_angled_quotes']:
+ self.educateAngledQuotes(md)
+ if configs['smart_dashes']:
+ self.educateDashes(md)
+ inlineProcessor = InlineProcessor(md)
+ inlineProcessor.inlinePatterns = self.inlinePatterns
+ md.treeprocessors.add('smarty', inlineProcessor, '_end')
+ md.ESCAPED_CHARS.extend(['"', "'"])
+
+def makeExtension(*args, **kwargs):
+ return SmartyExtension(*args, **kwargs)
-"""\r
-Tables Extension for Python-Markdown\r
-====================================\r
-\r
-Added parsing of tables to Python-Markdown.\r
-\r
-A simple example:\r
-\r
- First Header | Second Header\r
- ------------- | -------------\r
- Content Cell | Content Cell\r
- Content Cell | Content Cell\r
-\r
-Copyright 2009 - [Waylan Limberg](http://achinghead.com)\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..blockprocessors import BlockProcessor\r
-from ..util import etree\r
-\r
-class TableProcessor(BlockProcessor):\r
- """ Process Tables. """\r
-\r
- def test(self, parent, block):\r
- rows = block.split('\n')\r
- return (len(rows) > 2 and '|' in rows[0] and \r
- '|' in rows[1] and '-' in rows[1] and \r
- rows[1].strip()[0] in ['|', ':', '-'])\r
-\r
- def run(self, parent, blocks):\r
- """ Parse a table block and build table. """\r
- block = blocks.pop(0).split('\n')\r
- header = block[0].strip()\r
- seperator = block[1].strip()\r
- rows = block[2:]\r
- # Get format type (bordered by pipes or not)\r
- border = False\r
- if header.startswith('|'):\r
- border = True\r
- # Get alignment of columns\r
- align = []\r
- for c in self._split_row(seperator, border):\r
- if c.startswith(':') and c.endswith(':'):\r
- align.append('center')\r
- elif c.startswith(':'):\r
- align.append('left')\r
- elif c.endswith(':'):\r
- align.append('right')\r
- else:\r
- align.append(None)\r
- # Build table\r
- table = etree.SubElement(parent, 'table')\r
- thead = etree.SubElement(table, 'thead')\r
- self._build_row(header, thead, align, border)\r
- tbody = etree.SubElement(table, 'tbody')\r
- for row in rows:\r
- self._build_row(row.strip(), tbody, align, border)\r
-\r
- def _build_row(self, row, parent, align, border):\r
- """ Given a row of text, build table cells. """\r
- tr = etree.SubElement(parent, 'tr')\r
- tag = 'td'\r
- if parent.tag == 'thead':\r
- tag = 'th'\r
- cells = self._split_row(row, border)\r
- # We use align here rather than cells to ensure every row \r
- # contains the same number of columns.\r
- for i, a in enumerate(align):\r
- c = etree.SubElement(tr, tag)\r
- try:\r
- c.text = cells[i].strip()\r
- except IndexError:\r
- c.text = ""\r
- if a:\r
- c.set('align', a)\r
-\r
- def _split_row(self, row, border):\r
- """ split a row of text into list of cells. """\r
- if border:\r
- if row.startswith('|'):\r
- row = row[1:]\r
- if row.endswith('|'):\r
- row = row[:-1]\r
- return row.split('|')\r
-\r
-\r
-class TableExtension(Extension):\r
- """ Add tables to Markdown. """\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- """ Add an instance of TableProcessor to BlockParser. """\r
- md.parser.blockprocessors.add('table', \r
- TableProcessor(md.parser),\r
- '<hashheader')\r
-\r
-\r
-def makeExtension(configs={}):\r
- return TableExtension(configs=configs)\r
+"""
+Tables Extension for Python-Markdown
+====================================
+
+Added parsing of tables to Python-Markdown.
+
+See <https://pythonhosted.org/Markdown/extensions/tables.html>
+for documentation.
+
+Original code Copyright 2009 [Waylan Limberg](http://achinghead.com)
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..blockprocessors import BlockProcessor
+from ..util import etree
+
+class TableProcessor(BlockProcessor):
+ """ Process Tables. """
+
+ def test(self, parent, block):
+ rows = block.split('\n')
+ return (len(rows) > 2 and '|' in rows[0] and
+ '|' in rows[1] and '-' in rows[1] and
+ rows[1].strip()[0] in ['|', ':', '-'])
+
+ def run(self, parent, blocks):
+ """ Parse a table block and build table. """
+ block = blocks.pop(0).split('\n')
+ header = block[0].strip()
+ seperator = block[1].strip()
+ rows = block[2:]
+ # Get format type (bordered by pipes or not)
+ border = False
+ if header.startswith('|'):
+ border = True
+ # Get alignment of columns
+ align = []
+ for c in self._split_row(seperator, border):
+ if c.startswith(':') and c.endswith(':'):
+ align.append('center')
+ elif c.startswith(':'):
+ align.append('left')
+ elif c.endswith(':'):
+ align.append('right')
+ else:
+ align.append(None)
+ # Build table
+ table = etree.SubElement(parent, 'table')
+ thead = etree.SubElement(table, 'thead')
+ self._build_row(header, thead, align, border)
+ tbody = etree.SubElement(table, 'tbody')
+ for row in rows:
+ self._build_row(row.strip(), tbody, align, border)
+
+ def _build_row(self, row, parent, align, border):
+ """ Given a row of text, build table cells. """
+ tr = etree.SubElement(parent, 'tr')
+ tag = 'td'
+ if parent.tag == 'thead':
+ tag = 'th'
+ cells = self._split_row(row, border)
+ # We use align here rather than cells to ensure every row
+ # contains the same number of columns.
+ for i, a in enumerate(align):
+ c = etree.SubElement(tr, tag)
+ try:
+ c.text = cells[i].strip()
+ except IndexError: #pragma: no cover
+ c.text = ""
+ if a:
+ c.set('align', a)
+
+ def _split_row(self, row, border):
+ """ split a row of text into list of cells. """
+ if border:
+ if row.startswith('|'):
+ row = row[1:]
+ if row.endswith('|'):
+ row = row[:-1]
+ return row.split('|')
+
+
+class TableExtension(Extension):
+ """ Add tables to Markdown. """
+
+ def extendMarkdown(self, md, md_globals):
+ """ Add an instance of TableProcessor to BlockParser. """
+ md.parser.blockprocessors.add('table',
+ TableProcessor(md.parser),
+ '<hashheader')
+
+
+def makeExtension(*args, **kwargs):
+ return TableExtension(*args, **kwargs)
+
-"""\r
-Table of Contents Extension for Python-Markdown\r
-* * *\r
-\r
-(c) 2008 [Jack Miller](http://codezen.org)\r
-\r
-Dependencies:\r
-* [Markdown 2.1+](http://packages.python.org/Markdown/)\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..treeprocessors import Treeprocessor\r
-from ..util import etree, parseBoolValue, AMP_SUBSTITUTE\r
-from .headerid import slugify, unique, itertext, stashedHTML2text\r
-import re\r
-\r
-\r
-def order_toc_list(toc_list):\r
- """Given an unsorted list with errors and skips, return a nested one.\r
- [{'level': 1}, {'level': 2}]\r
- =>\r
- [{'level': 1, 'children': [{'level': 2, 'children': []}]}]\r
- \r
- A wrong list is also converted:\r
- [{'level': 2}, {'level': 1}]\r
- =>\r
- [{'level': 2, 'children': []}, {'level': 1, 'children': []}]\r
- """\r
- \r
- def build_correct(remaining_list, prev_elements=[{'level': 1000}]):\r
- \r
- if not remaining_list:\r
- return [], []\r
- \r
- current = remaining_list.pop(0)\r
- if not 'children' in current.keys():\r
- current['children'] = []\r
- \r
- if not prev_elements:\r
- # This happens for instance with [8, 1, 1], ie. when some\r
- # header level is outside a scope. We treat it as a\r
- # top-level\r
- next_elements, children = build_correct(remaining_list, [current])\r
- current['children'].append(children)\r
- return [current] + next_elements, []\r
- \r
- prev_element = prev_elements.pop()\r
- children = []\r
- next_elements = []\r
- # Is current part of the child list or next list?\r
- if current['level'] > prev_element['level']:\r
- #print "%d is a child of %d" % (current['level'], prev_element['level'])\r
- prev_elements.append(prev_element)\r
- prev_elements.append(current)\r
- prev_element['children'].append(current)\r
- next_elements2, children2 = build_correct(remaining_list, prev_elements)\r
- children += children2\r
- next_elements += next_elements2\r
- else:\r
- #print "%d is ancestor of %d" % (current['level'], prev_element['level'])\r
- if not prev_elements:\r
- #print "No previous elements, so appending to the next set"\r
- next_elements.append(current)\r
- prev_elements = [current]\r
- next_elements2, children2 = build_correct(remaining_list, prev_elements)\r
- current['children'].extend(children2)\r
- else:\r
- #print "Previous elements, comparing to those first"\r
- remaining_list.insert(0, current)\r
- next_elements2, children2 = build_correct(remaining_list, prev_elements)\r
- children.extend(children2)\r
- next_elements += next_elements2\r
- \r
- return next_elements, children\r
- \r
- ordered_list, __ = build_correct(toc_list)\r
- return ordered_list\r
-\r
-\r
-class TocTreeprocessor(Treeprocessor):\r
- \r
- # Iterator wrapper to get parent and child all at once\r
- def iterparent(self, root):\r
- for parent in root.getiterator():\r
- for child in parent:\r
- yield parent, child\r
- \r
- def add_anchor(self, c, elem_id): #@ReservedAssignment\r
- anchor = etree.Element("a")\r
- anchor.text = c.text\r
- anchor.attrib["href"] = "#" + elem_id\r
- anchor.attrib["class"] = "toclink"\r
- c.text = ""\r
- for elem in c.getchildren():\r
- anchor.append(elem)\r
- c.remove(elem)\r
- c.append(anchor)\r
-\r
- def add_permalink(self, c, elem_id):\r
- permalink = etree.Element("a")\r
- permalink.text = ("%spara;" % AMP_SUBSTITUTE\r
- if self.use_permalinks is True else self.use_permalinks)\r
- permalink.attrib["href"] = "#" + elem_id\r
- permalink.attrib["class"] = "headerlink"\r
- permalink.attrib["title"] = "Permanent link"\r
- c.append(permalink)\r
- \r
- def build_toc_etree(self, div, toc_list):\r
- # Add title to the div\r
- if self.config["title"]:\r
- header = etree.SubElement(div, "span")\r
- header.attrib["class"] = "toctitle"\r
- header.text = self.config["title"]\r
-\r
- def build_etree_ul(toc_list, parent):\r
- ul = etree.SubElement(parent, "ul")\r
- for item in toc_list:\r
- # List item link, to be inserted into the toc div\r
- li = etree.SubElement(ul, "li")\r
- link = etree.SubElement(li, "a")\r
- link.text = item.get('name', '')\r
- link.attrib["href"] = '#' + item.get('id', '')\r
- if item['children']:\r
- build_etree_ul(item['children'], li)\r
- return ul\r
- \r
- return build_etree_ul(toc_list, div)\r
- \r
- def run(self, doc):\r
-\r
- div = etree.Element("div")\r
- div.attrib["class"] = "toc"\r
- header_rgx = re.compile("[Hh][123456]")\r
- \r
- self.use_anchors = parseBoolValue(self.config["anchorlink"])\r
- self.use_permalinks = parseBoolValue(self.config["permalink"], False)\r
- if self.use_permalinks is None:\r
- self.use_permalinks = self.config["permalink"]\r
- \r
- # Get a list of id attributes\r
- used_ids = set()\r
- for c in doc.getiterator():\r
- if "id" in c.attrib:\r
- used_ids.add(c.attrib["id"])\r
-\r
- toc_list = []\r
- marker_found = False\r
- for (p, c) in self.iterparent(doc):\r
- text = ''.join(itertext(c)).strip()\r
- if not text:\r
- continue\r
-\r
- # To keep the output from screwing up the\r
- # validation by putting a <div> inside of a <p>\r
- # we actually replace the <p> in its entirety.\r
- # We do not allow the marker inside a header as that\r
- # would causes an enless loop of placing a new TOC \r
- # inside previously generated TOC.\r
- if c.text and c.text.strip() == self.config["marker"] and \\r
- not header_rgx.match(c.tag) and c.tag not in ['pre', 'code']:\r
- for i in range(len(p)):\r
- if p[i] == c:\r
- p[i] = div\r
- break\r
- marker_found = True\r
- \r
- if header_rgx.match(c.tag):\r
- \r
- # Do not override pre-existing ids \r
- if not "id" in c.attrib:\r
- elem_id = stashedHTML2text(text, self.markdown)\r
- elem_id = unique(self.config["slugify"](elem_id, '-'), used_ids)\r
- c.attrib["id"] = elem_id\r
- else:\r
- elem_id = c.attrib["id"]\r
-\r
- tag_level = int(c.tag[-1])\r
- \r
- toc_list.append({'level': tag_level,\r
- 'id': elem_id,\r
- 'name': text})\r
-\r
- if self.use_anchors:\r
- self.add_anchor(c, elem_id)\r
- if self.use_permalinks:\r
- self.add_permalink(c, elem_id)\r
- \r
- toc_list_nested = order_toc_list(toc_list)\r
- self.build_toc_etree(div, toc_list_nested)\r
- prettify = self.markdown.treeprocessors.get('prettify')\r
- if prettify: prettify.run(div)\r
- if not marker_found:\r
- # serialize and attach to markdown instance.\r
- toc = self.markdown.serializer(div)\r
- for pp in self.markdown.postprocessors.values():\r
- toc = pp.run(toc)\r
- self.markdown.toc = toc\r
-\r
-\r
-class TocExtension(Extension):\r
- \r
- TreeProcessorClass = TocTreeprocessor\r
- \r
- def __init__(self, configs=[]):\r
- self.config = { "marker" : ["[TOC]", \r
- "Text to find and replace with Table of Contents -"\r
- "Defaults to \"[TOC]\""],\r
- "slugify" : [slugify,\r
- "Function to generate anchors based on header text-"\r
- "Defaults to the headerid ext's slugify function."],\r
- "title" : [None,\r
- "Title to insert into TOC <div> - "\r
- "Defaults to None"],\r
- "anchorlink" : [0,\r
- "1 if header should be a self link"\r
- "Defaults to 0"],\r
- "permalink" : [0,\r
- "1 or link text if a Sphinx-style permalink should be added",\r
- "Defaults to 0"]\r
- }\r
-\r
- for key, value in configs:\r
- self.setConfig(key, value)\r
-\r
- def extendMarkdown(self, md, md_globals):\r
- tocext = self.TreeProcessorClass(md)\r
- tocext.config = self.getConfigs()\r
- # Headerid ext is set to '>prettify'. With this set to '_end',\r
- # it should always come after headerid ext (and honor ids assinged \r
- # by the header id extension) if both are used. Same goes for \r
- # attr_list extension. This must come last because we don't want\r
- # to redefine ids after toc is created. But we do want toc prettified.\r
- md.treeprocessors.add("toc", tocext, "_end")\r
-\r
-\r
-def makeExtension(configs={}):\r
- return TocExtension(configs=configs)\r
+"""
+Table of Contents Extension for Python-Markdown
+===============================================
+
+See <https://pythonhosted.org/Markdown/extensions/toc.html>
+for documentation.
+
+Oringinal code Copyright 2008 [Jack Miller](http://codezen.org)
+
+All changes Copyright 2008-2014 The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..treeprocessors import Treeprocessor
+from ..util import etree, parseBoolValue, AMP_SUBSTITUTE
+from .headerid import slugify, unique, itertext, stashedHTML2text
+import re
+
+
+def order_toc_list(toc_list):
+ """Given an unsorted list with errors and skips, return a nested one.
+ [{'level': 1}, {'level': 2}]
+ =>
+ [{'level': 1, 'children': [{'level': 2, 'children': []}]}]
+
+ A wrong list is also converted:
+ [{'level': 2}, {'level': 1}]
+ =>
+ [{'level': 2, 'children': []}, {'level': 1, 'children': []}]
+ """
+
+ def build_correct(remaining_list, prev_elements=[{'level': 1000}]):
+
+ if not remaining_list:
+ return [], []
+
+ current = remaining_list.pop(0)
+ if not 'children' in current.keys():
+ current['children'] = []
+
+ if not prev_elements:
+ # This happens for instance with [8, 1, 1], ie. when some
+ # header level is outside a scope. We treat it as a
+ # top-level
+ next_elements, children = build_correct(remaining_list, [current])
+ current['children'].append(children)
+ return [current] + next_elements, []
+
+ prev_element = prev_elements.pop()
+ children = []
+ next_elements = []
+ # Is current part of the child list or next list?
+ if current['level'] > prev_element['level']:
+ #print "%d is a child of %d" % (current['level'], prev_element['level'])
+ prev_elements.append(prev_element)
+ prev_elements.append(current)
+ prev_element['children'].append(current)
+ next_elements2, children2 = build_correct(remaining_list, prev_elements)
+ children += children2
+ next_elements += next_elements2
+ else:
+ #print "%d is ancestor of %d" % (current['level'], prev_element['level'])
+ if not prev_elements:
+ #print "No previous elements, so appending to the next set"
+ next_elements.append(current)
+ prev_elements = [current]
+ next_elements2, children2 = build_correct(remaining_list, prev_elements)
+ current['children'].extend(children2)
+ else:
+ #print "Previous elements, comparing to those first"
+ remaining_list.insert(0, current)
+ next_elements2, children2 = build_correct(remaining_list, prev_elements)
+ children.extend(children2)
+ next_elements += next_elements2
+
+ return next_elements, children
+
+ ordered_list, __ = build_correct(toc_list)
+ return ordered_list
+
+
+class TocTreeprocessor(Treeprocessor):
+
+ # Iterator wrapper to get parent and child all at once
+ def iterparent(self, root):
+ for parent in root.getiterator():
+ for child in parent:
+ yield parent, child
+
+ def add_anchor(self, c, elem_id): #@ReservedAssignment
+ anchor = etree.Element("a")
+ anchor.text = c.text
+ anchor.attrib["href"] = "#" + elem_id
+ anchor.attrib["class"] = "toclink"
+ c.text = ""
+ for elem in c.getchildren():
+ anchor.append(elem)
+ c.remove(elem)
+ c.append(anchor)
+
+ def add_permalink(self, c, elem_id):
+ permalink = etree.Element("a")
+ permalink.text = ("%spara;" % AMP_SUBSTITUTE
+ if self.use_permalinks is True else self.use_permalinks)
+ permalink.attrib["href"] = "#" + elem_id
+ permalink.attrib["class"] = "headerlink"
+ permalink.attrib["title"] = "Permanent link"
+ c.append(permalink)
+
+ def build_toc_etree(self, div, toc_list):
+ # Add title to the div
+ if self.config["title"]:
+ header = etree.SubElement(div, "span")
+ header.attrib["class"] = "toctitle"
+ header.text = self.config["title"]
+
+ def build_etree_ul(toc_list, parent):
+ ul = etree.SubElement(parent, "ul")
+ for item in toc_list:
+ # List item link, to be inserted into the toc div
+ li = etree.SubElement(ul, "li")
+ link = etree.SubElement(li, "a")
+ link.text = item.get('name', '')
+ link.attrib["href"] = '#' + item.get('id', '')
+ if item['children']:
+ build_etree_ul(item['children'], li)
+ return ul
+
+ return build_etree_ul(toc_list, div)
+
+ def run(self, doc):
+
+ div = etree.Element("div")
+ div.attrib["class"] = "toc"
+ header_rgx = re.compile("[Hh][123456]")
+
+ self.use_anchors = parseBoolValue(self.config["anchorlink"])
+ self.use_permalinks = parseBoolValue(self.config["permalink"], False)
+ if self.use_permalinks is None:
+ self.use_permalinks = self.config["permalink"]
+
+ # Get a list of id attributes
+ used_ids = set()
+ for c in doc.getiterator():
+ if "id" in c.attrib:
+ used_ids.add(c.attrib["id"])
+
+ toc_list = []
+ marker_found = False
+ for (p, c) in self.iterparent(doc):
+ text = ''.join(itertext(c)).strip()
+ if not text:
+ continue
+
+ # To keep the output from screwing up the
+ # validation by putting a <div> inside of a <p>
+ # we actually replace the <p> in its entirety.
+ # We do not allow the marker inside a header as that
+ # would causes an enless loop of placing a new TOC
+ # inside previously generated TOC.
+ if c.text and c.text.strip() == self.config["marker"] and \
+ not header_rgx.match(c.tag) and c.tag not in ['pre', 'code']:
+ for i in range(len(p)):
+ if p[i] == c:
+ p[i] = div
+ break
+ marker_found = True
+
+ if header_rgx.match(c.tag):
+
+ # Do not override pre-existing ids
+ if not "id" in c.attrib:
+ elem_id = stashedHTML2text(text, self.markdown)
+ elem_id = unique(self.config["slugify"](elem_id, '-'), used_ids)
+ c.attrib["id"] = elem_id
+ else:
+ elem_id = c.attrib["id"]
+
+ tag_level = int(c.tag[-1])
+
+ toc_list.append({'level': tag_level,
+ 'id': elem_id,
+ 'name': text})
+
+ if self.use_anchors:
+ self.add_anchor(c, elem_id)
+ if self.use_permalinks:
+ self.add_permalink(c, elem_id)
+
+ toc_list_nested = order_toc_list(toc_list)
+ self.build_toc_etree(div, toc_list_nested)
+ prettify = self.markdown.treeprocessors.get('prettify')
+ if prettify: prettify.run(div)
+ if not marker_found:
+ # serialize and attach to markdown instance.
+ toc = self.markdown.serializer(div)
+ for pp in self.markdown.postprocessors.values():
+ toc = pp.run(toc)
+ self.markdown.toc = toc
+
+
+class TocExtension(Extension):
+
+ TreeProcessorClass = TocTreeprocessor
+
+ def __init__(self, *args, **kwargs):
+ self.config = {
+ "marker" : ["[TOC]",
+ "Text to find and replace with Table of Contents - "
+ "Defaults to \"[TOC]\""],
+ "slugify" : [slugify,
+ "Function to generate anchors based on header text - "
+ "Defaults to the headerid ext's slugify function."],
+ "title" : [None,
+ "Title to insert into TOC <div> - "
+ "Defaults to None"],
+ "anchorlink" : [0,
+ "1 if header should be a self link - "
+ "Defaults to 0"],
+ "permalink" : [0,
+ "1 or link text if a Sphinx-style permalink should be added - "
+ "Defaults to 0"]
+ }
+
+ super(TocExtension, self).__init__(*args, **kwargs)
+
+ def extendMarkdown(self, md, md_globals):
+ tocext = self.TreeProcessorClass(md)
+ tocext.config = self.getConfigs()
+ # Headerid ext is set to '>prettify'. With this set to '_end',
+ # it should always come after headerid ext (and honor ids assinged
+ # by the header id extension) if both are used. Same goes for
+ # attr_list extension. This must come last because we don't want
+ # to redefine ids after toc is created. But we do want toc prettified.
+ md.treeprocessors.add("toc", tocext, "_end")
+
+
+def makeExtension(*args, **kwargs):
+ return TocExtension(*args, **kwargs)
-'''\r
-WikiLinks Extension for Python-Markdown\r
-======================================\r
-\r
-Converts [[WikiLinks]] to relative links. Requires Python-Markdown 2.0+\r
-\r
-Basic usage:\r
-\r
- >>> import markdown\r
- >>> text = "Some text with a [[WikiLink]]."\r
- >>> html = markdown.markdown(text, ['wikilinks'])\r
- >>> print html\r
- <p>Some text with a <a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>\r
-\r
-Whitespace behavior:\r
-\r
- >>> print markdown.markdown('[[ foo bar_baz ]]', ['wikilinks'])\r
- <p><a class="wikilink" href="/foo_bar_baz/">foo bar_baz</a></p>\r
- >>> print markdown.markdown('foo [[ ]] bar', ['wikilinks'])\r
- <p>foo bar</p>\r
-\r
-To define custom settings the simple way:\r
-\r
- >>> print markdown.markdown(text, \r
- ... ['wikilinks(base_url=/wiki/,end_url=.html,html_class=foo)']\r
- ... )\r
- <p>Some text with a <a class="foo" href="/wiki/WikiLink.html">WikiLink</a>.</p>\r
- \r
-Custom settings the complex way:\r
-\r
- >>> md = markdown.Markdown(\r
- ... extensions = ['wikilinks'], \r
- ... extension_configs = {'wikilinks': [\r
- ... ('base_url', 'http://example.com/'), \r
- ... ('end_url', '.html'),\r
- ... ('html_class', '') ]},\r
- ... safe_mode = True)\r
- >>> print md.convert(text)\r
- <p>Some text with a <a href="http://example.com/WikiLink.html">WikiLink</a>.</p>\r
-\r
-Use MetaData with mdx_meta.py (Note the blank html_class in MetaData):\r
-\r
- >>> text = """wiki_base_url: http://example.com/\r
- ... wiki_end_url: .html\r
- ... wiki_html_class:\r
- ...\r
- ... Some text with a [[WikiLink]]."""\r
- >>> md = markdown.Markdown(extensions=['meta', 'wikilinks'])\r
- >>> print md.convert(text)\r
- <p>Some text with a <a href="http://example.com/WikiLink.html">WikiLink</a>.</p>\r
-\r
-MetaData should not carry over to next document:\r
-\r
- >>> print md.convert("No [[MetaData]] here.")\r
- <p>No <a class="wikilink" href="/MetaData/">MetaData</a> here.</p>\r
-\r
-Define a custom URL builder:\r
-\r
- >>> def my_url_builder(label, base, end):\r
- ... return '/bar/'\r
- >>> md = markdown.Markdown(extensions=['wikilinks'], \r
- ... extension_configs={'wikilinks' : [('build_url', my_url_builder)]})\r
- >>> print md.convert('[[foo]]')\r
- <p><a class="wikilink" href="/bar/">foo</a></p>\r
-\r
-From the command line:\r
-\r
- python markdown.py -x wikilinks(base_url=http://example.com/,end_url=.html,html_class=foo) src.txt\r
-\r
-By [Waylan Limberg](http://achinghead.com/).\r
-\r
-License: [BSD](http://www.opensource.org/licenses/bsd-license.php) \r
-\r
-Dependencies:\r
-* [Python 2.3+](http://python.org)\r
-* [Markdown 2.0+](http://packages.python.org/Markdown/)\r
-'''\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import Extension\r
-from ..inlinepatterns import Pattern\r
-from ..util import etree\r
-import re\r
-\r
-def build_url(label, base, end):\r
- """ Build a url from the label, a base, and an end. """\r
- clean_label = re.sub(r'([ ]+_)|(_[ ]+)|([ ]+)', '_', label)\r
- return '%s%s%s'% (base, clean_label, end)\r
-\r
-\r
-class WikiLinkExtension(Extension):\r
- def __init__(self, configs):\r
- # set extension defaults\r
- self.config = {\r
- 'base_url' : ['/', 'String to append to beginning or URL.'],\r
- 'end_url' : ['/', 'String to append to end of URL.'],\r
- 'html_class' : ['wikilink', 'CSS hook. Leave blank for none.'],\r
- 'build_url' : [build_url, 'Callable formats URL from label.'],\r
- }\r
- configs = dict(configs) or {}\r
- # Override defaults with user settings\r
- for key, value in configs.items():\r
- self.setConfig(key, value)\r
- \r
- def extendMarkdown(self, md, md_globals):\r
- self.md = md\r
- \r
- # append to end of inline patterns\r
- WIKILINK_RE = r'\[\[([\w0-9_ -]+)\]\]'\r
- wikilinkPattern = WikiLinks(WIKILINK_RE, self.getConfigs())\r
- wikilinkPattern.md = md\r
- md.inlinePatterns.add('wikilink', wikilinkPattern, "<not_strong")\r
-\r
-\r
-class WikiLinks(Pattern):\r
- def __init__(self, pattern, config):\r
- super(WikiLinks, self).__init__(pattern)\r
- self.config = config\r
- \r
- def handleMatch(self, m):\r
- if m.group(2).strip():\r
- base_url, end_url, html_class = self._getMeta()\r
- label = m.group(2).strip()\r
- url = self.config['build_url'](label, base_url, end_url)\r
- a = etree.Element('a')\r
- a.text = label \r
- a.set('href', url)\r
- if html_class:\r
- a.set('class', html_class)\r
- else:\r
- a = ''\r
- return a\r
-\r
- def _getMeta(self):\r
- """ Return meta data or config data. """\r
- base_url = self.config['base_url']\r
- end_url = self.config['end_url']\r
- html_class = self.config['html_class']\r
- if hasattr(self.md, 'Meta'):\r
- if 'wiki_base_url' in self.md.Meta:\r
- base_url = self.md.Meta['wiki_base_url'][0]\r
- if 'wiki_end_url' in self.md.Meta:\r
- end_url = self.md.Meta['wiki_end_url'][0]\r
- if 'wiki_html_class' in self.md.Meta:\r
- html_class = self.md.Meta['wiki_html_class'][0]\r
- return base_url, end_url, html_class\r
- \r
-\r
-def makeExtension(configs=None) :\r
- return WikiLinkExtension(configs=configs)\r
+'''
+WikiLinks Extension for Python-Markdown
+======================================
+
+Converts [[WikiLinks]] to relative links.
+
+See <https://pythonhosted.org/Markdown/extensions/wikilinks.html>
+for documentation.
+
+Original code Copyright [Waylan Limberg](http://achinghead.com/).
+
+All changes Copyright The Python Markdown Project
+
+License: [BSD](http://www.opensource.org/licenses/bsd-license.php)
+
+'''
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import Extension
+from ..inlinepatterns import Pattern
+from ..util import etree
+import re
+
+def build_url(label, base, end):
+ """ Build a url from the label, a base, and an end. """
+ clean_label = re.sub(r'([ ]+_)|(_[ ]+)|([ ]+)', '_', label)
+ return '%s%s%s'% (base, clean_label, end)
+
+
+class WikiLinkExtension(Extension):
+
+ def __init__ (self, *args, **kwargs):
+ self.config = {
+ 'base_url' : ['/', 'String to append to beginning or URL.'],
+ 'end_url' : ['/', 'String to append to end of URL.'],
+ 'html_class' : ['wikilink', 'CSS hook. Leave blank for none.'],
+ 'build_url' : [build_url, 'Callable formats URL from label.'],
+ }
+
+ super(WikiLinkExtension, self).__init__(*args, **kwargs)
+
+ def extendMarkdown(self, md, md_globals):
+ self.md = md
+
+ # append to end of inline patterns
+ WIKILINK_RE = r'\[\[([\w0-9_ -]+)\]\]'
+ wikilinkPattern = WikiLinks(WIKILINK_RE, self.getConfigs())
+ wikilinkPattern.md = md
+ md.inlinePatterns.add('wikilink', wikilinkPattern, "<not_strong")
+
+
+class WikiLinks(Pattern):
+ def __init__(self, pattern, config):
+ super(WikiLinks, self).__init__(pattern)
+ self.config = config
+
+ def handleMatch(self, m):
+ if m.group(2).strip():
+ base_url, end_url, html_class = self._getMeta()
+ label = m.group(2).strip()
+ url = self.config['build_url'](label, base_url, end_url)
+ a = etree.Element('a')
+ a.text = label
+ a.set('href', url)
+ if html_class:
+ a.set('class', html_class)
+ else:
+ a = ''
+ return a
+
+ def _getMeta(self):
+ """ Return meta data or config data. """
+ base_url = self.config['base_url']
+ end_url = self.config['end_url']
+ html_class = self.config['html_class']
+ if hasattr(self.md, 'Meta'):
+ if 'wiki_base_url' in self.md.Meta:
+ base_url = self.md.Meta['wiki_base_url'][0]
+ if 'wiki_end_url' in self.md.Meta:
+ end_url = self.md.Meta['wiki_end_url'][0]
+ if 'wiki_html_class' in self.md.Meta:
+ html_class = self.md.Meta['wiki_html_class'][0]
+ return base_url, end_url, html_class
+
+
+def makeExtension(*args, **kwargs) :
+ return WikiLinkExtension(*args, **kwargs)
-"""\r
-INLINE PATTERNS\r
-=============================================================================\r
-\r
-Inline patterns such as *emphasis* are handled by means of auxiliary\r
-objects, one per pattern. Pattern objects must be instances of classes\r
-that extend markdown.Pattern. Each pattern object uses a single regular\r
-expression and needs support the following methods:\r
-\r
- pattern.getCompiledRegExp() # returns a regular expression\r
-\r
- pattern.handleMatch(m) # takes a match object and returns\r
- # an ElementTree element or just plain text\r
-\r
-All of python markdown's built-in patterns subclass from Pattern,\r
-but you can add additional patterns that don't.\r
-\r
-Also note that all the regular expressions used by inline must\r
-capture the whole block. For this reason, they all start with\r
-'^(.*)' and end with '(.*)!'. In case with built-in expression\r
-Pattern takes care of adding the "^(.*)" and "(.*)!".\r
-\r
-Finally, the order in which regular expressions are applied is very\r
-important - e.g. if we first replace http://.../ links with <a> tags\r
-and _then_ try to replace inline html, we would end up with a mess.\r
-So, we apply the expressions in the following order:\r
-\r
-* escape and backticks have to go before everything else, so\r
- that we can preempt any markdown patterns by escaping them.\r
-\r
-* then we handle auto-links (must be done before inline html)\r
-\r
-* then we handle inline HTML. At this point we will simply\r
- replace all inline HTML strings with a placeholder and add\r
- the actual HTML to a hash.\r
-\r
-* then inline images (must be done before links)\r
-\r
-* then bracketed links, first regular then reference-style\r
-\r
-* finally we apply strong and emphasis\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import util\r
-from . import odict\r
-import re\r
-try:\r
- from urllib.parse import urlparse, urlunparse\r
-except ImportError:\r
- from urlparse import urlparse, urlunparse\r
-try:\r
- from html import entities\r
-except ImportError:\r
- import htmlentitydefs as entities\r
-\r
-\r
-def build_inlinepatterns(md_instance, **kwargs):\r
- """ Build the default set of inline patterns for Markdown. """\r
- inlinePatterns = odict.OrderedDict()\r
- inlinePatterns["backtick"] = BacktickPattern(BACKTICK_RE)\r
- inlinePatterns["escape"] = EscapePattern(ESCAPE_RE, md_instance)\r
- inlinePatterns["reference"] = ReferencePattern(REFERENCE_RE, md_instance)\r
- inlinePatterns["link"] = LinkPattern(LINK_RE, md_instance)\r
- inlinePatterns["image_link"] = ImagePattern(IMAGE_LINK_RE, md_instance)\r
- inlinePatterns["image_reference"] = \\r
- ImageReferencePattern(IMAGE_REFERENCE_RE, md_instance)\r
- inlinePatterns["short_reference"] = \\r
- ReferencePattern(SHORT_REF_RE, md_instance)\r
- inlinePatterns["autolink"] = AutolinkPattern(AUTOLINK_RE, md_instance)\r
- inlinePatterns["automail"] = AutomailPattern(AUTOMAIL_RE, md_instance)\r
- inlinePatterns["linebreak"] = SubstituteTagPattern(LINE_BREAK_RE, 'br')\r
- if md_instance.safeMode != 'escape':\r
- inlinePatterns["html"] = HtmlPattern(HTML_RE, md_instance)\r
- inlinePatterns["entity"] = HtmlPattern(ENTITY_RE, md_instance)\r
- inlinePatterns["not_strong"] = SimpleTextPattern(NOT_STRONG_RE)\r
- inlinePatterns["strong_em"] = DoubleTagPattern(STRONG_EM_RE, 'strong,em')\r
- inlinePatterns["strong"] = SimpleTagPattern(STRONG_RE, 'strong')\r
- inlinePatterns["emphasis"] = SimpleTagPattern(EMPHASIS_RE, 'em')\r
- if md_instance.smart_emphasis:\r
- inlinePatterns["emphasis2"] = SimpleTagPattern(SMART_EMPHASIS_RE, 'em')\r
- else:\r
- inlinePatterns["emphasis2"] = SimpleTagPattern(EMPHASIS_2_RE, 'em')\r
- return inlinePatterns\r
-\r
-"""\r
-The actual regular expressions for patterns\r
------------------------------------------------------------------------------\r
-"""\r
-\r
-NOBRACKET = r'[^\]\[]*'\r
-BRK = ( r'\[('\r
- + (NOBRACKET + r'(\[')*6\r
- + (NOBRACKET+ r'\])*')*6\r
- + NOBRACKET + r')\]' )\r
-NOIMG = r'(?<!\!)'\r
-\r
-BACKTICK_RE = r'(?<!\\)(`+)(.+?)(?<!`)\2(?!`)' # `e=f()` or ``e=f("`")``\r
-ESCAPE_RE = r'\\(.)' # \<\r
-EMPHASIS_RE = r'(\*)([^\*]+)\2' # *emphasis*\r
-STRONG_RE = r'(\*{2}|_{2})(.+?)\2' # **strong**\r
-STRONG_EM_RE = r'(\*{3}|_{3})(.+?)\2' # ***strong***\r
-SMART_EMPHASIS_RE = r'(?<!\w)(_)(?!_)(.+?)(?<!_)\2(?!\w)' # _smart_emphasis_\r
-EMPHASIS_2_RE = r'(_)(.+?)\2' # _emphasis_\r
-LINK_RE = NOIMG + BRK + \\r
-r'''\(\s*(<.*?>|((?:(?:\(.*?\))|[^\(\)]))*?)\s*((['"])(.*?)\12\s*)?\)'''\r
-# [text](url) or [text](<url>) or [text](url "title")\r
-\r
-IMAGE_LINK_RE = r'\!' + BRK + r'\s*\((<.*?>|([^")]+"[^"]*"|[^\)]*))\)'\r
-#  or \r
-REFERENCE_RE = NOIMG + BRK+ r'\s?\[([^\]]*)\]' # [Google][3]\r
-SHORT_REF_RE = NOIMG + r'\[([^\]]+)\]' # [Google]\r
-IMAGE_REFERENCE_RE = r'\!' + BRK + '\s?\[([^\]]*)\]' # ![alt text][2]\r
-NOT_STRONG_RE = r'((^| )(\*|_)( |$))' # stand-alone * or _\r
-AUTOLINK_RE = r'<((?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^>]*)>' # <http://www.123.com>\r
-AUTOMAIL_RE = r'<([^> \!]*@[^> ]*)>' # <me@example.com>\r
-\r
-HTML_RE = r'(\<([a-zA-Z/][^\>]*?|\!--.*?--)\>)' # <...>\r
-ENTITY_RE = r'(&[\#a-zA-Z0-9]*;)' # &\r
-LINE_BREAK_RE = r' \n' # two spaces at end of line\r
-\r
-\r
-def dequote(string):\r
- """Remove quotes from around a string."""\r
- if ( ( string.startswith('"') and string.endswith('"'))\r
- or (string.startswith("'") and string.endswith("'")) ):\r
- return string[1:-1]\r
- else:\r
- return string\r
-\r
-ATTR_RE = re.compile("\{@([^\}]*)=([^\}]*)}") # {@id=123}\r
-\r
-def handleAttributes(text, parent):\r
- """Set values of an element based on attribute definitions ({@id=123})."""\r
- def attributeCallback(match):\r
- parent.set(match.group(1), match.group(2).replace('\n', ' '))\r
- return ATTR_RE.sub(attributeCallback, text)\r
-\r
-\r
-"""\r
-The pattern classes\r
------------------------------------------------------------------------------\r
-"""\r
-\r
-class Pattern(object):\r
- """Base class that inline patterns subclass. """\r
-\r
- def __init__(self, pattern, markdown_instance=None):\r
- """\r
- Create an instant of an inline pattern.\r
-\r
- Keyword arguments:\r
-\r
- * pattern: A regular expression that matches a pattern\r
-\r
- """\r
- self.pattern = pattern\r
- self.compiled_re = re.compile("^(.*?)%s(.*?)$" % pattern, \r
- re.DOTALL | re.UNICODE)\r
-\r
- # Api for Markdown to pass safe_mode into instance\r
- self.safe_mode = False\r
- if markdown_instance:\r
- self.markdown = markdown_instance\r
-\r
- def getCompiledRegExp(self):\r
- """ Return a compiled regular expression. """\r
- return self.compiled_re\r
-\r
- def handleMatch(self, m):\r
- """Return a ElementTree element from the given match.\r
-\r
- Subclasses should override this method.\r
-\r
- Keyword arguments:\r
-\r
- * m: A re match object containing a match of the pattern.\r
-\r
- """\r
- pass\r
-\r
- def type(self):\r
- """ Return class name, to define pattern type """\r
- return self.__class__.__name__\r
-\r
- def unescape(self, text):\r
- """ Return unescaped text given text with an inline placeholder. """\r
- try:\r
- stash = self.markdown.treeprocessors['inline'].stashed_nodes\r
- except KeyError:\r
- return text\r
- def itertext(el):\r
- ' Reimplement Element.itertext for older python versions '\r
- tag = el.tag\r
- if not isinstance(tag, util.string_type) and tag is not None:\r
- return\r
- if el.text:\r
- yield el.text\r
- for e in el:\r
- for s in itertext(e):\r
- yield s\r
- if e.tail:\r
- yield e.tail\r
- def get_stash(m):\r
- id = m.group(1)\r
- if id in stash:\r
- value = stash.get(id)\r
- if isinstance(value, util.string_type):\r
- return value\r
- else:\r
- # An etree Element - return text content only\r
- return ''.join(itertext(value)) \r
- return util.INLINE_PLACEHOLDER_RE.sub(get_stash, text)\r
-\r
-\r
-class SimpleTextPattern(Pattern):\r
- """ Return a simple text of group(2) of a Pattern. """\r
- def handleMatch(self, m):\r
- text = m.group(2)\r
- if text == util.INLINE_PLACEHOLDER_PREFIX:\r
- return None\r
- return text\r
-\r
-\r
-class EscapePattern(Pattern):\r
- """ Return an escaped character. """\r
-\r
- def handleMatch(self, m):\r
- char = m.group(2)\r
- if char in self.markdown.ESCAPED_CHARS:\r
- return '%s%s%s' % (util.STX, ord(char), util.ETX)\r
- else:\r
- return None \r
-\r
-\r
-class SimpleTagPattern(Pattern):\r
- """\r
- Return element of type `tag` with a text attribute of group(3)\r
- of a Pattern.\r
-\r
- """\r
- def __init__ (self, pattern, tag):\r
- Pattern.__init__(self, pattern)\r
- self.tag = tag\r
-\r
- def handleMatch(self, m):\r
- el = util.etree.Element(self.tag)\r
- el.text = m.group(3)\r
- return el\r
-\r
-\r
-class SubstituteTagPattern(SimpleTagPattern):\r
- """ Return an element of type `tag` with no children. """\r
- def handleMatch (self, m):\r
- return util.etree.Element(self.tag)\r
-\r
-\r
-class BacktickPattern(Pattern):\r
- """ Return a `<code>` element containing the matching text. """\r
- def __init__ (self, pattern):\r
- Pattern.__init__(self, pattern)\r
- self.tag = "code"\r
-\r
- def handleMatch(self, m):\r
- el = util.etree.Element(self.tag)\r
- el.text = util.AtomicString(m.group(3).strip())\r
- return el\r
-\r
-\r
-class DoubleTagPattern(SimpleTagPattern):\r
- """Return a ElementTree element nested in tag2 nested in tag1.\r
-\r
- Useful for strong emphasis etc.\r
-\r
- """\r
- def handleMatch(self, m):\r
- tag1, tag2 = self.tag.split(",")\r
- el1 = util.etree.Element(tag1)\r
- el2 = util.etree.SubElement(el1, tag2)\r
- el2.text = m.group(3)\r
- return el1\r
-\r
-\r
-class HtmlPattern(Pattern):\r
- """ Store raw inline html and return a placeholder. """\r
- def handleMatch (self, m):\r
- rawhtml = self.unescape(m.group(2))\r
- place_holder = self.markdown.htmlStash.store(rawhtml)\r
- return place_holder\r
-\r
- def unescape(self, text):\r
- """ Return unescaped text given text with an inline placeholder. """\r
- try:\r
- stash = self.markdown.treeprocessors['inline'].stashed_nodes\r
- except KeyError:\r
- return text\r
- def get_stash(m):\r
- id = m.group(1)\r
- value = stash.get(id)\r
- if value is not None:\r
- try:\r
- return self.markdown.serializer(value)\r
- except:\r
- return '\%s' % value\r
- \r
- return util.INLINE_PLACEHOLDER_RE.sub(get_stash, text)\r
-\r
-\r
-class LinkPattern(Pattern):\r
- """ Return a link element from the given match. """\r
- def handleMatch(self, m):\r
- el = util.etree.Element("a")\r
- el.text = m.group(2)\r
- title = m.group(13)\r
- href = m.group(9)\r
-\r
- if href:\r
- if href[0] == "<":\r
- href = href[1:-1]\r
- el.set("href", self.sanitize_url(self.unescape(href.strip())))\r
- else:\r
- el.set("href", "")\r
-\r
- if title:\r
- title = dequote(self.unescape(title)) \r
- el.set("title", title)\r
- return el\r
-\r
- def sanitize_url(self, url):\r
- """\r
- Sanitize a url against xss attacks in "safe_mode".\r
-\r
- Rather than specifically blacklisting `javascript:alert("XSS")` and all\r
- its aliases (see <http://ha.ckers.org/xss.html>), we whitelist known\r
- safe url formats. Most urls contain a network location, however some\r
- are known not to (i.e.: mailto links). Script urls do not contain a\r
- location. Additionally, for `javascript:...`, the scheme would be\r
- "javascript" but some aliases will appear to `urlparse()` to have no\r
- scheme. On top of that relative links (i.e.: "foo/bar.html") have no\r
- scheme. Therefore we must check "path", "parameters", "query" and\r
- "fragment" for any literal colons. We don't check "scheme" for colons\r
- because it *should* never have any and "netloc" must allow the form:\r
- `username:password@host:port`.\r
-\r
- """\r
- if not self.markdown.safeMode:\r
- # Return immediately bipassing parsing.\r
- return url\r
- \r
- try:\r
- scheme, netloc, path, params, query, fragment = url = urlparse(url)\r
- except ValueError:\r
- # Bad url - so bad it couldn't be parsed.\r
- return ''\r
- \r
- locless_schemes = ['', 'mailto', 'news']\r
- allowed_schemes = locless_schemes + ['http', 'https', 'ftp', 'ftps']\r
- if scheme not in allowed_schemes:\r
- # Not a known (allowed) scheme. Not safe.\r
- return ''\r
- \r
- if netloc == '' and scheme not in locless_schemes:\r
- # This should not happen. Treat as suspect.\r
- return ''\r
-\r
- for part in url[2:]:\r
- if ":" in part:\r
- # A colon in "path", "parameters", "query" or "fragment" is suspect.\r
- return ''\r
-\r
- # Url passes all tests. Return url as-is.\r
- return urlunparse(url)\r
-\r
-class ImagePattern(LinkPattern):\r
- """ Return a img element from the given match. """\r
- def handleMatch(self, m):\r
- el = util.etree.Element("img")\r
- src_parts = m.group(9).split()\r
- if src_parts:\r
- src = src_parts[0]\r
- if src[0] == "<" and src[-1] == ">":\r
- src = src[1:-1]\r
- el.set('src', self.sanitize_url(self.unescape(src)))\r
- else:\r
- el.set('src', "")\r
- if len(src_parts) > 1:\r
- el.set('title', dequote(self.unescape(" ".join(src_parts[1:]))))\r
-\r
- if self.markdown.enable_attributes:\r
- truealt = handleAttributes(m.group(2), el)\r
- else:\r
- truealt = m.group(2)\r
-\r
- el.set('alt', self.unescape(truealt))\r
- return el\r
-\r
-class ReferencePattern(LinkPattern):\r
- """ Match to a stored reference and return link element. """\r
-\r
- NEWLINE_CLEANUP_RE = re.compile(r'[ ]?\n', re.MULTILINE)\r
-\r
- def handleMatch(self, m):\r
- try:\r
- id = m.group(9).lower()\r
- except IndexError:\r
- id = None\r
- if not id:\r
- # if we got something like "[Google][]" or "[Goggle]"\r
- # we'll use "google" as the id\r
- id = m.group(2).lower()\r
-\r
- # Clean up linebreaks in id\r
- id = self.NEWLINE_CLEANUP_RE.sub(' ', id)\r
- if not id in self.markdown.references: # ignore undefined refs\r
- return None\r
- href, title = self.markdown.references[id]\r
-\r
- text = m.group(2)\r
- return self.makeTag(href, title, text)\r
-\r
- def makeTag(self, href, title, text):\r
- el = util.etree.Element('a')\r
-\r
- el.set('href', self.sanitize_url(href))\r
- if title:\r
- el.set('title', title)\r
-\r
- el.text = text\r
- return el\r
-\r
-\r
-class ImageReferencePattern(ReferencePattern):\r
- """ Match to a stored reference and return img element. """\r
- def makeTag(self, href, title, text):\r
- el = util.etree.Element("img")\r
- el.set("src", self.sanitize_url(href))\r
- if title:\r
- el.set("title", title)\r
-\r
- if self.markdown.enable_attributes:\r
- text = handleAttributes(text, el)\r
-\r
- el.set("alt", self.unescape(text))\r
- return el\r
-\r
-\r
-class AutolinkPattern(Pattern):\r
- """ Return a link Element given an autolink (`<http://example/com>`). """\r
- def handleMatch(self, m):\r
- el = util.etree.Element("a")\r
- el.set('href', self.unescape(m.group(2)))\r
- el.text = util.AtomicString(m.group(2))\r
- return el\r
-\r
-class AutomailPattern(Pattern):\r
- """\r
- Return a mailto link Element given an automail link (`<foo@example.com>`).\r
- """\r
- def handleMatch(self, m):\r
- el = util.etree.Element('a')\r
- email = self.unescape(m.group(2))\r
- if email.startswith("mailto:"):\r
- email = email[len("mailto:"):]\r
-\r
- def codepoint2name(code):\r
- """Return entity definition by code, or the code if not defined."""\r
- entity = entities.codepoint2name.get(code)\r
- if entity:\r
- return "%s%s;" % (util.AMP_SUBSTITUTE, entity)\r
- else:\r
- return "%s#%d;" % (util.AMP_SUBSTITUTE, code)\r
-\r
- letters = [codepoint2name(ord(letter)) for letter in email]\r
- el.text = util.AtomicString(''.join(letters))\r
-\r
- mailto = "mailto:" + email\r
- mailto = "".join([util.AMP_SUBSTITUTE + '#%d;' %\r
- ord(letter) for letter in mailto])\r
- el.set('href', mailto)\r
- return el\r
-\r
+"""
+INLINE PATTERNS
+=============================================================================
+
+Inline patterns such as *emphasis* are handled by means of auxiliary
+objects, one per pattern. Pattern objects must be instances of classes
+that extend markdown.Pattern. Each pattern object uses a single regular
+expression and needs support the following methods:
+
+ pattern.getCompiledRegExp() # returns a regular expression
+
+ pattern.handleMatch(m) # takes a match object and returns
+ # an ElementTree element or just plain text
+
+All of python markdown's built-in patterns subclass from Pattern,
+but you can add additional patterns that don't.
+
+Also note that all the regular expressions used by inline must
+capture the whole block. For this reason, they all start with
+'^(.*)' and end with '(.*)!'. In case with built-in expression
+Pattern takes care of adding the "^(.*)" and "(.*)!".
+
+Finally, the order in which regular expressions are applied is very
+important - e.g. if we first replace http://.../ links with <a> tags
+and _then_ try to replace inline html, we would end up with a mess.
+So, we apply the expressions in the following order:
+
+* escape and backticks have to go before everything else, so
+ that we can preempt any markdown patterns by escaping them.
+
+* then we handle auto-links (must be done before inline html)
+
+* then we handle inline HTML. At this point we will simply
+ replace all inline HTML strings with a placeholder and add
+ the actual HTML to a hash.
+
+* then inline images (must be done before links)
+
+* then bracketed links, first regular then reference-style
+
+* finally we apply strong and emphasis
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import util
+from . import odict
+import re
+try: #pragma: no cover
+ from urllib.parse import urlparse, urlunparse
+except ImportError: #pragma: no cover
+ from urlparse import urlparse, urlunparse
+try: #pragma: no cover
+ from html import entities
+except ImportError: #pragma: no cover
+ import htmlentitydefs as entities
+
+
+def build_inlinepatterns(md_instance, **kwargs):
+ """ Build the default set of inline patterns for Markdown. """
+ inlinePatterns = odict.OrderedDict()
+ inlinePatterns["backtick"] = BacktickPattern(BACKTICK_RE)
+ inlinePatterns["escape"] = EscapePattern(ESCAPE_RE, md_instance)
+ inlinePatterns["reference"] = ReferencePattern(REFERENCE_RE, md_instance)
+ inlinePatterns["link"] = LinkPattern(LINK_RE, md_instance)
+ inlinePatterns["image_link"] = ImagePattern(IMAGE_LINK_RE, md_instance)
+ inlinePatterns["image_reference"] = \
+ ImageReferencePattern(IMAGE_REFERENCE_RE, md_instance)
+ inlinePatterns["short_reference"] = \
+ ReferencePattern(SHORT_REF_RE, md_instance)
+ inlinePatterns["autolink"] = AutolinkPattern(AUTOLINK_RE, md_instance)
+ inlinePatterns["automail"] = AutomailPattern(AUTOMAIL_RE, md_instance)
+ inlinePatterns["linebreak"] = SubstituteTagPattern(LINE_BREAK_RE, 'br')
+ if md_instance.safeMode != 'escape':
+ inlinePatterns["html"] = HtmlPattern(HTML_RE, md_instance)
+ inlinePatterns["entity"] = HtmlPattern(ENTITY_RE, md_instance)
+ inlinePatterns["not_strong"] = SimpleTextPattern(NOT_STRONG_RE)
+ inlinePatterns["strong_em"] = DoubleTagPattern(STRONG_EM_RE, 'strong,em')
+ inlinePatterns["strong"] = SimpleTagPattern(STRONG_RE, 'strong')
+ inlinePatterns["emphasis"] = SimpleTagPattern(EMPHASIS_RE, 'em')
+ if md_instance.smart_emphasis:
+ inlinePatterns["emphasis2"] = SimpleTagPattern(SMART_EMPHASIS_RE, 'em')
+ else:
+ inlinePatterns["emphasis2"] = SimpleTagPattern(EMPHASIS_2_RE, 'em')
+ return inlinePatterns
+
+"""
+The actual regular expressions for patterns
+-----------------------------------------------------------------------------
+"""
+
+NOBRACKET = r'[^\]\[]*'
+BRK = ( r'\[('
+ + (NOBRACKET + r'(\[')*6
+ + (NOBRACKET+ r'\])*')*6
+ + NOBRACKET + r')\]' )
+NOIMG = r'(?<!\!)'
+
+BACKTICK_RE = r'(?<!\\)(`+)(.+?)(?<!`)\2(?!`)' # `e=f()` or ``e=f("`")``
+ESCAPE_RE = r'\\(.)' # \<
+EMPHASIS_RE = r'(\*)([^\*]+)\2' # *emphasis*
+STRONG_RE = r'(\*{2}|_{2})(.+?)\2' # **strong**
+STRONG_EM_RE = r'(\*{3}|_{3})(.+?)\2' # ***strong***
+SMART_EMPHASIS_RE = r'(?<!\w)(_)(?!_)(.+?)(?<!_)\2(?!\w)' # _smart_emphasis_
+EMPHASIS_2_RE = r'(_)(.+?)\2' # _emphasis_
+LINK_RE = NOIMG + BRK + \
+r'''\(\s*(<.*?>|((?:(?:\(.*?\))|[^\(\)]))*?)\s*((['"])(.*?)\12\s*)?\)'''
+# [text](url) or [text](<url>) or [text](url "title")
+
+IMAGE_LINK_RE = r'\!' + BRK + r'\s*\((<.*?>|([^")]+"[^"]*"|[^\)]*))\)'
+#  or 
+REFERENCE_RE = NOIMG + BRK+ r'\s?\[([^\]]*)\]' # [Google][3]
+SHORT_REF_RE = NOIMG + r'\[([^\]]+)\]' # [Google]
+IMAGE_REFERENCE_RE = r'\!' + BRK + '\s?\[([^\]]*)\]' # ![alt text][2]
+NOT_STRONG_RE = r'((^| )(\*|_)( |$))' # stand-alone * or _
+AUTOLINK_RE = r'<((?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^>]*)>' # <http://www.123.com>
+AUTOMAIL_RE = r'<([^> \!]*@[^> ]*)>' # <me@example.com>
+
+HTML_RE = r'(\<([a-zA-Z/][^\>]*?|\!--.*?--)\>)' # <...>
+ENTITY_RE = r'(&[\#a-zA-Z0-9]*;)' # &
+LINE_BREAK_RE = r' \n' # two spaces at end of line
+
+
+def dequote(string):
+ """Remove quotes from around a string."""
+ if ( ( string.startswith('"') and string.endswith('"'))
+ or (string.startswith("'") and string.endswith("'")) ):
+ return string[1:-1]
+ else:
+ return string
+
+ATTR_RE = re.compile("\{@([^\}]*)=([^\}]*)}") # {@id=123}
+
+def handleAttributes(text, parent):
+ """Set values of an element based on attribute definitions ({@id=123})."""
+ def attributeCallback(match):
+ parent.set(match.group(1), match.group(2).replace('\n', ' '))
+ return ATTR_RE.sub(attributeCallback, text)
+
+
+"""
+The pattern classes
+-----------------------------------------------------------------------------
+"""
+
+class Pattern(object):
+ """Base class that inline patterns subclass. """
+
+ def __init__(self, pattern, markdown_instance=None):
+ """
+ Create an instant of an inline pattern.
+
+ Keyword arguments:
+
+ * pattern: A regular expression that matches a pattern
+
+ """
+ self.pattern = pattern
+ self.compiled_re = re.compile("^(.*?)%s(.*?)$" % pattern,
+ re.DOTALL | re.UNICODE)
+
+ # Api for Markdown to pass safe_mode into instance
+ self.safe_mode = False
+ if markdown_instance:
+ self.markdown = markdown_instance
+
+ def getCompiledRegExp(self):
+ """ Return a compiled regular expression. """
+ return self.compiled_re
+
+ def handleMatch(self, m):
+ """Return a ElementTree element from the given match.
+
+ Subclasses should override this method.
+
+ Keyword arguments:
+
+ * m: A re match object containing a match of the pattern.
+
+ """
+ pass #pragma: no cover
+
+ def type(self):
+ """ Return class name, to define pattern type """
+ return self.__class__.__name__
+
+ def unescape(self, text):
+ """ Return unescaped text given text with an inline placeholder. """
+ try:
+ stash = self.markdown.treeprocessors['inline'].stashed_nodes
+ except KeyError: #pragma: no cover
+ return text
+ def itertext(el): #pragma: no cover
+ ' Reimplement Element.itertext for older python versions '
+ tag = el.tag
+ if not isinstance(tag, util.string_type) and tag is not None:
+ return
+ if el.text:
+ yield el.text
+ for e in el:
+ for s in itertext(e):
+ yield s
+ if e.tail:
+ yield e.tail
+ def get_stash(m):
+ id = m.group(1)
+ if id in stash:
+ value = stash.get(id)
+ if isinstance(value, util.string_type):
+ return value
+ else:
+ # An etree Element - return text content only
+ return ''.join(itertext(value))
+ return util.INLINE_PLACEHOLDER_RE.sub(get_stash, text)
+
+
+class SimpleTextPattern(Pattern):
+ """ Return a simple text of group(2) of a Pattern. """
+ def handleMatch(self, m):
+ return m.group(2)
+
+
+class EscapePattern(Pattern):
+ """ Return an escaped character. """
+
+ def handleMatch(self, m):
+ char = m.group(2)
+ if char in self.markdown.ESCAPED_CHARS:
+ return '%s%s%s' % (util.STX, ord(char), util.ETX)
+ else:
+ return None
+
+
+class SimpleTagPattern(Pattern):
+ """
+ Return element of type `tag` with a text attribute of group(3)
+ of a Pattern.
+
+ """
+ def __init__ (self, pattern, tag):
+ Pattern.__init__(self, pattern)
+ self.tag = tag
+
+ def handleMatch(self, m):
+ el = util.etree.Element(self.tag)
+ el.text = m.group(3)
+ return el
+
+
+class SubstituteTagPattern(SimpleTagPattern):
+ """ Return an element of type `tag` with no children. """
+ def handleMatch (self, m):
+ return util.etree.Element(self.tag)
+
+
+class BacktickPattern(Pattern):
+ """ Return a `<code>` element containing the matching text. """
+ def __init__ (self, pattern):
+ Pattern.__init__(self, pattern)
+ self.tag = "code"
+
+ def handleMatch(self, m):
+ el = util.etree.Element(self.tag)
+ el.text = util.AtomicString(m.group(3).strip())
+ return el
+
+
+class DoubleTagPattern(SimpleTagPattern):
+ """Return a ElementTree element nested in tag2 nested in tag1.
+
+ Useful for strong emphasis etc.
+
+ """
+ def handleMatch(self, m):
+ tag1, tag2 = self.tag.split(",")
+ el1 = util.etree.Element(tag1)
+ el2 = util.etree.SubElement(el1, tag2)
+ el2.text = m.group(3)
+ return el1
+
+
+class HtmlPattern(Pattern):
+ """ Store raw inline html and return a placeholder. """
+ def handleMatch (self, m):
+ rawhtml = self.unescape(m.group(2))
+ place_holder = self.markdown.htmlStash.store(rawhtml)
+ return place_holder
+
+ def unescape(self, text):
+ """ Return unescaped text given text with an inline placeholder. """
+ try:
+ stash = self.markdown.treeprocessors['inline'].stashed_nodes
+ except KeyError: #pragma: no cover
+ return text
+ def get_stash(m):
+ id = m.group(1)
+ value = stash.get(id)
+ if value is not None:
+ try:
+ return self.markdown.serializer(value)
+ except:
+ return '\%s' % value
+
+ return util.INLINE_PLACEHOLDER_RE.sub(get_stash, text)
+
+
+class LinkPattern(Pattern):
+ """ Return a link element from the given match. """
+ def handleMatch(self, m):
+ el = util.etree.Element("a")
+ el.text = m.group(2)
+ title = m.group(13)
+ href = m.group(9)
+
+ if href:
+ if href[0] == "<":
+ href = href[1:-1]
+ el.set("href", self.sanitize_url(self.unescape(href.strip())))
+ else:
+ el.set("href", "")
+
+ if title:
+ title = dequote(self.unescape(title))
+ el.set("title", title)
+ return el
+
+ def sanitize_url(self, url):
+ """
+ Sanitize a url against xss attacks in "safe_mode".
+
+ Rather than specifically blacklisting `javascript:alert("XSS")` and all
+ its aliases (see <http://ha.ckers.org/xss.html>), we whitelist known
+ safe url formats. Most urls contain a network location, however some
+ are known not to (i.e.: mailto links). Script urls do not contain a
+ location. Additionally, for `javascript:...`, the scheme would be
+ "javascript" but some aliases will appear to `urlparse()` to have no
+ scheme. On top of that relative links (i.e.: "foo/bar.html") have no
+ scheme. Therefore we must check "path", "parameters", "query" and
+ "fragment" for any literal colons. We don't check "scheme" for colons
+ because it *should* never have any and "netloc" must allow the form:
+ `username:password@host:port`.
+
+ """
+ if not self.markdown.safeMode:
+ # Return immediately bipassing parsing.
+ return url
+
+ try:
+ scheme, netloc, path, params, query, fragment = url = urlparse(url)
+ except ValueError: #pragma: no cover
+ # Bad url - so bad it couldn't be parsed.
+ return ''
+
+ locless_schemes = ['', 'mailto', 'news']
+ allowed_schemes = locless_schemes + ['http', 'https', 'ftp', 'ftps']
+ if scheme not in allowed_schemes:
+ # Not a known (allowed) scheme. Not safe.
+ return ''
+
+ if netloc == '' and scheme not in locless_schemes: #pragma: no cover
+ # This should not happen. Treat as suspect.
+ return ''
+
+ for part in url[2:]:
+ if ":" in part:
+ # A colon in "path", "parameters", "query" or "fragment" is suspect.
+ return ''
+
+ # Url passes all tests. Return url as-is.
+ return urlunparse(url)
+
+class ImagePattern(LinkPattern):
+ """ Return a img element from the given match. """
+ def handleMatch(self, m):
+ el = util.etree.Element("img")
+ src_parts = m.group(9).split()
+ if src_parts:
+ src = src_parts[0]
+ if src[0] == "<" and src[-1] == ">":
+ src = src[1:-1]
+ el.set('src', self.sanitize_url(self.unescape(src)))
+ else:
+ el.set('src', "")
+ if len(src_parts) > 1:
+ el.set('title', dequote(self.unescape(" ".join(src_parts[1:]))))
+
+ if self.markdown.enable_attributes:
+ truealt = handleAttributes(m.group(2), el)
+ else:
+ truealt = m.group(2)
+
+ el.set('alt', self.unescape(truealt))
+ return el
+
+class ReferencePattern(LinkPattern):
+ """ Match to a stored reference and return link element. """
+
+ NEWLINE_CLEANUP_RE = re.compile(r'[ ]?\n', re.MULTILINE)
+
+ def handleMatch(self, m):
+ try:
+ id = m.group(9).lower()
+ except IndexError:
+ id = None
+ if not id:
+ # if we got something like "[Google][]" or "[Goggle]"
+ # we'll use "google" as the id
+ id = m.group(2).lower()
+
+ # Clean up linebreaks in id
+ id = self.NEWLINE_CLEANUP_RE.sub(' ', id)
+ if not id in self.markdown.references: # ignore undefined refs
+ return None
+ href, title = self.markdown.references[id]
+
+ text = m.group(2)
+ return self.makeTag(href, title, text)
+
+ def makeTag(self, href, title, text):
+ el = util.etree.Element('a')
+
+ el.set('href', self.sanitize_url(href))
+ if title:
+ el.set('title', title)
+
+ el.text = text
+ return el
+
+
+class ImageReferencePattern(ReferencePattern):
+ """ Match to a stored reference and return img element. """
+ def makeTag(self, href, title, text):
+ el = util.etree.Element("img")
+ el.set("src", self.sanitize_url(href))
+ if title:
+ el.set("title", title)
+
+ if self.markdown.enable_attributes:
+ text = handleAttributes(text, el)
+
+ el.set("alt", self.unescape(text))
+ return el
+
+
+class AutolinkPattern(Pattern):
+ """ Return a link Element given an autolink (`<http://example/com>`). """
+ def handleMatch(self, m):
+ el = util.etree.Element("a")
+ el.set('href', self.unescape(m.group(2)))
+ el.text = util.AtomicString(m.group(2))
+ return el
+
+class AutomailPattern(Pattern):
+ """
+ Return a mailto link Element given an automail link (`<foo@example.com>`).
+ """
+ def handleMatch(self, m):
+ el = util.etree.Element('a')
+ email = self.unescape(m.group(2))
+ if email.startswith("mailto:"):
+ email = email[len("mailto:"):]
+
+ def codepoint2name(code):
+ """Return entity definition by code, or the code if not defined."""
+ entity = entities.codepoint2name.get(code)
+ if entity:
+ return "%s%s;" % (util.AMP_SUBSTITUTE, entity)
+ else:
+ return "%s#%d;" % (util.AMP_SUBSTITUTE, code)
+
+ letters = [codepoint2name(ord(letter)) for letter in email]
+ el.text = util.AtomicString(''.join(letters))
+
+ mailto = "mailto:" + email
+ mailto = "".join([util.AMP_SUBSTITUTE + '#%d;' %
+ ord(letter) for letter in mailto])
+ el.set('href', mailto)
+ return el
+
-from __future__ import unicode_literals\r
-from __future__ import absolute_import\r
-from . import util\r
-\r
-from copy import deepcopy\r
-\r
-class OrderedDict(dict):\r
- """\r
- A dictionary that keeps its keys in the order in which they're inserted.\r
- \r
- Copied from Django's SortedDict with some modifications.\r
-\r
- """\r
- def __new__(cls, *args, **kwargs):\r
- instance = super(OrderedDict, cls).__new__(cls, *args, **kwargs)\r
- instance.keyOrder = []\r
- return instance\r
-\r
- def __init__(self, data=None):\r
- if data is None or isinstance(data, dict):\r
- data = data or []\r
- super(OrderedDict, self).__init__(data)\r
- self.keyOrder = list(data) if data else []\r
- else:\r
- super(OrderedDict, self).__init__()\r
- super_set = super(OrderedDict, self).__setitem__\r
- for key, value in data:\r
- # Take the ordering from first key\r
- if key not in self:\r
- self.keyOrder.append(key)\r
- # But override with last value in data (dict() does this)\r
- super_set(key, value)\r
-\r
- def __deepcopy__(self, memo):\r
- return self.__class__([(key, deepcopy(value, memo))\r
- for key, value in self.items()])\r
-\r
- def __copy__(self):\r
- # The Python's default copy implementation will alter the state\r
- # of self. The reason for this seems complex but is likely related to\r
- # subclassing dict.\r
- return self.copy()\r
-\r
- def __setitem__(self, key, value):\r
- if key not in self:\r
- self.keyOrder.append(key)\r
- super(OrderedDict, self).__setitem__(key, value)\r
-\r
- def __delitem__(self, key):\r
- super(OrderedDict, self).__delitem__(key)\r
- self.keyOrder.remove(key)\r
-\r
- def __iter__(self):\r
- return iter(self.keyOrder)\r
-\r
- def __reversed__(self):\r
- return reversed(self.keyOrder)\r
-\r
- def pop(self, k, *args):\r
- result = super(OrderedDict, self).pop(k, *args)\r
- try:\r
- self.keyOrder.remove(k)\r
- except ValueError:\r
- # Key wasn't in the dictionary in the first place. No problem.\r
- pass\r
- return result\r
-\r
- def popitem(self):\r
- result = super(OrderedDict, self).popitem()\r
- self.keyOrder.remove(result[0])\r
- return result\r
-\r
- def _iteritems(self):\r
- for key in self.keyOrder:\r
- yield key, self[key]\r
-\r
- def _iterkeys(self):\r
- for key in self.keyOrder:\r
- yield key\r
-\r
- def _itervalues(self):\r
- for key in self.keyOrder:\r
- yield self[key]\r
-\r
- if util.PY3:\r
- items = _iteritems\r
- keys = _iterkeys\r
- values = _itervalues\r
- else:\r
- iteritems = _iteritems\r
- iterkeys = _iterkeys\r
- itervalues = _itervalues\r
-\r
- def items(self):\r
- return [(k, self[k]) for k in self.keyOrder]\r
-\r
- def keys(self):\r
- return self.keyOrder[:]\r
-\r
- def values(self):\r
- return [self[k] for k in self.keyOrder]\r
-\r
- def update(self, dict_):\r
- for k in dict_:\r
- self[k] = dict_[k]\r
-\r
- def setdefault(self, key, default):\r
- if key not in self:\r
- self.keyOrder.append(key)\r
- return super(OrderedDict, self).setdefault(key, default)\r
-\r
- def value_for_index(self, index):\r
- """Returns the value of the item at the given zero-based index."""\r
- return self[self.keyOrder[index]]\r
-\r
- def insert(self, index, key, value):\r
- """Inserts the key, value pair before the item with the given index."""\r
- if key in self.keyOrder:\r
- n = self.keyOrder.index(key)\r
- del self.keyOrder[n]\r
- if n < index:\r
- index -= 1\r
- self.keyOrder.insert(index, key)\r
- super(OrderedDict, self).__setitem__(key, value)\r
-\r
- def copy(self):\r
- """Returns a copy of this object."""\r
- # This way of initializing the copy means it works for subclasses, too.\r
- return self.__class__(self)\r
-\r
- def __repr__(self):\r
- """\r
- Replaces the normal dict.__repr__ with a version that returns the keys\r
- in their Ordered order.\r
- """\r
- return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in self._iteritems()])\r
-\r
- def clear(self):\r
- super(OrderedDict, self).clear()\r
- self.keyOrder = []\r
-\r
- def index(self, key):\r
- """ Return the index of a given key. """\r
- try:\r
- return self.keyOrder.index(key)\r
- except ValueError:\r
- raise ValueError("Element '%s' was not found in OrderedDict" % key)\r
-\r
- def index_for_location(self, location):\r
- """ Return index or None for a given location. """\r
- if location == '_begin':\r
- i = 0\r
- elif location == '_end':\r
- i = None\r
- elif location.startswith('<') or location.startswith('>'):\r
- i = self.index(location[1:])\r
- if location.startswith('>'):\r
- if i >= len(self):\r
- # last item\r
- i = None\r
- else:\r
- i += 1\r
- else:\r
- raise ValueError('Not a valid location: "%s". Location key '\r
- 'must start with a ">" or "<".' % location)\r
- return i\r
-\r
- def add(self, key, value, location):\r
- """ Insert by key location. """\r
- i = self.index_for_location(location)\r
- if i is not None:\r
- self.insert(i, key, value)\r
- else:\r
- self.__setitem__(key, value)\r
-\r
- def link(self, key, location):\r
- """ Change location of an existing item. """\r
- n = self.keyOrder.index(key)\r
- del self.keyOrder[n]\r
- try:\r
- i = self.index_for_location(location)\r
- if i is not None:\r
- self.keyOrder.insert(i, key)\r
- else:\r
- self.keyOrder.append(key)\r
- except Exception as e:\r
- # restore to prevent data loss and reraise\r
- self.keyOrder.insert(n, key)\r
- raise e\r
+from __future__ import unicode_literals
+from __future__ import absolute_import
+from . import util
+
+from copy import deepcopy
+
+class OrderedDict(dict):
+ """
+ A dictionary that keeps its keys in the order in which they're inserted.
+
+ Copied from Django's SortedDict with some modifications.
+
+ """
+ def __new__(cls, *args, **kwargs):
+ instance = super(OrderedDict, cls).__new__(cls, *args, **kwargs)
+ instance.keyOrder = []
+ return instance
+
+ def __init__(self, data=None):
+ if data is None or isinstance(data, dict):
+ data = data or []
+ super(OrderedDict, self).__init__(data)
+ self.keyOrder = list(data) if data else []
+ else:
+ super(OrderedDict, self).__init__()
+ super_set = super(OrderedDict, self).__setitem__
+ for key, value in data:
+ # Take the ordering from first key
+ if key not in self:
+ self.keyOrder.append(key)
+ # But override with last value in data (dict() does this)
+ super_set(key, value)
+
+ def __deepcopy__(self, memo):
+ return self.__class__([(key, deepcopy(value, memo))
+ for key, value in self.items()])
+
+ def __copy__(self):
+ # The Python's default copy implementation will alter the state
+ # of self. The reason for this seems complex but is likely related to
+ # subclassing dict.
+ return self.copy()
+
+ def __setitem__(self, key, value):
+ if key not in self:
+ self.keyOrder.append(key)
+ super(OrderedDict, self).__setitem__(key, value)
+
+ def __delitem__(self, key):
+ super(OrderedDict, self).__delitem__(key)
+ self.keyOrder.remove(key)
+
+ def __iter__(self):
+ return iter(self.keyOrder)
+
+ def __reversed__(self):
+ return reversed(self.keyOrder)
+
+ def pop(self, k, *args):
+ result = super(OrderedDict, self).pop(k, *args)
+ try:
+ self.keyOrder.remove(k)
+ except ValueError:
+ # Key wasn't in the dictionary in the first place. No problem.
+ pass
+ return result
+
+ def popitem(self):
+ result = super(OrderedDict, self).popitem()
+ self.keyOrder.remove(result[0])
+ return result
+
+ def _iteritems(self):
+ for key in self.keyOrder:
+ yield key, self[key]
+
+ def _iterkeys(self):
+ for key in self.keyOrder:
+ yield key
+
+ def _itervalues(self):
+ for key in self.keyOrder:
+ yield self[key]
+
+ if util.PY3: #pragma: no cover
+ items = _iteritems
+ keys = _iterkeys
+ values = _itervalues
+ else: #pragma: no cover
+ iteritems = _iteritems
+ iterkeys = _iterkeys
+ itervalues = _itervalues
+
+ def items(self):
+ return [(k, self[k]) for k in self.keyOrder]
+
+ def keys(self):
+ return self.keyOrder[:]
+
+ def values(self):
+ return [self[k] for k in self.keyOrder]
+
+ def update(self, dict_):
+ for k in dict_:
+ self[k] = dict_[k]
+
+ def setdefault(self, key, default):
+ if key not in self:
+ self.keyOrder.append(key)
+ return super(OrderedDict, self).setdefault(key, default)
+
+ def value_for_index(self, index):
+ """Returns the value of the item at the given zero-based index."""
+ return self[self.keyOrder[index]]
+
+ def insert(self, index, key, value):
+ """Inserts the key, value pair before the item with the given index."""
+ if key in self.keyOrder:
+ n = self.keyOrder.index(key)
+ del self.keyOrder[n]
+ if n < index:
+ index -= 1
+ self.keyOrder.insert(index, key)
+ super(OrderedDict, self).__setitem__(key, value)
+
+ def copy(self):
+ """Returns a copy of this object."""
+ # This way of initializing the copy means it works for subclasses, too.
+ return self.__class__(self)
+
+ def __repr__(self):
+ """
+ Replaces the normal dict.__repr__ with a version that returns the keys
+ in their Ordered order.
+ """
+ return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in self._iteritems()])
+
+ def clear(self):
+ super(OrderedDict, self).clear()
+ self.keyOrder = []
+
+ def index(self, key):
+ """ Return the index of a given key. """
+ try:
+ return self.keyOrder.index(key)
+ except ValueError:
+ raise ValueError("Element '%s' was not found in OrderedDict" % key)
+
+ def index_for_location(self, location):
+ """ Return index or None for a given location. """
+ if location == '_begin':
+ i = 0
+ elif location == '_end':
+ i = None
+ elif location.startswith('<') or location.startswith('>'):
+ i = self.index(location[1:])
+ if location.startswith('>'):
+ if i >= len(self):
+ # last item
+ i = None
+ else:
+ i += 1
+ else:
+ raise ValueError('Not a valid location: "%s". Location key '
+ 'must start with a ">" or "<".' % location)
+ return i
+
+ def add(self, key, value, location):
+ """ Insert by key location. """
+ i = self.index_for_location(location)
+ if i is not None:
+ self.insert(i, key, value)
+ else:
+ self.__setitem__(key, value)
+
+ def link(self, key, location):
+ """ Change location of an existing item. """
+ n = self.keyOrder.index(key)
+ del self.keyOrder[n]
+ try:
+ i = self.index_for_location(location)
+ if i is not None:
+ self.keyOrder.insert(i, key)
+ else:
+ self.keyOrder.append(key)
+ except Exception as e:
+ # restore to prevent data loss and reraise
+ self.keyOrder.insert(n, key)
+ raise e
-"""\r
-POST-PROCESSORS\r
-=============================================================================\r
-\r
-Markdown also allows post-processors, which are similar to preprocessors in\r
-that they need to implement a "run" method. However, they are run after core\r
-processing.\r
-\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import util\r
-from . import odict\r
-import re\r
-\r
-\r
-def build_postprocessors(md_instance, **kwargs):\r
- """ Build the default postprocessors for Markdown. """\r
- postprocessors = odict.OrderedDict()\r
- postprocessors["raw_html"] = RawHtmlPostprocessor(md_instance)\r
- postprocessors["amp_substitute"] = AndSubstitutePostprocessor()\r
- postprocessors["unescape"] = UnescapePostprocessor()\r
- return postprocessors\r
-\r
-\r
-class Postprocessor(util.Processor):\r
- """\r
- Postprocessors are run after the ElementTree it converted back into text.\r
-\r
- Each Postprocessor implements a "run" method that takes a pointer to a\r
- text string, modifies it as necessary and returns a text string.\r
-\r
- Postprocessors must extend markdown.Postprocessor.\r
-\r
- """\r
-\r
- def run(self, text):\r
- """\r
- Subclasses of Postprocessor should implement a `run` method, which\r
- takes the html document as a single text string and returns a\r
- (possibly modified) string.\r
-\r
- """\r
- pass\r
-\r
-\r
-class RawHtmlPostprocessor(Postprocessor):\r
- """ Restore raw html to the document. """\r
-\r
- def run(self, text):\r
- """ Iterate over html stash and restore "safe" html. """\r
- for i in range(self.markdown.htmlStash.html_counter):\r
- html, safe = self.markdown.htmlStash.rawHtmlBlocks[i]\r
- if self.markdown.safeMode and not safe:\r
- if str(self.markdown.safeMode).lower() == 'escape':\r
- html = self.escape(html)\r
- elif str(self.markdown.safeMode).lower() == 'remove':\r
- html = ''\r
- else:\r
- html = self.markdown.html_replacement_text\r
- if self.isblocklevel(html) and (safe or not self.markdown.safeMode):\r
- text = text.replace("<p>%s</p>" % \r
- (self.markdown.htmlStash.get_placeholder(i)),\r
- html + "\n")\r
- text = text.replace(self.markdown.htmlStash.get_placeholder(i), \r
- html)\r
- return text\r
-\r
- def escape(self, html):\r
- """ Basic html escaping """\r
- html = html.replace('&', '&')\r
- html = html.replace('<', '<')\r
- html = html.replace('>', '>')\r
- return html.replace('"', '"')\r
-\r
- def isblocklevel(self, html):\r
- m = re.match(r'^\<\/?([^ >]+)', html)\r
- if m:\r
- if m.group(1)[0] in ('!', '?', '@', '%'):\r
- # Comment, php etc...\r
- return True\r
- return util.isBlockLevel(m.group(1))\r
- return False\r
-\r
-\r
-class AndSubstitutePostprocessor(Postprocessor):\r
- """ Restore valid entities """\r
-\r
- def run(self, text):\r
- text = text.replace(util.AMP_SUBSTITUTE, "&")\r
- return text\r
-\r
-\r
-class UnescapePostprocessor(Postprocessor):\r
- """ Restore escaped chars """\r
-\r
- RE = re.compile('%s(\d+)%s' % (util.STX, util.ETX))\r
-\r
- def unescape(self, m):\r
- return util.int2str(int(m.group(1)))\r
-\r
- def run(self, text):\r
- return self.RE.sub(self.unescape, text)\r
+"""
+POST-PROCESSORS
+=============================================================================
+
+Markdown also allows post-processors, which are similar to preprocessors in
+that they need to implement a "run" method. However, they are run after core
+processing.
+
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import util
+from . import odict
+import re
+
+
+def build_postprocessors(md_instance, **kwargs):
+ """ Build the default postprocessors for Markdown. """
+ postprocessors = odict.OrderedDict()
+ postprocessors["raw_html"] = RawHtmlPostprocessor(md_instance)
+ postprocessors["amp_substitute"] = AndSubstitutePostprocessor()
+ postprocessors["unescape"] = UnescapePostprocessor()
+ return postprocessors
+
+
+class Postprocessor(util.Processor):
+ """
+ Postprocessors are run after the ElementTree it converted back into text.
+
+ Each Postprocessor implements a "run" method that takes a pointer to a
+ text string, modifies it as necessary and returns a text string.
+
+ Postprocessors must extend markdown.Postprocessor.
+
+ """
+
+ def run(self, text):
+ """
+ Subclasses of Postprocessor should implement a `run` method, which
+ takes the html document as a single text string and returns a
+ (possibly modified) string.
+
+ """
+ pass #pragma: no cover
+
+
+class RawHtmlPostprocessor(Postprocessor):
+ """ Restore raw html to the document. """
+
+ def run(self, text):
+ """ Iterate over html stash and restore "safe" html. """
+ for i in range(self.markdown.htmlStash.html_counter):
+ html, safe = self.markdown.htmlStash.rawHtmlBlocks[i]
+ if self.markdown.safeMode and not safe:
+ if str(self.markdown.safeMode).lower() == 'escape':
+ html = self.escape(html)
+ elif str(self.markdown.safeMode).lower() == 'remove':
+ html = ''
+ else:
+ html = self.markdown.html_replacement_text
+ if self.isblocklevel(html) and (safe or not self.markdown.safeMode):
+ text = text.replace("<p>%s</p>" %
+ (self.markdown.htmlStash.get_placeholder(i)),
+ html + "\n")
+ text = text.replace(self.markdown.htmlStash.get_placeholder(i),
+ html)
+ return text
+
+ def escape(self, html):
+ """ Basic html escaping """
+ html = html.replace('&', '&')
+ html = html.replace('<', '<')
+ html = html.replace('>', '>')
+ return html.replace('"', '"')
+
+ def isblocklevel(self, html):
+ m = re.match(r'^\<\/?([^ >]+)', html)
+ if m:
+ if m.group(1)[0] in ('!', '?', '@', '%'):
+ # Comment, php etc...
+ return True
+ return util.isBlockLevel(m.group(1))
+ return False
+
+
+class AndSubstitutePostprocessor(Postprocessor):
+ """ Restore valid entities """
+
+ def run(self, text):
+ text = text.replace(util.AMP_SUBSTITUTE, "&")
+ return text
+
+
+class UnescapePostprocessor(Postprocessor):
+ """ Restore escaped chars """
+
+ RE = re.compile('%s(\d+)%s' % (util.STX, util.ETX))
+
+ def unescape(self, m):
+ return util.int2str(int(m.group(1)))
+
+ def run(self, text):
+ return self.RE.sub(self.unescape, text)
-"""\r
-PRE-PROCESSORS\r
-=============================================================================\r
-\r
-Preprocessors work on source text before we start doing anything too\r
-complicated.\r
-"""\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import util\r
-from . import odict\r
-import re\r
-\r
-\r
-def build_preprocessors(md_instance, **kwargs):\r
- """ Build the default set of preprocessors used by Markdown. """\r
- preprocessors = odict.OrderedDict()\r
- preprocessors['normalize_whitespace'] = NormalizeWhitespace(md_instance)\r
- if md_instance.safeMode != 'escape':\r
- preprocessors["html_block"] = HtmlBlockPreprocessor(md_instance)\r
- preprocessors["reference"] = ReferencePreprocessor(md_instance)\r
- return preprocessors\r
-\r
-\r
-class Preprocessor(util.Processor):\r
- """\r
- Preprocessors are run after the text is broken into lines.\r
-\r
- Each preprocessor implements a "run" method that takes a pointer to a\r
- list of lines of the document, modifies it as necessary and returns\r
- either the same pointer or a pointer to a new list.\r
-\r
- Preprocessors must extend markdown.Preprocessor.\r
-\r
- """\r
- def run(self, lines):\r
- """\r
- Each subclass of Preprocessor should override the `run` method, which\r
- takes the document as a list of strings split by newlines and returns\r
- the (possibly modified) list of lines.\r
-\r
- """\r
- pass\r
-\r
-\r
-class NormalizeWhitespace(Preprocessor):\r
- """ Normalize whitespace for consistant parsing. """\r
-\r
- def run(self, lines):\r
- source = '\n'.join(lines)\r
- source = source.replace(util.STX, "").replace(util.ETX, "")\r
- source = source.replace("\r\n", "\n").replace("\r", "\n") + "\n\n"\r
- source = source.expandtabs(self.markdown.tab_length)\r
- source = re.sub(r'(?<=\n) +\n', '\n', source)\r
- return source.split('\n')\r
-\r
-\r
-class HtmlBlockPreprocessor(Preprocessor):\r
- """Remove html blocks from the text and store them for later retrieval."""\r
-\r
- right_tag_patterns = ["</%s>", "%s>"]\r
- attrs_pattern = r"""\r
- \s+(?P<attr>[^>"'/= ]+)=(?P<q>['"])(?P<value>.*?)(?P=q) # attr="value"\r
- | # OR\r
- \s+(?P<attr1>[^>"'/= ]+)=(?P<value1>[^> ]+) # attr=value\r
- | # OR\r
- \s+(?P<attr2>[^>"'/= ]+) # attr\r
- """\r
- left_tag_pattern = r'^\<(?P<tag>[^> ]+)(?P<attrs>(%s)*)\s*\/?\>?' % attrs_pattern\r
- attrs_re = re.compile(attrs_pattern, re.VERBOSE)\r
- left_tag_re = re.compile(left_tag_pattern, re.VERBOSE)\r
- markdown_in_raw = False\r
-\r
- def _get_left_tag(self, block):\r
- m = self.left_tag_re.match(block)\r
- if m:\r
- tag = m.group('tag')\r
- raw_attrs = m.group('attrs')\r
- attrs = {}\r
- if raw_attrs:\r
- for ma in self.attrs_re.finditer(raw_attrs):\r
- if ma.group('attr'):\r
- if ma.group('value'):\r
- attrs[ma.group('attr').strip()] = ma.group('value')\r
- else:\r
- attrs[ma.group('attr').strip()] = ""\r
- elif ma.group('attr1'):\r
- if ma.group('value1'):\r
- attrs[ma.group('attr1').strip()] = ma.group('value1')\r
- else:\r
- attrs[ma.group('attr1').strip()] = ""\r
- elif ma.group('attr2'):\r
- attrs[ma.group('attr2').strip()] = ""\r
- return tag, len(m.group(0)), attrs\r
- else:\r
- tag = block[1:].split(">", 1)[0].lower()\r
- return tag, len(tag)+2, {}\r
-\r
- def _recursive_tagfind(self, ltag, rtag, start_index, block):\r
- while 1:\r
- i = block.find(rtag, start_index)\r
- if i == -1:\r
- return -1\r
- j = block.find(ltag, start_index)\r
- # if no ltag, or rtag found before another ltag, return index\r
- if (j > i or j == -1):\r
- return i + len(rtag)\r
- # another ltag found before rtag, use end of ltag as starting\r
- # point and search again\r
- j = block.find('>', j)\r
- start_index = self._recursive_tagfind(ltag, rtag, j + 1, block)\r
- if start_index == -1:\r
- # HTML potentially malformed- ltag has no corresponding\r
- # rtag\r
- return -1\r
-\r
- def _get_right_tag(self, left_tag, left_index, block):\r
- for p in self.right_tag_patterns:\r
- tag = p % left_tag\r
- i = self._recursive_tagfind("<%s" % left_tag, tag, left_index, block)\r
- if i > 2:\r
- return tag.lstrip("<").rstrip(">"), i\r
- return block.rstrip()[-left_index:-1].lower(), len(block)\r
-\r
- def _equal_tags(self, left_tag, right_tag):\r
- if left_tag[0] in ['?', '@', '%']: # handle PHP, etc.\r
- return True\r
- if ("/" + left_tag) == right_tag:\r
- return True\r
- if (right_tag == "--" and left_tag == "--"):\r
- return True\r
- elif left_tag == right_tag[1:] \\r
- and right_tag[0] == "/":\r
- return True\r
- else:\r
- return False\r
-\r
- def _is_oneliner(self, tag):\r
- return (tag in ['hr', 'hr/'])\r
-\r
- def _stringindex_to_listindex(self, stringindex, items):\r
- """\r
- Same effect as concatenating the strings in items,\r
- finding the character to which stringindex refers in that string,\r
- and returning the item in which that character resides.\r
- """\r
- items.append('dummy')\r
- i, count = 0, 0\r
- while count <= stringindex:\r
- count += len(items[i])\r
- i += 1\r
- return i - 1\r
-\r
- def _nested_markdown_in_html(self, items):\r
- """Find and process html child elements of the given element block."""\r
- for i, item in enumerate(items):\r
- if self.left_tag_re.match(item):\r
- left_tag, left_index, attrs = \\r
- self._get_left_tag(''.join(items[i:]))\r
- right_tag, data_index = self._get_right_tag(\r
- left_tag, left_index, ''.join(items[i:]))\r
- right_listindex = \\r
- self._stringindex_to_listindex(data_index, items[i:]) + i\r
- if 'markdown' in attrs.keys():\r
- items[i] = items[i][left_index:] # remove opening tag\r
- placeholder = self.markdown.htmlStash.store_tag(\r
- left_tag, attrs, i + 1, right_listindex + 1)\r
- items.insert(i, placeholder)\r
- if len(items) - right_listindex <= 1: # last nest, no tail\r
- right_listindex -= 1\r
- items[right_listindex] = items[right_listindex][\r
- :-len(right_tag) - 2] # remove closing tag\r
- else: # raw html\r
- if len(items) - right_listindex <= 1: # last element\r
- right_listindex -= 1\r
- placeholder = self.markdown.htmlStash.store('\n\n'.join(\r
- items[i:right_listindex]))\r
- del items[i:right_listindex]\r
- items.insert(i, placeholder)\r
- return items\r
-\r
- def run(self, lines):\r
- text = "\n".join(lines)\r
- new_blocks = []\r
- text = text.rsplit("\n\n")\r
- items = []\r
- left_tag = ''\r
- right_tag = ''\r
- in_tag = False # flag\r
-\r
- while text:\r
- block = text[0]\r
- if block.startswith("\n"):\r
- block = block[1:]\r
- text = text[1:]\r
-\r
- if block.startswith("\n"):\r
- block = block[1:]\r
-\r
- if not in_tag:\r
- if block.startswith("<") and len(block.strip()) > 1:\r
-\r
- if block[1:4] == "!--":\r
- # is a comment block\r
- left_tag, left_index, attrs = "--", 2, {}\r
- else:\r
- left_tag, left_index, attrs = self._get_left_tag(block)\r
- right_tag, data_index = self._get_right_tag(left_tag,\r
- left_index,\r
- block)\r
- # keep checking conditions below and maybe just append\r
-\r
- if data_index < len(block) \\r
- and (util.isBlockLevel(left_tag)\r
- or left_tag == '--'):\r
- text.insert(0, block[data_index:])\r
- block = block[:data_index]\r
-\r
- if not (util.isBlockLevel(left_tag) \\r
- or block[1] in ["!", "?", "@", "%"]):\r
- new_blocks.append(block)\r
- continue\r
-\r
- if self._is_oneliner(left_tag):\r
- new_blocks.append(block.strip())\r
- continue\r
-\r
- if block.rstrip().endswith(">") \\r
- and self._equal_tags(left_tag, right_tag):\r
- if self.markdown_in_raw and 'markdown' in attrs.keys():\r
- block = block[left_index:-len(right_tag) - 2]\r
- new_blocks.append(self.markdown.htmlStash.\r
- store_tag(left_tag, attrs, 0, 2))\r
- new_blocks.extend([block])\r
- else:\r
- new_blocks.append(\r
- self.markdown.htmlStash.store(block.strip()))\r
- continue\r
- else:\r
- # if is block level tag and is not complete\r
- if (not self._equal_tags(left_tag, right_tag)) and \\r
- (util.isBlockLevel(left_tag) or left_tag == "--"):\r
- items.append(block.strip())\r
- in_tag = True\r
- else:\r
- new_blocks.append(\r
- self.markdown.htmlStash.store(block.strip()))\r
-\r
- continue\r
-\r
- else:\r
- new_blocks.append(block)\r
-\r
- else:\r
- items.append(block)\r
-\r
- right_tag, data_index = self._get_right_tag(left_tag, 0, block)\r
-\r
- if self._equal_tags(left_tag, right_tag):\r
- # if find closing tag\r
-\r
- if data_index < len(block):\r
- # we have more text after right_tag\r
- items[-1] = block[:data_index]\r
- text.insert(0, block[data_index:])\r
-\r
- in_tag = False\r
- if self.markdown_in_raw and 'markdown' in attrs.keys():\r
- items[0] = items[0][left_index:]\r
- items[-1] = items[-1][:-len(right_tag) - 2]\r
- if items[len(items) - 1]: # not a newline/empty string\r
- right_index = len(items) + 3\r
- else:\r
- right_index = len(items) + 2\r
- new_blocks.append(self.markdown.htmlStash.store_tag(\r
- left_tag, attrs, 0, right_index))\r
- placeholderslen = len(self.markdown.htmlStash.tag_data)\r
- new_blocks.extend(\r
- self._nested_markdown_in_html(items))\r
- nests = len(self.markdown.htmlStash.tag_data) - \\r
- placeholderslen\r
- self.markdown.htmlStash.tag_data[-1 - nests][\r
- 'right_index'] += nests - 2\r
- else:\r
- new_blocks.append(\r
- self.markdown.htmlStash.store('\n\n'.join(items)))\r
- items = []\r
-\r
- if items:\r
- if self.markdown_in_raw and 'markdown' in attrs.keys():\r
- items[0] = items[0][left_index:]\r
- items[-1] = items[-1][:-len(right_tag) - 2]\r
- if items[len(items) - 1]: # not a newline/empty string\r
- right_index = len(items) + 3\r
- else:\r
- right_index = len(items) + 2\r
- new_blocks.append(\r
- self.markdown.htmlStash.store_tag(\r
- left_tag, attrs, 0, right_index))\r
- placeholderslen = len(self.markdown.htmlStash.tag_data)\r
- new_blocks.extend(self._nested_markdown_in_html(items))\r
- nests = len(self.markdown.htmlStash.tag_data) - placeholderslen\r
- self.markdown.htmlStash.tag_data[-1 - nests][\r
- 'right_index'] += nests - 2\r
- else:\r
- new_blocks.append(\r
- self.markdown.htmlStash.store('\n\n'.join(items)))\r
- new_blocks.append('\n')\r
-\r
- new_text = "\n\n".join(new_blocks)\r
- return new_text.split("\n")\r
-\r
-\r
-class ReferencePreprocessor(Preprocessor):\r
- """ Remove reference definitions from text and store for later use. """\r
-\r
- TITLE = r'[ ]*(\"(.*)\"|\'(.*)\'|\((.*)\))[ ]*'\r
- RE = re.compile(r'^[ ]{0,3}\[([^\]]*)\]:\s*([^ ]*)[ ]*(%s)?$' % TITLE, re.DOTALL)\r
- TITLE_RE = re.compile(r'^%s$' % TITLE)\r
-\r
- def run (self, lines):\r
- new_text = [];\r
- while lines:\r
- line = lines.pop(0)\r
- m = self.RE.match(line)\r
- if m:\r
- id = m.group(1).strip().lower()\r
- link = m.group(2).lstrip('<').rstrip('>')\r
- t = m.group(5) or m.group(6) or m.group(7)\r
- if not t:\r
- # Check next line for title\r
- tm = self.TITLE_RE.match(lines[0])\r
- if tm:\r
- lines.pop(0)\r
- t = tm.group(2) or tm.group(3) or tm.group(4)\r
- self.markdown.references[id] = (link, t)\r
- else:\r
- new_text.append(line)\r
-\r
- return new_text #+ "\n"\r
+"""
+PRE-PROCESSORS
+=============================================================================
+
+Preprocessors work on source text before we start doing anything too
+complicated.
+"""
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import util
+from . import odict
+import re
+
+
+def build_preprocessors(md_instance, **kwargs):
+ """ Build the default set of preprocessors used by Markdown. """
+ preprocessors = odict.OrderedDict()
+ preprocessors['normalize_whitespace'] = NormalizeWhitespace(md_instance)
+ if md_instance.safeMode != 'escape':
+ preprocessors["html_block"] = HtmlBlockPreprocessor(md_instance)
+ preprocessors["reference"] = ReferencePreprocessor(md_instance)
+ return preprocessors
+
+
+class Preprocessor(util.Processor):
+ """
+ Preprocessors are run after the text is broken into lines.
+
+ Each preprocessor implements a "run" method that takes a pointer to a
+ list of lines of the document, modifies it as necessary and returns
+ either the same pointer or a pointer to a new list.
+
+ Preprocessors must extend markdown.Preprocessor.
+
+ """
+ def run(self, lines):
+ """
+ Each subclass of Preprocessor should override the `run` method, which
+ takes the document as a list of strings split by newlines and returns
+ the (possibly modified) list of lines.
+
+ """
+ pass #pragma: no cover
+
+
+class NormalizeWhitespace(Preprocessor):
+ """ Normalize whitespace for consistant parsing. """
+
+ def run(self, lines):
+ source = '\n'.join(lines)
+ source = source.replace(util.STX, "").replace(util.ETX, "")
+ source = source.replace("\r\n", "\n").replace("\r", "\n") + "\n\n"
+ source = source.expandtabs(self.markdown.tab_length)
+ source = re.sub(r'(?<=\n) +\n', '\n', source)
+ return source.split('\n')
+
+
+class HtmlBlockPreprocessor(Preprocessor):
+ """Remove html blocks from the text and store them for later retrieval."""
+
+ right_tag_patterns = ["</%s>", "%s>"]
+ attrs_pattern = r"""
+ \s+(?P<attr>[^>"'/= ]+)=(?P<q>['"])(?P<value>.*?)(?P=q) # attr="value"
+ | # OR
+ \s+(?P<attr1>[^>"'/= ]+)=(?P<value1>[^> ]+) # attr=value
+ | # OR
+ \s+(?P<attr2>[^>"'/= ]+) # attr
+ """
+ left_tag_pattern = r'^\<(?P<tag>[^> ]+)(?P<attrs>(%s)*)\s*\/?\>?' % attrs_pattern
+ attrs_re = re.compile(attrs_pattern, re.VERBOSE)
+ left_tag_re = re.compile(left_tag_pattern, re.VERBOSE)
+ markdown_in_raw = False
+
+ def _get_left_tag(self, block):
+ m = self.left_tag_re.match(block)
+ if m:
+ tag = m.group('tag')
+ raw_attrs = m.group('attrs')
+ attrs = {}
+ if raw_attrs:
+ for ma in self.attrs_re.finditer(raw_attrs):
+ if ma.group('attr'):
+ if ma.group('value'):
+ attrs[ma.group('attr').strip()] = ma.group('value')
+ else:
+ attrs[ma.group('attr').strip()] = ""
+ elif ma.group('attr1'):
+ if ma.group('value1'):
+ attrs[ma.group('attr1').strip()] = ma.group('value1')
+ else:
+ attrs[ma.group('attr1').strip()] = ""
+ elif ma.group('attr2'):
+ attrs[ma.group('attr2').strip()] = ""
+ return tag, len(m.group(0)), attrs
+ else:
+ tag = block[1:].split(">", 1)[0].lower()
+ return tag, len(tag)+2, {}
+
+ def _recursive_tagfind(self, ltag, rtag, start_index, block):
+ while 1:
+ i = block.find(rtag, start_index)
+ if i == -1:
+ return -1
+ j = block.find(ltag, start_index)
+ # if no ltag, or rtag found before another ltag, return index
+ if (j > i or j == -1):
+ return i + len(rtag)
+ # another ltag found before rtag, use end of ltag as starting
+ # point and search again
+ j = block.find('>', j)
+ start_index = self._recursive_tagfind(ltag, rtag, j + 1, block)
+ if start_index == -1:
+ # HTML potentially malformed- ltag has no corresponding
+ # rtag
+ return -1
+
+ def _get_right_tag(self, left_tag, left_index, block):
+ for p in self.right_tag_patterns:
+ tag = p % left_tag
+ i = self._recursive_tagfind("<%s" % left_tag, tag, left_index, block)
+ if i > 2:
+ return tag.lstrip("<").rstrip(">"), i
+ return block.rstrip()[-left_index:-1].lower(), len(block)
+
+ def _equal_tags(self, left_tag, right_tag):
+ if left_tag[0] in ['?', '@', '%']: # handle PHP, etc.
+ return True
+ if ("/" + left_tag) == right_tag:
+ return True
+ if (right_tag == "--" and left_tag == "--"):
+ return True
+ elif left_tag == right_tag[1:] \
+ and right_tag[0] == "/":
+ return True
+ else:
+ return False
+
+ def _is_oneliner(self, tag):
+ return (tag in ['hr', 'hr/'])
+
+ def _stringindex_to_listindex(self, stringindex, items):
+ """
+ Same effect as concatenating the strings in items,
+ finding the character to which stringindex refers in that string,
+ and returning the index of the item in which that character resides.
+ """
+ items.append('dummy')
+ i, count = 0, 0
+ while count <= stringindex:
+ count += len(items[i])
+ i += 1
+ return i - 1
+
+ def _nested_markdown_in_html(self, items):
+ """Find and process html child elements of the given element block."""
+ for i, item in enumerate(items):
+ if self.left_tag_re.match(item):
+ left_tag, left_index, attrs = \
+ self._get_left_tag(''.join(items[i:]))
+ right_tag, data_index = self._get_right_tag(
+ left_tag, left_index, ''.join(items[i:]))
+ right_listindex = \
+ self._stringindex_to_listindex(data_index, items[i:]) + i
+ if 'markdown' in attrs.keys():
+ items[i] = items[i][left_index:] # remove opening tag
+ placeholder = self.markdown.htmlStash.store_tag(
+ left_tag, attrs, i + 1, right_listindex + 1)
+ items.insert(i, placeholder)
+ if len(items) - right_listindex <= 1: # last nest, no tail
+ right_listindex -= 1
+ items[right_listindex] = items[right_listindex][
+ :-len(right_tag) - 2] # remove closing tag
+ else: # raw html
+ if len(items) - right_listindex <= 1: # last element
+ right_listindex -= 1
+ placeholder = self.markdown.htmlStash.store('\n\n'.join(
+ items[i:right_listindex + 1]))
+ del items[i:right_listindex + 1]
+ items.insert(i, placeholder)
+ return items
+
+ def run(self, lines):
+ text = "\n".join(lines)
+ new_blocks = []
+ text = text.rsplit("\n\n")
+ items = []
+ left_tag = ''
+ right_tag = ''
+ in_tag = False # flag
+
+ while text:
+ block = text[0]
+ if block.startswith("\n"):
+ block = block[1:]
+ text = text[1:]
+
+ if block.startswith("\n"):
+ block = block[1:]
+
+ if not in_tag:
+ if block.startswith("<") and len(block.strip()) > 1:
+
+ if block[1:4] == "!--":
+ # is a comment block
+ left_tag, left_index, attrs = "--", 2, {}
+ else:
+ left_tag, left_index, attrs = self._get_left_tag(block)
+ right_tag, data_index = self._get_right_tag(left_tag,
+ left_index,
+ block)
+ # keep checking conditions below and maybe just append
+
+ if data_index < len(block) \
+ and (util.isBlockLevel(left_tag)
+ or left_tag == '--'):
+ text.insert(0, block[data_index:])
+ block = block[:data_index]
+
+ if not (util.isBlockLevel(left_tag) \
+ or block[1] in ["!", "?", "@", "%"]):
+ new_blocks.append(block)
+ continue
+
+ if self._is_oneliner(left_tag):
+ new_blocks.append(block.strip())
+ continue
+
+ if block.rstrip().endswith(">") \
+ and self._equal_tags(left_tag, right_tag):
+ if self.markdown_in_raw and 'markdown' in attrs.keys():
+ block = block[left_index:-len(right_tag) - 2]
+ new_blocks.append(self.markdown.htmlStash.
+ store_tag(left_tag, attrs, 0, 2))
+ new_blocks.extend([block])
+ else:
+ new_blocks.append(
+ self.markdown.htmlStash.store(block.strip()))
+ continue
+ else:
+ # if is block level tag and is not complete
+ if (not self._equal_tags(left_tag, right_tag)) and \
+ (util.isBlockLevel(left_tag) or left_tag == "--"):
+ items.append(block.strip())
+ in_tag = True
+ else:
+ new_blocks.append(
+ self.markdown.htmlStash.store(block.strip()))
+
+ continue
+
+ else:
+ new_blocks.append(block)
+
+ else:
+ items.append(block)
+
+ right_tag, data_index = self._get_right_tag(left_tag, 0, block)
+
+ if self._equal_tags(left_tag, right_tag):
+ # if find closing tag
+
+ if data_index < len(block):
+ # we have more text after right_tag
+ items[-1] = block[:data_index]
+ text.insert(0, block[data_index:])
+
+ in_tag = False
+ if self.markdown_in_raw and 'markdown' in attrs.keys():
+ items[0] = items[0][left_index:]
+ items[-1] = items[-1][:-len(right_tag) - 2]
+ if items[len(items) - 1]: # not a newline/empty string
+ right_index = len(items) + 3
+ else:
+ right_index = len(items) + 2
+ new_blocks.append(self.markdown.htmlStash.store_tag(
+ left_tag, attrs, 0, right_index))
+ placeholderslen = len(self.markdown.htmlStash.tag_data)
+ new_blocks.extend(
+ self._nested_markdown_in_html(items))
+ nests = len(self.markdown.htmlStash.tag_data) - \
+ placeholderslen
+ self.markdown.htmlStash.tag_data[-1 - nests][
+ 'right_index'] += nests - 2
+ else:
+ new_blocks.append(
+ self.markdown.htmlStash.store('\n\n'.join(items)))
+ items = []
+
+ if items:
+ if self.markdown_in_raw and 'markdown' in attrs.keys():
+ items[0] = items[0][left_index:]
+ items[-1] = items[-1][:-len(right_tag) - 2]
+ if items[len(items) - 1]: # not a newline/empty string
+ right_index = len(items) + 3
+ else:
+ right_index = len(items) + 2
+ new_blocks.append(
+ self.markdown.htmlStash.store_tag(
+ left_tag, attrs, 0, right_index))
+ placeholderslen = len(self.markdown.htmlStash.tag_data)
+ new_blocks.extend(self._nested_markdown_in_html(items))
+ nests = len(self.markdown.htmlStash.tag_data) - placeholderslen
+ self.markdown.htmlStash.tag_data[-1 - nests][
+ 'right_index'] += nests - 2
+ else:
+ new_blocks.append(
+ self.markdown.htmlStash.store('\n\n'.join(items)))
+ new_blocks.append('\n')
+
+ new_text = "\n\n".join(new_blocks)
+ return new_text.split("\n")
+
+
+class ReferencePreprocessor(Preprocessor):
+ """ Remove reference definitions from text and store for later use. """
+
+ TITLE = r'[ ]*(\"(.*)\"|\'(.*)\'|\((.*)\))[ ]*'
+ RE = re.compile(r'^[ ]{0,3}\[([^\]]*)\]:\s*([^ ]*)[ ]*(%s)?$' % TITLE, re.DOTALL)
+ TITLE_RE = re.compile(r'^%s$' % TITLE)
+
+ def run (self, lines):
+ new_text = [];
+ while lines:
+ line = lines.pop(0)
+ m = self.RE.match(line)
+ if m:
+ id = m.group(1).strip().lower()
+ link = m.group(2).lstrip('<').rstrip('>')
+ t = m.group(5) or m.group(6) or m.group(7)
+ if not t:
+ # Check next line for title
+ tm = self.TITLE_RE.match(lines[0])
+ if tm:
+ lines.pop(0)
+ t = tm.group(2) or tm.group(3) or tm.group(4)
+ self.markdown.references[id] = (link, t)
+ else:
+ new_text.append(line)
+
+ return new_text #+ "\n"
-# markdown/searializers.py\r
-#\r
-# Add x/html serialization to Elementree\r
-# Taken from ElementTree 1.3 preview with slight modifications\r
-#\r
-# Copyright (c) 1999-2007 by Fredrik Lundh. All rights reserved.\r
-#\r
-# fredrik@pythonware.com\r
-# http://www.pythonware.com\r
-#\r
-# --------------------------------------------------------------------\r
-# The ElementTree toolkit is\r
-#\r
-# Copyright (c) 1999-2007 by Fredrik Lundh\r
-#\r
-# By obtaining, using, and/or copying this software and/or its\r
-# associated documentation, you agree that you have read, understood,\r
-# and will comply with the following terms and conditions:\r
-#\r
-# Permission to use, copy, modify, and distribute this software and\r
-# its associated documentation for any purpose and without fee is\r
-# hereby granted, provided that the above copyright notice appears in\r
-# all copies, and that both that copyright notice and this permission\r
-# notice appear in supporting documentation, and that the name of\r
-# Secret Labs AB or the author not be used in advertising or publicity\r
-# pertaining to distribution of the software without specific, written\r
-# prior permission.\r
-#\r
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD\r
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-\r
-# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR\r
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY\r
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\r
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS\r
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE\r
-# OF THIS SOFTWARE.\r
-# --------------------------------------------------------------------\r
-\r
-\r
-from __future__ import absolute_import\r
-from __future__ import unicode_literals\r
-from . import util\r
-ElementTree = util.etree.ElementTree\r
-QName = util.etree.QName\r
-if hasattr(util.etree, 'test_comment'):\r
- Comment = util.etree.test_comment\r
-else:\r
- Comment = util.etree.Comment\r
-PI = util.etree.PI\r
-ProcessingInstruction = util.etree.ProcessingInstruction\r
-\r
-__all__ = ['to_html_string', 'to_xhtml_string']\r
-\r
-HTML_EMPTY = ("area", "base", "basefont", "br", "col", "frame", "hr",\r
- "img", "input", "isindex", "link", "meta" "param")\r
-\r
-try:\r
- HTML_EMPTY = set(HTML_EMPTY)\r
-except NameError:\r
- pass\r
-\r
-_namespace_map = {\r
- # "well-known" namespace prefixes\r
- "http://www.w3.org/XML/1998/namespace": "xml",\r
- "http://www.w3.org/1999/xhtml": "html",\r
- "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",\r
- "http://schemas.xmlsoap.org/wsdl/": "wsdl",\r
- # xml schema\r
- "http://www.w3.org/2001/XMLSchema": "xs",\r
- "http://www.w3.org/2001/XMLSchema-instance": "xsi",\r
- # dublic core\r
- "http://purl.org/dc/elements/1.1/": "dc",\r
-}\r
-\r
-\r
-def _raise_serialization_error(text):\r
- raise TypeError(\r
- "cannot serialize %r (type %s)" % (text, type(text).__name__)\r
- )\r
-\r
-def _encode(text, encoding):\r
- try:\r
- return text.encode(encoding, "xmlcharrefreplace")\r
- except (TypeError, AttributeError):\r
- _raise_serialization_error(text)\r
-\r
-def _escape_cdata(text):\r
- # escape character data\r
- try:\r
- # it's worth avoiding do-nothing calls for strings that are\r
- # shorter than 500 character, or so. assume that's, by far,\r
- # the most common case in most applications.\r
- if "&" in text:\r
- text = text.replace("&", "&")\r
- if "<" in text:\r
- text = text.replace("<", "<")\r
- if ">" in text:\r
- text = text.replace(">", ">")\r
- return text\r
- except (TypeError, AttributeError):\r
- _raise_serialization_error(text)\r
-\r
-\r
-def _escape_attrib(text):\r
- # escape attribute value\r
- try:\r
- if "&" in text:\r
- text = text.replace("&", "&")\r
- if "<" in text:\r
- text = text.replace("<", "<")\r
- if ">" in text:\r
- text = text.replace(">", ">")\r
- if "\"" in text:\r
- text = text.replace("\"", """)\r
- if "\n" in text:\r
- text = text.replace("\n", " ")\r
- return text\r
- except (TypeError, AttributeError):\r
- _raise_serialization_error(text)\r
-\r
-def _escape_attrib_html(text):\r
- # escape attribute value\r
- try:\r
- if "&" in text:\r
- text = text.replace("&", "&")\r
- if "<" in text:\r
- text = text.replace("<", "<")\r
- if ">" in text:\r
- text = text.replace(">", ">")\r
- if "\"" in text:\r
- text = text.replace("\"", """)\r
- return text\r
- except (TypeError, AttributeError):\r
- _raise_serialization_error(text)\r
-\r
-\r
-def _serialize_html(write, elem, qnames, namespaces, format):\r
- tag = elem.tag\r
- text = elem.text\r
- if tag is Comment:\r
- write("<!--%s-->" % _escape_cdata(text))\r
- elif tag is ProcessingInstruction:\r
- write("<?%s?>" % _escape_cdata(text))\r
- else:\r
- tag = qnames[tag]\r
- if tag is None:\r
- if text:\r
- write(_escape_cdata(text))\r
- for e in elem:\r
- _serialize_html(write, e, qnames, None, format)\r
- else:\r
- write("<" + tag)\r
- items = elem.items()\r
- if items or namespaces:\r
- items = sorted(items) # lexical order\r
- for k, v in items:\r
- if isinstance(k, QName):\r
- k = k.text\r
- if isinstance(v, QName):\r
- v = qnames[v.text]\r
- else:\r
- v = _escape_attrib_html(v)\r
- if qnames[k] == v and format == 'html':\r
- # handle boolean attributes\r
- write(" %s" % v)\r
- else:\r
- write(" %s=\"%s\"" % (qnames[k], v))\r
- if namespaces:\r
- items = namespaces.items()\r
- items.sort(key=lambda x: x[1]) # sort on prefix\r
- for v, k in items:\r
- if k:\r
- k = ":" + k\r
- write(" xmlns%s=\"%s\"" % (k, _escape_attrib(v)))\r
- if format == "xhtml" and tag.lower() in HTML_EMPTY:\r
- write(" />")\r
- else:\r
- write(">")\r
- if text:\r
- if tag.lower() in ["script", "style"]:\r
- write(text)\r
- else:\r
- write(_escape_cdata(text))\r
- for e in elem:\r
- _serialize_html(write, e, qnames, None, format)\r
- if tag.lower() not in HTML_EMPTY:\r
- write("</" + tag + ">")\r
- if elem.tail:\r
- write(_escape_cdata(elem.tail))\r
-\r
-def _write_html(root,\r
- encoding=None,\r
- default_namespace=None,\r
- format="html"):\r
- assert root is not None\r
- data = []\r
- write = data.append\r
- qnames, namespaces = _namespaces(root, default_namespace)\r
- _serialize_html(write, root, qnames, namespaces, format)\r
- if encoding is None:\r
- return "".join(data)\r
- else:\r
- return _encode("".join(data))\r
-\r
-\r
-# --------------------------------------------------------------------\r
-# serialization support\r
-\r
-def _namespaces(elem, default_namespace=None):\r
- # identify namespaces used in this tree\r
-\r
- # maps qnames to *encoded* prefix:local names\r
- qnames = {None: None}\r
-\r
- # maps uri:s to prefixes\r
- namespaces = {}\r
- if default_namespace:\r
- namespaces[default_namespace] = ""\r
-\r
- def add_qname(qname):\r
- # calculate serialized qname representation\r
- try:\r
- if qname[:1] == "{":\r
- uri, tag = qname[1:].split("}", 1)\r
- prefix = namespaces.get(uri)\r
- if prefix is None:\r
- prefix = _namespace_map.get(uri)\r
- if prefix is None:\r
- prefix = "ns%d" % len(namespaces)\r
- if prefix != "xml":\r
- namespaces[uri] = prefix\r
- if prefix:\r
- qnames[qname] = "%s:%s" % (prefix, tag)\r
- else:\r
- qnames[qname] = tag # default element\r
- else:\r
- if default_namespace:\r
- raise ValueError(\r
- "cannot use non-qualified names with "\r
- "default_namespace option"\r
- )\r
- qnames[qname] = qname\r
- except TypeError:\r
- _raise_serialization_error(qname)\r
-\r
- # populate qname and namespaces table\r
- try:\r
- iterate = elem.iter\r
- except AttributeError:\r
- iterate = elem.getiterator # cET compatibility\r
- for elem in iterate():\r
- tag = elem.tag\r
- if isinstance(tag, QName) and tag.text not in qnames:\r
- add_qname(tag.text)\r
- elif isinstance(tag, util.string_type):\r
- if tag not in qnames:\r
- add_qname(tag)\r
- elif tag is not None and tag is not Comment and tag is not PI:\r
- _raise_serialization_error(tag)\r
- for key, value in elem.items():\r
- if isinstance(key, QName):\r
- key = key.text\r
- if key not in qnames:\r
- add_qname(key)\r
- if isinstance(value, QName) and value.text not in qnames:\r
- add_qname(value.text)\r
- text = elem.text\r
- if isinstance(text, QName) and text.text not in qnames:\r
- add_qname(text.text)\r
- return qnames, namespaces\r
-\r
-def to_html_string(element):\r
- return _write_html(ElementTree(element).getroot(), format="html")\r
-\r
-def to_xhtml_string(element):\r
- return _write_html(ElementTree(element).getroot(), format="xhtml")\r
+# markdown/searializers.py
+#
+# Add x/html serialization to Elementree
+# Taken from ElementTree 1.3 preview with slight modifications
+#
+# Copyright (c) 1999-2007 by Fredrik Lundh. All rights reserved.
+#
+# fredrik@pythonware.com
+# http://www.pythonware.com
+#
+# --------------------------------------------------------------------
+# The ElementTree toolkit is
+#
+# Copyright (c) 1999-2007 by Fredrik Lundh
+#
+# By obtaining, using, and/or copying this software and/or its
+# associated documentation, you agree that you have read, understood,
+# and will comply with the following terms and conditions:
+#
+# Permission to use, copy, modify, and distribute this software and
+# its associated documentation for any purpose and without fee is
+# hereby granted, provided that the above copyright notice appears in
+# all copies, and that both that copyright notice and this permission
+# notice appear in supporting documentation, and that the name of
+# Secret Labs AB or the author not be used in advertising or publicity
+# pertaining to distribution of the software without specific, written
+# prior permission.
+#
+# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
+# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
+# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
+# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
+# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+# OF THIS SOFTWARE.
+# --------------------------------------------------------------------
+
+
+from __future__ import absolute_import
+from __future__ import unicode_literals
+from . import util
+ElementTree = util.etree.ElementTree
+QName = util.etree.QName
+if hasattr(util.etree, 'test_comment'): #pragma: no cover
+ Comment = util.etree.test_comment
+else: #pragma: no cover
+ Comment = util.etree.Comment
+PI = util.etree.PI
+ProcessingInstruction = util.etree.ProcessingInstruction
+
+__all__ = ['to_html_string', 'to_xhtml_string']
+
+HTML_EMPTY = ("area", "base", "basefont", "br", "col", "frame", "hr",
+ "img", "input", "isindex", "link", "meta" "param")
+
+try:
+ HTML_EMPTY = set(HTML_EMPTY)
+except NameError: #pragma: no cover
+ pass
+
+_namespace_map = {
+ # "well-known" namespace prefixes
+ "http://www.w3.org/XML/1998/namespace": "xml",
+ "http://www.w3.org/1999/xhtml": "html",
+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
+ "http://schemas.xmlsoap.org/wsdl/": "wsdl",
+ # xml schema
+ "http://www.w3.org/2001/XMLSchema": "xs",
+ "http://www.w3.org/2001/XMLSchema-instance": "xsi",
+ # dublic core
+ "http://purl.org/dc/elements/1.1/": "dc",
+}
+
+
+def _raise_serialization_error(text): #pragma: no cover
+ raise TypeError(
+ "cannot serialize %r (type %s)" % (text, type(text).__name__)
+ )
+
+def _encode(text, encoding):
+ try:
+ return text.encode(encoding, "xmlcharrefreplace")
+ except (TypeError, AttributeError): #pragma: no cover
+ _raise_serialization_error(text)
+
+def _escape_cdata(text):
+ # escape character data
+ try:
+ # it's worth avoiding do-nothing calls for strings that are
+ # shorter than 500 character, or so. assume that's, by far,
+ # the most common case in most applications.
+ if "&" in text:
+ text = text.replace("&", "&")
+ if "<" in text:
+ text = text.replace("<", "<")
+ if ">" in text:
+ text = text.replace(">", ">")
+ return text
+ except (TypeError, AttributeError): #pragma: no cover
+ _raise_serialization_error(text)
+
+
+def _escape_attrib(text):
+ # escape attribute value
+ try:
+ if "&" in text:
+ text = text.replace("&", "&")
+ if "<" in text:
+ text = text.replace("<", "<")
+ if ">" in text:
+ text = text.replace(">", ">")
+ if "\"" in text:
+ text = text.replace("\"", """)
+ if "\n" in text:
+ text = text.replace("\n", " ")
+ return text
+ except (TypeError, AttributeError): #pragma: no cover
+ _raise_serialization_error(text)
+
+def _escape_attrib_html(text):
+ # escape attribute value
+ try:
+ if "&" in text:
+ text = text.replace("&", "&")
+ if "<" in text:
+ text = text.replace("<", "<")
+ if ">" in text:
+ text = text.replace(">", ">")
+ if "\"" in text:
+ text = text.replace("\"", """)
+ return text
+ except (TypeError, AttributeError): #pragma: no cover
+ _raise_serialization_error(text)
+
+
+def _serialize_html(write, elem, qnames, namespaces, format):
+ tag = elem.tag
+ text = elem.text
+ if tag is Comment:
+ write("<!--%s-->" % _escape_cdata(text))
+ elif tag is ProcessingInstruction:
+ write("<?%s?>" % _escape_cdata(text))
+ else:
+ tag = qnames[tag]
+ if tag is None:
+ if text:
+ write(_escape_cdata(text))
+ for e in elem:
+ _serialize_html(write, e, qnames, None, format)
+ else:
+ write("<" + tag)
+ items = elem.items()
+ if items or namespaces:
+ items = sorted(items) # lexical order
+ for k, v in items:
+ if isinstance(k, QName):
+ k = k.text
+ if isinstance(v, QName):
+ v = qnames[v.text]
+ else:
+ v = _escape_attrib_html(v)
+ if qnames[k] == v and format == 'html':
+ # handle boolean attributes
+ write(" %s" % v)
+ else:
+ write(" %s=\"%s\"" % (qnames[k], v))
+ if namespaces:
+ items = namespaces.items()
+ items.sort(key=lambda x: x[1]) # sort on prefix
+ for v, k in items:
+ if k:
+ k = ":" + k
+ write(" xmlns%s=\"%s\"" % (k, _escape_attrib(v)))
+ if format == "xhtml" and tag.lower() in HTML_EMPTY:
+ write(" />")
+ else:
+ write(">")
+ if text:
+ if tag.lower() in ["script", "style"]:
+ write(text)
+ else:
+ write(_escape_cdata(text))
+ for e in elem:
+ _serialize_html(write, e, qnames, None, format)
+ if tag.lower() not in HTML_EMPTY:
+ write("</" + tag + ">")
+ if elem.tail:
+ write(_escape_cdata(elem.tail))
+
+def _write_html(root,
+ encoding=None,
+ default_namespace=None,
+ format="html"):
+ assert root is not None
+ data = []
+ write = data.append
+ qnames, namespaces = _namespaces(root, default_namespace)
+ _serialize_html(write, root, qnames, namespaces, format)
+ if encoding is None:
+ return "".join(data)
+ else:
+ return _encode("".join(data))
+
+
+# --------------------------------------------------------------------
+# serialization support
+
+def _namespaces(elem, default_namespace=None):
+ # identify namespaces used in this tree
+
+ # maps qnames to *encoded* prefix:local names
+ qnames = {None: None}
+
+ # maps uri:s to prefixes
+ namespaces = {}
+ if default_namespace:
+ namespaces[default_namespace] = ""
+
+ def add_qname(qname):
+ # calculate serialized qname representation
+ try:
+ if qname[:1] == "{":
+ uri, tag = qname[1:].split("}", 1)
+ prefix = namespaces.get(uri)
+ if prefix is None:
+ prefix = _namespace_map.get(uri)
+ if prefix is None:
+ prefix = "ns%d" % len(namespaces)
+ if prefix != "xml":
+ namespaces[uri] = prefix
+ if prefix:
+ qnames[qname] = "%s:%s" % (prefix, tag)
+ else:
+ qnames[qname] = tag # default element
+ else:
+ if default_namespace:
+ raise ValueError(
+ "cannot use non-qualified names with "
+ "default_namespace option"
+ )
+ qnames[qname] = qname
+ except TypeError: #pragma: no cover
+ _raise_serialization_error(qname)
+
+ # populate qname and namespaces table
+ try:
+ iterate = elem.iter
+ except AttributeError:
+ iterate = elem.getiterator # cET compatibility
+ for elem in iterate():
+ tag = elem.tag
+ if isinstance(tag, QName) and tag.text not in qnames:
+ add_qname(tag.text)
+ elif isinstance(tag, util.string_type):
+ if tag not in qnames:
+ add_qname(tag)
+ elif tag is not None and tag is not Comment and tag is not PI:
+ _raise_serialization_error(tag)
+ for key, value in elem.items():
+ if isinstance(key, QName):
+ key = key.text
+ if key not in qnames:
+ add_qname(key)
+ if isinstance(value, QName) and value.text not in qnames:
+ add_qname(value.text)
+ text = elem.text
+ if isinstance(text, QName) and text.text not in qnames:
+ add_qname(text.text)
+ return qnames, namespaces
+
+def to_html_string(element):
+ return _write_html(ElementTree(element).getroot(), format="html")
+
+def to_xhtml_string(element):
+ return _write_html(ElementTree(element).getroot(), format="xhtml")
-from __future__ import unicode_literals\r
-from __future__ import absolute_import\r
-from . import util\r
-from . import odict\r
-from . import inlinepatterns\r
-\r
-\r
-def build_treeprocessors(md_instance, **kwargs):\r
- """ Build the default treeprocessors for Markdown. """\r
- treeprocessors = odict.OrderedDict()\r
- treeprocessors["inline"] = InlineProcessor(md_instance)\r
- treeprocessors["prettify"] = PrettifyTreeprocessor(md_instance)\r
- return treeprocessors\r
-\r
-\r
-def isString(s):\r
- """ Check if it's string """\r
- if not isinstance(s, util.AtomicString):\r
- return isinstance(s, util.string_type)\r
- return False\r
-\r
-\r
-class Treeprocessor(util.Processor):\r
- """\r
- Treeprocessors are run on the ElementTree object before serialization.\r
-\r
- Each Treeprocessor implements a "run" method that takes a pointer to an\r
- ElementTree, modifies it as necessary and returns an ElementTree\r
- object.\r
-\r
- Treeprocessors must extend markdown.Treeprocessor.\r
-\r
- """\r
- def run(self, root):\r
- """\r
- Subclasses of Treeprocessor should implement a `run` method, which\r
- takes a root ElementTree. This method can return another ElementTree \r
- object, and the existing root ElementTree will be replaced, or it can \r
- modify the current tree and return None.\r
- """\r
- pass\r
-\r
-\r
-class InlineProcessor(Treeprocessor):\r
- """\r
- A Treeprocessor that traverses a tree, applying inline patterns.\r
- """\r
-\r
- def __init__(self, md):\r
- self.__placeholder_prefix = util.INLINE_PLACEHOLDER_PREFIX\r
- self.__placeholder_suffix = util.ETX\r
- self.__placeholder_length = 4 + len(self.__placeholder_prefix) \\r
- + len(self.__placeholder_suffix)\r
- self.__placeholder_re = util.INLINE_PLACEHOLDER_RE\r
- self.markdown = md\r
-\r
- def __makePlaceholder(self, type):\r
- """ Generate a placeholder """\r
- id = "%04d" % len(self.stashed_nodes)\r
- hash = util.INLINE_PLACEHOLDER % id\r
- return hash, id\r
-\r
- def __findPlaceholder(self, data, index):\r
- """\r
- Extract id from data string, start from index\r
-\r
- Keyword arguments:\r
-\r
- * data: string\r
- * index: index, from which we start search\r
-\r
- Returns: placeholder id and string index, after the found placeholder.\r
- \r
- """\r
- m = self.__placeholder_re.search(data, index)\r
- if m:\r
- return m.group(1), m.end()\r
- else:\r
- return None, index + 1\r
-\r
- def __stashNode(self, node, type):\r
- """ Add node to stash """\r
- placeholder, id = self.__makePlaceholder(type)\r
- self.stashed_nodes[id] = node\r
- return placeholder\r
-\r
- def __handleInline(self, data, patternIndex=0):\r
- """\r
- Process string with inline patterns and replace it\r
- with placeholders\r
-\r
- Keyword arguments:\r
-\r
- * data: A line of Markdown text\r
- * patternIndex: The index of the inlinePattern to start with\r
-\r
- Returns: String with placeholders.\r
-\r
- """\r
- if not isinstance(data, util.AtomicString):\r
- startIndex = 0\r
- while patternIndex < len(self.markdown.inlinePatterns):\r
- data, matched, startIndex = self.__applyPattern(\r
- self.markdown.inlinePatterns.value_for_index(patternIndex),\r
- data, patternIndex, startIndex)\r
- if not matched:\r
- patternIndex += 1\r
- return data\r
-\r
- def __processElementText(self, node, subnode, isText=True):\r
- """\r
- Process placeholders in Element.text or Element.tail\r
- of Elements popped from self.stashed_nodes.\r
-\r
- Keywords arguments:\r
-\r
- * node: parent node\r
- * subnode: processing node\r
- * isText: bool variable, True - it's text, False - it's tail\r
-\r
- Returns: None\r
-\r
- """\r
- if isText:\r
- text = subnode.text\r
- subnode.text = None\r
- else:\r
- text = subnode.tail\r
- subnode.tail = None\r
-\r
- childResult = self.__processPlaceholders(text, subnode)\r
-\r
- if not isText and node is not subnode:\r
- pos = list(node).index(subnode)\r
- node.remove(subnode)\r
- else:\r
- pos = 0\r
-\r
- childResult.reverse()\r
- for newChild in childResult:\r
- node.insert(pos, newChild)\r
-\r
- def __processPlaceholders(self, data, parent):\r
- """\r
- Process string with placeholders and generate ElementTree tree.\r
-\r
- Keyword arguments:\r
-\r
- * data: string with placeholders instead of ElementTree elements.\r
- * parent: Element, which contains processing inline data\r
-\r
- Returns: list with ElementTree elements with applied inline patterns.\r
- \r
- """\r
- def linkText(text):\r
- if text:\r
- if result:\r
- if result[-1].tail:\r
- result[-1].tail += text\r
- else:\r
- result[-1].tail = text\r
- else:\r
- if parent.text:\r
- parent.text += text\r
- else:\r
- parent.text = text\r
- result = []\r
- strartIndex = 0\r
- while data:\r
- index = data.find(self.__placeholder_prefix, strartIndex)\r
- if index != -1:\r
- id, phEndIndex = self.__findPlaceholder(data, index)\r
-\r
- if id in self.stashed_nodes:\r
- node = self.stashed_nodes.get(id)\r
-\r
- if index > 0:\r
- text = data[strartIndex:index]\r
- linkText(text)\r
-\r
- if not isString(node): # it's Element\r
- for child in [node] + list(node):\r
- if child.tail:\r
- if child.tail.strip():\r
- self.__processElementText(node, child,False)\r
- if child.text:\r
- if child.text.strip():\r
- self.__processElementText(child, child)\r
- else: # it's just a string\r
- linkText(node)\r
- strartIndex = phEndIndex\r
- continue\r
-\r
- strartIndex = phEndIndex\r
- result.append(node)\r
-\r
- else: # wrong placeholder\r
- end = index + len(self.__placeholder_prefix)\r
- linkText(data[strartIndex:end])\r
- strartIndex = end\r
- else:\r
- text = data[strartIndex:]\r
- if isinstance(data, util.AtomicString):\r
- # We don't want to loose the AtomicString\r
- text = util.AtomicString(text)\r
- linkText(text)\r
- data = ""\r
-\r
- return result\r
-\r
- def __applyPattern(self, pattern, data, patternIndex, startIndex=0):\r
- """\r
- Check if the line fits the pattern, create the necessary\r
- elements, add it to stashed_nodes.\r
-\r
- Keyword arguments:\r
-\r
- * data: the text to be processed\r
- * pattern: the pattern to be checked\r
- * patternIndex: index of current pattern\r
- * startIndex: string index, from which we start searching\r
-\r
- Returns: String with placeholders instead of ElementTree elements.\r
-\r
- """\r
- match = pattern.getCompiledRegExp().match(data[startIndex:])\r
- leftData = data[:startIndex]\r
-\r
- if not match:\r
- return data, False, 0\r
-\r
- node = pattern.handleMatch(match)\r
-\r
- if node is None:\r
- return data, True, len(leftData)+match.span(len(match.groups()))[0]\r
-\r
- if not isString(node):\r
- if not isinstance(node.text, util.AtomicString):\r
- # We need to process current node too\r
- for child in [node] + list(node):\r
- if not isString(node):\r
- if child.text: \r
- child.text = self.__handleInline(child.text,\r
- patternIndex + 1)\r
- if child.tail:\r
- child.tail = self.__handleInline(child.tail,\r
- patternIndex)\r
-\r
- placeholder = self.__stashNode(node, pattern.type())\r
-\r
- return "%s%s%s%s" % (leftData,\r
- match.group(1),\r
- placeholder, match.groups()[-1]), True, 0\r
-\r
- def run(self, tree):\r
- """Apply inline patterns to a parsed Markdown tree.\r
-\r
- Iterate over ElementTree, find elements with inline tag, apply inline\r
- patterns and append newly created Elements to tree. If you don't\r
- want to process your data with inline paterns, instead of normal string,\r
- use subclass AtomicString:\r
-\r
- node.text = markdown.AtomicString("This will not be processed.")\r
-\r
- Arguments:\r
-\r
- * tree: ElementTree object, representing Markdown tree.\r
-\r
- Returns: ElementTree object with applied inline patterns.\r
-\r
- """\r
- self.stashed_nodes = {}\r
-\r
- stack = [tree]\r
-\r
- while stack:\r
- currElement = stack.pop()\r
- insertQueue = []\r
- for child in currElement:\r
- if child.text and not isinstance(child.text, util.AtomicString):\r
- text = child.text\r
- child.text = None\r
- lst = self.__processPlaceholders(self.__handleInline(\r
- text), child)\r
- stack += lst\r
- insertQueue.append((child, lst))\r
- if child.tail:\r
- tail = self.__handleInline(child.tail)\r
- dumby = util.etree.Element('d')\r
- tailResult = self.__processPlaceholders(tail, dumby)\r
- if dumby.text:\r
- child.tail = dumby.text\r
- else:\r
- child.tail = None\r
- pos = list(currElement).index(child) + 1\r
- tailResult.reverse()\r
- for newChild in tailResult:\r
- currElement.insert(pos, newChild)\r
- if len(child):\r
- stack.append(child)\r
-\r
- for element, lst in insertQueue:\r
- if self.markdown.enable_attributes:\r
- if element.text and isString(element.text):\r
- element.text = \\r
- inlinepatterns.handleAttributes(element.text, \r
- element)\r
- i = 0\r
- for newChild in lst:\r
- if self.markdown.enable_attributes:\r
- # Processing attributes\r
- if newChild.tail and isString(newChild.tail):\r
- newChild.tail = \\r
- inlinepatterns.handleAttributes(newChild.tail,\r
- element)\r
- if newChild.text and isString(newChild.text):\r
- newChild.text = \\r
- inlinepatterns.handleAttributes(newChild.text,\r
- newChild)\r
- element.insert(i, newChild)\r
- i += 1\r
- return tree\r
-\r
-\r
-class PrettifyTreeprocessor(Treeprocessor):\r
- """ Add linebreaks to the html document. """\r
-\r
- def _prettifyETree(self, elem):\r
- """ Recursively add linebreaks to ElementTree children. """\r
-\r
- i = "\n"\r
- if util.isBlockLevel(elem.tag) and elem.tag not in ['code', 'pre']:\r
- if (not elem.text or not elem.text.strip()) \\r
- and len(elem) and util.isBlockLevel(elem[0].tag):\r
- elem.text = i\r
- for e in elem:\r
- if util.isBlockLevel(e.tag):\r
- self._prettifyETree(e)\r
- if not elem.tail or not elem.tail.strip():\r
- elem.tail = i\r
- if not elem.tail or not elem.tail.strip():\r
- elem.tail = i\r
-\r
- def run(self, root):\r
- """ Add linebreaks to ElementTree root object. """\r
-\r
- self._prettifyETree(root)\r
- # Do <br />'s seperately as they are often in the middle of\r
- # inline content and missed by _prettifyETree.\r
- brs = root.getiterator('br')\r
- for br in brs:\r
- if not br.tail or not br.tail.strip():\r
- br.tail = '\n'\r
- else:\r
- br.tail = '\n%s' % br.tail\r
- # Clean up extra empty lines at end of code blocks.\r
- pres = root.getiterator('pre')\r
- for pre in pres:\r
- if len(pre) and pre[0].tag == 'code':\r
- pre[0].text = pre[0].text.rstrip() + '\n'\r
+from __future__ import unicode_literals
+from __future__ import absolute_import
+from . import util
+from . import odict
+from . import inlinepatterns
+
+
+def build_treeprocessors(md_instance, **kwargs):
+ """ Build the default treeprocessors for Markdown. """
+ treeprocessors = odict.OrderedDict()
+ treeprocessors["inline"] = InlineProcessor(md_instance)
+ treeprocessors["prettify"] = PrettifyTreeprocessor(md_instance)
+ return treeprocessors
+
+
+def isString(s):
+ """ Check if it's string """
+ if not isinstance(s, util.AtomicString):
+ return isinstance(s, util.string_type)
+ return False
+
+
+class Treeprocessor(util.Processor):
+ """
+ Treeprocessors are run on the ElementTree object before serialization.
+
+ Each Treeprocessor implements a "run" method that takes a pointer to an
+ ElementTree, modifies it as necessary and returns an ElementTree
+ object.
+
+ Treeprocessors must extend markdown.Treeprocessor.
+
+ """
+ def run(self, root):
+ """
+ Subclasses of Treeprocessor should implement a `run` method, which
+ takes a root ElementTree. This method can return another ElementTree
+ object, and the existing root ElementTree will be replaced, or it can
+ modify the current tree and return None.
+ """
+ pass #pragma: no cover
+
+
+class InlineProcessor(Treeprocessor):
+ """
+ A Treeprocessor that traverses a tree, applying inline patterns.
+ """
+
+ def __init__(self, md):
+ self.__placeholder_prefix = util.INLINE_PLACEHOLDER_PREFIX
+ self.__placeholder_suffix = util.ETX
+ self.__placeholder_length = 4 + len(self.__placeholder_prefix) \
+ + len(self.__placeholder_suffix)
+ self.__placeholder_re = util.INLINE_PLACEHOLDER_RE
+ self.markdown = md
+ self.inlinePatterns = md.inlinePatterns
+
+ def __makePlaceholder(self, type):
+ """ Generate a placeholder """
+ id = "%04d" % len(self.stashed_nodes)
+ hash = util.INLINE_PLACEHOLDER % id
+ return hash, id
+
+ def __findPlaceholder(self, data, index):
+ """
+ Extract id from data string, start from index
+
+ Keyword arguments:
+
+ * data: string
+ * index: index, from which we start search
+
+ Returns: placeholder id and string index, after the found placeholder.
+
+ """
+ m = self.__placeholder_re.search(data, index)
+ if m:
+ return m.group(1), m.end()
+ else:
+ return None, index + 1
+
+ def __stashNode(self, node, type):
+ """ Add node to stash """
+ placeholder, id = self.__makePlaceholder(type)
+ self.stashed_nodes[id] = node
+ return placeholder
+
+ def __handleInline(self, data, patternIndex=0):
+ """
+ Process string with inline patterns and replace it
+ with placeholders
+
+ Keyword arguments:
+
+ * data: A line of Markdown text
+ * patternIndex: The index of the inlinePattern to start with
+
+ Returns: String with placeholders.
+
+ """
+ if not isinstance(data, util.AtomicString):
+ startIndex = 0
+ while patternIndex < len(self.inlinePatterns):
+ data, matched, startIndex = self.__applyPattern(
+ self.inlinePatterns.value_for_index(patternIndex),
+ data, patternIndex, startIndex)
+ if not matched:
+ patternIndex += 1
+ return data
+
+ def __processElementText(self, node, subnode, isText=True):
+ """
+ Process placeholders in Element.text or Element.tail
+ of Elements popped from self.stashed_nodes.
+
+ Keywords arguments:
+
+ * node: parent node
+ * subnode: processing node
+ * isText: bool variable, True - it's text, False - it's tail
+
+ Returns: None
+
+ """
+ if isText:
+ text = subnode.text
+ subnode.text = None
+ else:
+ text = subnode.tail
+ subnode.tail = None
+
+ childResult = self.__processPlaceholders(text, subnode)
+
+ if not isText and node is not subnode:
+ pos = list(node).index(subnode)
+ node.remove(subnode)
+ else:
+ pos = 0
+
+ childResult.reverse()
+ for newChild in childResult:
+ node.insert(pos, newChild)
+
+ def __processPlaceholders(self, data, parent):
+ """
+ Process string with placeholders and generate ElementTree tree.
+
+ Keyword arguments:
+
+ * data: string with placeholders instead of ElementTree elements.
+ * parent: Element, which contains processing inline data
+
+ Returns: list with ElementTree elements with applied inline patterns.
+
+ """
+ def linkText(text):
+ if text:
+ if result:
+ if result[-1].tail:
+ result[-1].tail += text
+ else:
+ result[-1].tail = text
+ else:
+ if parent.text:
+ parent.text += text
+ else:
+ parent.text = text
+ result = []
+ strartIndex = 0
+ while data:
+ index = data.find(self.__placeholder_prefix, strartIndex)
+ if index != -1:
+ id, phEndIndex = self.__findPlaceholder(data, index)
+
+ if id in self.stashed_nodes:
+ node = self.stashed_nodes.get(id)
+
+ if index > 0:
+ text = data[strartIndex:index]
+ linkText(text)
+
+ if not isString(node): # it's Element
+ for child in [node] + list(node):
+ if child.tail:
+ if child.tail.strip():
+ self.__processElementText(node, child,False)
+ if child.text:
+ if child.text.strip():
+ self.__processElementText(child, child)
+ else: # it's just a string
+ linkText(node)
+ strartIndex = phEndIndex
+ continue
+
+ strartIndex = phEndIndex
+ result.append(node)
+
+ else: # wrong placeholder
+ end = index + len(self.__placeholder_prefix)
+ linkText(data[strartIndex:end])
+ strartIndex = end
+ else:
+ text = data[strartIndex:]
+ if isinstance(data, util.AtomicString):
+ # We don't want to loose the AtomicString
+ text = util.AtomicString(text)
+ linkText(text)
+ data = ""
+
+ return result
+
+ def __applyPattern(self, pattern, data, patternIndex, startIndex=0):
+ """
+ Check if the line fits the pattern, create the necessary
+ elements, add it to stashed_nodes.
+
+ Keyword arguments:
+
+ * data: the text to be processed
+ * pattern: the pattern to be checked
+ * patternIndex: index of current pattern
+ * startIndex: string index, from which we start searching
+
+ Returns: String with placeholders instead of ElementTree elements.
+
+ """
+ match = pattern.getCompiledRegExp().match(data[startIndex:])
+ leftData = data[:startIndex]
+
+ if not match:
+ return data, False, 0
+
+ node = pattern.handleMatch(match)
+
+ if node is None:
+ return data, True, len(leftData)+match.span(len(match.groups()))[0]
+
+ if not isString(node):
+ if not isinstance(node.text, util.AtomicString):
+ # We need to process current node too
+ for child in [node] + list(node):
+ if not isString(node):
+ if child.text:
+ child.text = self.__handleInline(child.text,
+ patternIndex + 1)
+ if child.tail:
+ child.tail = self.__handleInline(child.tail,
+ patternIndex)
+
+ placeholder = self.__stashNode(node, pattern.type())
+
+ return "%s%s%s%s" % (leftData,
+ match.group(1),
+ placeholder, match.groups()[-1]), True, 0
+
+ def run(self, tree):
+ """Apply inline patterns to a parsed Markdown tree.
+
+ Iterate over ElementTree, find elements with inline tag, apply inline
+ patterns and append newly created Elements to tree. If you don't
+ want to process your data with inline paterns, instead of normal string,
+ use subclass AtomicString:
+
+ node.text = markdown.AtomicString("This will not be processed.")
+
+ Arguments:
+
+ * tree: ElementTree object, representing Markdown tree.
+
+ Returns: ElementTree object with applied inline patterns.
+
+ """
+ self.stashed_nodes = {}
+
+ stack = [tree]
+
+ while stack:
+ currElement = stack.pop()
+ insertQueue = []
+ for child in currElement:
+ if child.text and not isinstance(child.text, util.AtomicString):
+ text = child.text
+ child.text = None
+ lst = self.__processPlaceholders(self.__handleInline(
+ text), child)
+ stack += lst
+ insertQueue.append((child, lst))
+ if child.tail:
+ tail = self.__handleInline(child.tail)
+ dumby = util.etree.Element('d')
+ tailResult = self.__processPlaceholders(tail, dumby)
+ if dumby.text:
+ child.tail = dumby.text
+ else:
+ child.tail = None
+ pos = list(currElement).index(child) + 1
+ tailResult.reverse()
+ for newChild in tailResult:
+ currElement.insert(pos, newChild)
+ if len(child):
+ stack.append(child)
+
+ for element, lst in insertQueue:
+ if self.markdown.enable_attributes:
+ if element.text and isString(element.text):
+ element.text = \
+ inlinepatterns.handleAttributes(element.text,
+ element)
+ i = 0
+ for newChild in lst:
+ if self.markdown.enable_attributes:
+ # Processing attributes
+ if newChild.tail and isString(newChild.tail):
+ newChild.tail = \
+ inlinepatterns.handleAttributes(newChild.tail,
+ element)
+ if newChild.text and isString(newChild.text):
+ newChild.text = \
+ inlinepatterns.handleAttributes(newChild.text,
+ newChild)
+ element.insert(i, newChild)
+ i += 1
+ return tree
+
+
+class PrettifyTreeprocessor(Treeprocessor):
+ """ Add linebreaks to the html document. """
+
+ def _prettifyETree(self, elem):
+ """ Recursively add linebreaks to ElementTree children. """
+
+ i = "\n"
+ if util.isBlockLevel(elem.tag) and elem.tag not in ['code', 'pre']:
+ if (not elem.text or not elem.text.strip()) \
+ and len(elem) and util.isBlockLevel(elem[0].tag):
+ elem.text = i
+ for e in elem:
+ if util.isBlockLevel(e.tag):
+ self._prettifyETree(e)
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+ if not elem.tail or not elem.tail.strip():
+ elem.tail = i
+
+ def run(self, root):
+ """ Add linebreaks to ElementTree root object. """
+
+ self._prettifyETree(root)
+ # Do <br />'s seperately as they are often in the middle of
+ # inline content and missed by _prettifyETree.
+ brs = root.getiterator('br')
+ for br in brs:
+ if not br.tail or not br.tail.strip():
+ br.tail = '\n'
+ else:
+ br.tail = '\n%s' % br.tail
+ # Clean up extra empty lines at end of code blocks.
+ pres = root.getiterator('pre')
+ for pre in pres:
+ if len(pre) and pre[0].tag == 'code':
+ pre[0].text = util.AtomicString(pre[0].text.rstrip() + '\n')
-# -*- coding: utf-8 -*-\r
-from __future__ import unicode_literals\r
-import re\r
-import sys\r
-\r
-\r
-"""\r
-Python 3 Stuff\r
-=============================================================================\r
-"""\r
-PY3 = sys.version_info[0] == 3\r
-\r
-if PY3:\r
- string_type = str\r
- text_type = str\r
- int2str = chr\r
-else:\r
- string_type = basestring\r
- text_type = unicode\r
- int2str = unichr\r
-\r
-\r
-"""\r
-Constants you might want to modify\r
------------------------------------------------------------------------------\r
-"""\r
-\r
-BLOCK_LEVEL_ELEMENTS = re.compile("^(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul"\r
- "|script|noscript|form|fieldset|iframe|math"\r
- "|hr|hr/|style|li|dt|dd|thead|tbody"\r
- "|tr|th|td|section|footer|header|group|figure"\r
- "|figcaption|aside|article|canvas|output"\r
- "|progress|video)$", re.IGNORECASE)\r
-# Placeholders\r
-STX = '\u0002' # Use STX ("Start of text") for start-of-placeholder\r
-ETX = '\u0003' # Use ETX ("End of text") for end-of-placeholder\r
-INLINE_PLACEHOLDER_PREFIX = STX+"klzzwxh:"\r
-INLINE_PLACEHOLDER = INLINE_PLACEHOLDER_PREFIX + "%s" + ETX\r
-INLINE_PLACEHOLDER_RE = re.compile(INLINE_PLACEHOLDER % r'([0-9]+)')\r
-AMP_SUBSTITUTE = STX+"amp"+ETX\r
-HTML_PLACEHOLDER = STX + "wzxhzdk:%s" + ETX\r
-HTML_PLACEHOLDER_RE = re.compile(HTML_PLACEHOLDER % r'([0-9]+)')\r
-TAG_PLACEHOLDER = STX + "hzzhzkh:%s" + ETX\r
-\r
-\r
-"""\r
-Constants you probably do not need to change\r
------------------------------------------------------------------------------\r
-"""\r
-\r
-RTL_BIDI_RANGES = ( ('\u0590', '\u07FF'),\r
- # Hebrew (0590-05FF), Arabic (0600-06FF),\r
- # Syriac (0700-074F), Arabic supplement (0750-077F),\r
- # Thaana (0780-07BF), Nko (07C0-07FF).\r
- ('\u2D30', '\u2D7F'), # Tifinagh\r
- )\r
-\r
-# Extensions should use "markdown.util.etree" instead of "etree" (or do `from\r
-# markdown.util import etree`). Do not import it by yourself.\r
-\r
-try: # Is the C implementation of ElementTree available?\r
- import xml.etree.cElementTree as etree\r
- from xml.etree.ElementTree import Comment\r
- # Serializers (including ours) test with non-c Comment\r
- etree.test_comment = Comment\r
- if etree.VERSION < "1.0.5":\r
- raise RuntimeError("cElementTree version 1.0.5 or higher is required.")\r
-except (ImportError, RuntimeError):\r
- # Use the Python implementation of ElementTree?\r
- import xml.etree.ElementTree as etree\r
- if etree.VERSION < "1.1":\r
- raise RuntimeError("ElementTree version 1.1 or higher is required")\r
-\r
-\r
-"""\r
-AUXILIARY GLOBAL FUNCTIONS\r
-=============================================================================\r
-"""\r
-\r
-\r
-def isBlockLevel(tag):\r
- """Check if the tag is a block level HTML tag."""\r
- if isinstance(tag, string_type):\r
- return BLOCK_LEVEL_ELEMENTS.match(tag)\r
- # Some ElementTree tags are not strings, so return False.\r
- return False\r
-\r
-def parseBoolValue(value, fail_on_errors=True):\r
- """Parses a string representing bool value. If parsing was successful,\r
- returns True or False. If parsing was not successful, raises\r
- ValueError, or, if fail_on_errors=False, returns None."""\r
- if not isinstance(value, string_type):\r
- return bool(value)\r
- elif value.lower() in ('true', 'yes', 'y', 'on', '1'):\r
- return True\r
- elif value.lower() in ('false', 'no', 'n', 'off', '0'):\r
- return False\r
- elif fail_on_errors:\r
- raise ValueError('Cannot parse bool value: %r' % value)\r
-\r
-"""\r
-MISC AUXILIARY CLASSES\r
-=============================================================================\r
-"""\r
-\r
-class AtomicString(text_type):\r
- """A string which should not be further processed."""\r
- pass\r
-\r
-\r
-class Processor(object):\r
- def __init__(self, markdown_instance=None):\r
- if markdown_instance:\r
- self.markdown = markdown_instance\r
-\r
-\r
-class HtmlStash(object):\r
- """\r
- This class is used for stashing HTML objects that we extract\r
- in the beginning and replace with place-holders.\r
- """\r
-\r
- def __init__(self):\r
- """ Create a HtmlStash. """\r
- self.html_counter = 0 # for counting inline html segments\r
- self.rawHtmlBlocks = []\r
- self.tag_counter = 0\r
- self.tag_data = [] # list of dictionaries in the order tags appear\r
-\r
- def store(self, html, safe=False):\r
- """\r
- Saves an HTML segment for later reinsertion. Returns a\r
- placeholder string that needs to be inserted into the\r
- document.\r
-\r
- Keyword arguments:\r
-\r
- * html: an html segment\r
- * safe: label an html segment as safe for safemode\r
-\r
- Returns : a placeholder string\r
-\r
- """\r
- self.rawHtmlBlocks.append((html, safe))\r
- placeholder = self.get_placeholder(self.html_counter)\r
- self.html_counter += 1\r
- return placeholder\r
-\r
- def reset(self):\r
- self.html_counter = 0\r
- self.rawHtmlBlocks = []\r
-\r
- def get_placeholder(self, key):\r
- return HTML_PLACEHOLDER % key\r
-\r
- def store_tag(self, tag, attrs, left_index, right_index):\r
- """Store tag data and return a placeholder."""\r
- self.tag_data.append({'tag': tag, 'attrs': attrs,\r
- 'left_index': left_index,\r
- 'right_index': right_index})\r
- placeholder = TAG_PLACEHOLDER % str(self.tag_counter)\r
- self.tag_counter += 1 # equal to the tag's index in self.tag_data\r
- return placeholder\r
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+import re
+import sys
+
+
+"""
+Python 3 Stuff
+=============================================================================
+"""
+PY3 = sys.version_info[0] == 3
+
+if PY3: #pragma: no cover
+ string_type = str
+ text_type = str
+ int2str = chr
+else: #pragma: no cover
+ string_type = basestring
+ text_type = unicode
+ int2str = unichr
+
+
+"""
+Constants you might want to modify
+-----------------------------------------------------------------------------
+"""
+
+BLOCK_LEVEL_ELEMENTS = re.compile("^(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul"
+ "|script|noscript|form|fieldset|iframe|math"
+ "|hr|hr/|style|li|dt|dd|thead|tbody"
+ "|tr|th|td|section|footer|header|group|figure"
+ "|figcaption|aside|article|canvas|output"
+ "|progress|video|nav)$", re.IGNORECASE)
+# Placeholders
+STX = '\u0002' # Use STX ("Start of text") for start-of-placeholder
+ETX = '\u0003' # Use ETX ("End of text") for end-of-placeholder
+INLINE_PLACEHOLDER_PREFIX = STX+"klzzwxh:"
+INLINE_PLACEHOLDER = INLINE_PLACEHOLDER_PREFIX + "%s" + ETX
+INLINE_PLACEHOLDER_RE = re.compile(INLINE_PLACEHOLDER % r'([0-9]+)')
+AMP_SUBSTITUTE = STX+"amp"+ETX
+HTML_PLACEHOLDER = STX + "wzxhzdk:%s" + ETX
+HTML_PLACEHOLDER_RE = re.compile(HTML_PLACEHOLDER % r'([0-9]+)')
+TAG_PLACEHOLDER = STX + "hzzhzkh:%s" + ETX
+
+
+"""
+Constants you probably do not need to change
+-----------------------------------------------------------------------------
+"""
+
+RTL_BIDI_RANGES = ( ('\u0590', '\u07FF'),
+ # Hebrew (0590-05FF), Arabic (0600-06FF),
+ # Syriac (0700-074F), Arabic supplement (0750-077F),
+ # Thaana (0780-07BF), Nko (07C0-07FF).
+ ('\u2D30', '\u2D7F'), # Tifinagh
+ )
+
+# Extensions should use "markdown.util.etree" instead of "etree" (or do `from
+# markdown.util import etree`). Do not import it by yourself.
+
+try: #pragma: no cover
+ # Is the C implementation of ElementTree available?
+ import xml.etree.cElementTree as etree
+ from xml.etree.ElementTree import Comment
+ # Serializers (including ours) test with non-c Comment
+ etree.test_comment = Comment
+ if etree.VERSION < "1.0.5":
+ raise RuntimeError("cElementTree version 1.0.5 or higher is required.")
+except (ImportError, RuntimeError): #pragma: no cover
+ # Use the Python implementation of ElementTree?
+ import xml.etree.ElementTree as etree
+ if etree.VERSION < "1.1":
+ raise RuntimeError("ElementTree version 1.1 or higher is required")
+
+
+"""
+AUXILIARY GLOBAL FUNCTIONS
+=============================================================================
+"""
+
+
+def isBlockLevel(tag):
+ """Check if the tag is a block level HTML tag."""
+ if isinstance(tag, string_type):
+ return BLOCK_LEVEL_ELEMENTS.match(tag)
+ # Some ElementTree tags are not strings, so return False.
+ return False
+
+def parseBoolValue(value, fail_on_errors=True, preserve_none=False):
+ """Parses a string representing bool value. If parsing was successful,
+ returns True or False. If preserve_none=True, returns True, False,
+ or None. If parsing was not successful, raises ValueError, or, if
+ fail_on_errors=False, returns None."""
+ if not isinstance(value, string_type):
+ if preserve_none and value is None:
+ return value
+ return bool(value)
+ elif preserve_none and value.lower() == 'none':
+ return None
+ elif value.lower() in ('true', 'yes', 'y', 'on', '1'):
+ return True
+ elif value.lower() in ('false', 'no', 'n', 'off', '0', 'none'):
+ return False
+ elif fail_on_errors:
+ raise ValueError('Cannot parse bool value: %r' % value)
+
+"""
+MISC AUXILIARY CLASSES
+=============================================================================
+"""
+
+class AtomicString(text_type):
+ """A string which should not be further processed."""
+ pass
+
+
+class Processor(object):
+ def __init__(self, markdown_instance=None):
+ if markdown_instance:
+ self.markdown = markdown_instance
+
+
+class HtmlStash(object):
+ """
+ This class is used for stashing HTML objects that we extract
+ in the beginning and replace with place-holders.
+ """
+
+ def __init__(self):
+ """ Create a HtmlStash. """
+ self.html_counter = 0 # for counting inline html segments
+ self.rawHtmlBlocks = []
+ self.tag_counter = 0
+ self.tag_data = [] # list of dictionaries in the order tags appear
+
+ def store(self, html, safe=False):
+ """
+ Saves an HTML segment for later reinsertion. Returns a
+ placeholder string that needs to be inserted into the
+ document.
+
+ Keyword arguments:
+
+ * html: an html segment
+ * safe: label an html segment as safe for safemode
+
+ Returns : a placeholder string
+
+ """
+ self.rawHtmlBlocks.append((html, safe))
+ placeholder = self.get_placeholder(self.html_counter)
+ self.html_counter += 1
+ return placeholder
+
+ def reset(self):
+ self.html_counter = 0
+ self.rawHtmlBlocks = []
+
+ def get_placeholder(self, key):
+ return HTML_PLACEHOLDER % key
+
+ def store_tag(self, tag, attrs, left_index, right_index):
+ """Store tag data and return a placeholder."""
+ self.tag_data.append({'tag': tag, 'attrs': attrs,
+ 'left_index': left_index,
+ 'right_index': right_index})
+ placeholder = TAG_PLACEHOLDER % str(self.tag_counter)
+ self.tag_counter += 1 # equal to the tag's index in self.tag_data
+ return placeholder
-#!/usr/bin/env python\r
-\r
-import tests\r
-import os, sys\r
-\r
-if len(sys.argv) > 1 and sys.argv[1] == "update":\r
- if len(sys.argv) > 2:\r
- config = tests.get_config(os.path.dirname(sys.argv[2]))\r
- root, ext = os.path.splitext(sys.argv[2])\r
- if ext == config.get(tests.get_section(os.path.basename(root), config), 'input_ext'):\r
- tests.generate(root, config)\r
- else:\r
- print(sys.argv[2], 'does not have a valid file extension. Check config.')\r
- else:\r
- tests.generate_all()\r
-else:\r
- tests.run()\r
+#!/usr/bin/env python
+
+import tests
+import os, sys
+
+if len(sys.argv) > 1 and sys.argv[1] == "update":
+ if len(sys.argv) > 2:
+ config = tests.get_config(os.path.dirname(sys.argv[2]))
+ root, ext = os.path.splitext(sys.argv[2])
+ if ext == config.get(config.get_section(os.path.basename(root)), 'input_ext'):
+ tests.generate(root, config)
+ else:
+ print(sys.argv[2], 'does not have a valid file extension. Check config.')
+ else:
+ tests.generate_all()
+else:
+ tests.run()
-[nosetests]\r
+[nosetests]
-#!/usr/bin/env python\r
-\r
-from __future__ import with_statement\r
-import sys, os\r
-from distutils.core import setup\r
-from distutils.command.install_scripts import install_scripts\r
-from distutils.command.build import build\r
-from distutils.core import Command\r
-from distutils.util import change_root, newer\r
-import codecs\r
-import imp\r
-\r
-def get_version():\r
- " Get version & version_info without importing markdown.__init__ "\r
- path = os.path.join(os.path.dirname(__file__), 'markdown')\r
- fp, pathname, desc = imp.find_module('__version__', [path])\r
- try:\r
- v = imp.load_module('__version__', fp, pathname, desc)\r
- return v.version, v.version_info\r
- finally:\r
- fp.close()\r
-\r
-version, version_info = get_version()\r
-\r
-# Get development Status for classifiers\r
-dev_status_map = {\r
- 'alpha': '3 - Alpha',\r
- 'beta' : '4 - Beta',\r
- 'rc' : '4 - Beta',\r
- 'final': '5 - Production/Stable'\r
-}\r
-if version_info[3] == 'alpha' and version_info[4] == 0:\r
- DEVSTATUS = '2 - Pre-Alpha'\r
-else:\r
- DEVSTATUS = dev_status_map[version_info[3]]\r
-\r
-# The command line script name. Currently set to "markdown_py" so as not to\r
-# conflict with the perl implimentation (which uses "markdown"). We can't use\r
-# "markdown.py" as the default config on some systems will cause the script to\r
-# try to import itself rather than the library which will raise an error.\r
-SCRIPT_NAME = 'markdown_py'\r
-\r
-class md_install_scripts(install_scripts):\r
- """ Customized install_scripts. Create markdown_py.bat for win32. """\r
- def run(self):\r
- install_scripts.run(self)\r
-\r
- if sys.platform == 'win32':\r
- try:\r
- script_dir = os.path.join(sys.prefix, 'Scripts')\r
- script_path = os.path.join(script_dir, SCRIPT_NAME)\r
- bat_str = '@"%s" "%s" %%*' % (sys.executable, script_path)\r
- bat_path = os.path.join(self.install_dir, '%s.bat' %SCRIPT_NAME)\r
- f = open(bat_path, 'w')\r
- f.write(bat_str)\r
- f.close()\r
- print ('Created: %s' % bat_path)\r
- except Exception:\r
- _, err, _ = sys.exc_info() # for both 2.x & 3.x compatability\r
- print ('ERROR: Unable to create %s: %s' % (bat_path, err))\r
-\r
-\r
-class build_docs(Command):\r
- """ Build markdown documentation into html."""\r
-\r
- description = '"build" documentation (convert markdown text to html)'\r
-\r
- user_options = [\r
- ('build-base=', 'd', 'directory to "build" to'),\r
- ('force', 'f', 'forcibly build everything (ignore file timestamps)'),\r
- ]\r
-\r
- boolean_options = ['force']\r
-\r
- def initialize_options(self):\r
- self.build_base = None\r
- self.force = None\r
- self.docs = None\r
- self.sitemap = ''\r
-\r
- def finalize_options(self):\r
- self.set_undefined_options('build',\r
- ('build_base', 'build_base'),\r
- ('force', 'force'))\r
- self.docs = self._get_docs()\r
-\r
- def _get_docs(self):\r
- for root, dirs, files in os.walk('docs'):\r
- for file in files:\r
- if not file.startswith('_'):\r
- path = os.path.join(root, file)\r
- yield path\r
-\r
- def _get_context(self, src, path):\r
- """ Build and return context to pass to template. """\r
- # set defaults\r
- c = {\r
- 'title' : '',\r
- 'prev_url' : '',\r
- 'prev_title' : '',\r
- 'next_url' : '',\r
- 'next_title' : '',\r
- 'crumb' : '',\r
- 'version' : version,\r
- }\r
- c['body'] = self.md.convert(src)\r
- c['toc'] = self.md.toc\r
- for k, v in self.md.Meta.items():\r
- c[k] = ' '.join(v)\r
- self.md.reset()\r
- # Manipulate path\r
- path = path[len(os.path.join(self.build_base, 'docs/')):]\r
- dir, file = os.path.split(path)\r
- name, ext = os.path.splitext(file)\r
- parts = [x for x in dir.split(os.sep) if x]\r
- c['source'] = '%s.txt' % name\r
- c['base'] = '../'*len(parts)\r
- # Build page title\r
- if name.lower() != 'index' or parts:\r
- c['page_title'] = '%s — Python Markdown' % c['title']\r
- else:\r
- c['page_title'] = 'Python Markdown'\r
- # Build crumb trail\r
- crumbs = []\r
- ctemp = '<li><a href="%s">%s</a> »</li>'\r
- for n, part in enumerate(parts):\r
- href = ('../'*n) + 'index.html'\r
- label = part.replace('_', ' ').capitalize()\r
- crumbs.append(ctemp % (href, label))\r
- if c['title'] and name.lower() != 'index':\r
- crumbs.append(ctemp % (file, c['title']))\r
- c['crumb'] = '\n'.join(crumbs)\r
- return c\r
-\r
- def run(self):\r
- # Before importing markdown, tweak sys.path to import from the\r
- # build directory (2to3 might have run on the library).\r
- bld_cmd = self.get_finalized_command("build")\r
- sys.path.insert(0, bld_cmd.build_lib)\r
- try:\r
- import markdown\r
- except ImportError:\r
- print ('skipping build_docs: Markdown "import" failed!')\r
- else:\r
- with codecs.open('docs/_template.html', encoding='utf-8') as f:\r
- template = f.read()\r
- self.md = markdown.Markdown(\r
- extensions=['extra', 'toc(permalink=true)', 'meta', 'admonition', 'smarty'])\r
- for infile in self.docs:\r
- outfile, ext = os.path.splitext(infile)\r
- if ext == '.txt':\r
- # Copy src to .txt file\r
- srcfile = outfile + '.txt'\r
- srcfile = change_root(self.build_base, srcfile)\r
- self.mkpath(os.path.split(srcfile)[0])\r
- self.copy_file(infile, srcfile)\r
- # Render html file\r
- outfile += '.html'\r
- outfile = change_root(self.build_base, outfile)\r
- self.mkpath(os.path.split(outfile)[0])\r
- if self.force or newer(infile, outfile):\r
- if self.verbose:\r
- print ('Converting %s -> %s' % (infile, outfile))\r
- if not self.dry_run:\r
- with codecs.open(infile, encoding='utf-8') as f:\r
- src = f.read()\r
- out = template % self._get_context(src, outfile)\r
- doc = open(outfile, 'wb')\r
- doc.write(out.encode('utf-8'))\r
- doc.close()\r
- else:\r
- outfile = change_root(self.build_base, infile)\r
- self.mkpath(os.path.split(outfile)[0])\r
- self.copy_file(infile, outfile)\r
-\r
-\r
-class md_build(build):\r
- """ Run "build_docs" command from "build" command. """\r
-\r
- user_options = build.user_options + [\r
- ('no-build-docs', None, 'do not build documentation'),\r
- ]\r
-\r
- boolean_options = build.boolean_options + ['build-docs']\r
-\r
- def initialize_options(self):\r
- build.initialize_options(self)\r
- self.no_build_docs = False\r
-\r
- def has_docs(self):\r
- return not self.no_build_docs\r
-\r
- sub_commands = build.sub_commands + [('build_docs', has_docs)]\r
-\r
-long_description = \\r
-'''This is a Python implementation of John Gruber's Markdown_. \r
-It is almost completely compliant with the reference implementation,\r
-though there are a few known issues. See Features_ for information \r
-on what exactly is supported and what is not. Additional features are \r
-supported by the `Available Extensions`_.\r
-\r
-.. _Markdown: http://daringfireball.net/projects/markdown/\r
-.. _Features: http://packages.python.org/Markdown/index.html#Features\r
-.. _`Available Extensions`: http://packages.python.org/Markdown/extensions/index.html\r
-\r
-Support\r
-=======\r
-\r
-You may ask for help and discuss various other issues on the\r
-`mailing list`_ and report bugs on the `bug tracker`_.\r
-\r
-.. _`mailing list`: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss\r
-.. _`bug tracker`: http://github.com/waylan/Python-Markdown/issues\r
-'''\r
-\r
-setup(\r
- name = 'Markdown',\r
- version = version,\r
- url = 'http://packages.python.org/Markdown/',\r
- download_url = 'http://pypi.python.org/packages/source/M/Markdown/Markdown-%s.tar.gz' % version,\r
- description = 'Python implementation of Markdown.',\r
- long_description = long_description,\r
- author = 'Manfred Stienstra, Yuri takhteyev and Waylan limberg',\r
- author_email = 'markdown [at] freewisdom.org',\r
- maintainer = 'Waylan Limberg',\r
- maintainer_email = 'waylan [at] gmail.com',\r
- license = 'BSD License',\r
- packages = ['markdown', 'markdown.extensions'],\r
- scripts = ['bin/%s' % SCRIPT_NAME],\r
- cmdclass = {'install_scripts': md_install_scripts,\r
- 'build_docs': build_docs,\r
- 'build': md_build},\r
- classifiers = ['Development Status :: %s' % DEVSTATUS,\r
- 'License :: OSI Approved :: BSD License',\r
- 'Operating System :: OS Independent',\r
- 'Programming Language :: Python',\r
- 'Programming Language :: Python :: 2',\r
- 'Programming Language :: Python :: 2.6',\r
- 'Programming Language :: Python :: 2.7',\r
- 'Programming Language :: Python :: 3',\r
- 'Programming Language :: Python :: 3.1',\r
- 'Programming Language :: Python :: 3.2',\r
- 'Programming Language :: Python :: 3.3',\r
- 'Topic :: Communications :: Email :: Filters',\r
- 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries',\r
- 'Topic :: Internet :: WWW/HTTP :: Site Management',\r
- 'Topic :: Software Development :: Documentation',\r
- 'Topic :: Software Development :: Libraries :: Python Modules',\r
- 'Topic :: Text Processing :: Filters',\r
- 'Topic :: Text Processing :: Markup :: HTML',\r
- ],\r
- )\r
+#!/usr/bin/env python
+
+from __future__ import with_statement
+import sys, os
+from distutils.core import setup
+from distutils.command.install_scripts import install_scripts
+from distutils.command.build import build
+from distutils.core import Command
+from distutils.util import change_root, newer
+import codecs
+import imp
+
+def get_version():
+ " Get version & version_info without importing markdown.__init__ "
+ path = os.path.join(os.path.dirname(__file__), 'markdown')
+ fp, pathname, desc = imp.find_module('__version__', [path])
+ try:
+ v = imp.load_module('__version__', fp, pathname, desc)
+ return v.version, v.version_info
+ finally:
+ fp.close()
+
+version, version_info = get_version()
+
+# Get development Status for classifiers
+dev_status_map = {
+ 'alpha': '3 - Alpha',
+ 'beta' : '4 - Beta',
+ 'rc' : '4 - Beta',
+ 'final': '5 - Production/Stable'
+}
+if version_info[3] == 'alpha' and version_info[4] == 0:
+ DEVSTATUS = '2 - Pre-Alpha'
+else:
+ DEVSTATUS = dev_status_map[version_info[3]]
+
+# The command line script name. Currently set to "markdown_py" so as not to
+# conflict with the perl implimentation (which uses "markdown"). We can't use
+# "markdown.py" as the default config on some systems will cause the script to
+# try to import itself rather than the library which will raise an error.
+SCRIPT_NAME = 'markdown_py'
+
+class md_install_scripts(install_scripts):
+ """ Customized install_scripts. Create markdown_py.bat for win32. """
+ def run(self):
+ install_scripts.run(self)
+
+ if sys.platform == 'win32':
+ try:
+ script_dir = os.path.join(sys.prefix, 'Scripts')
+ script_path = os.path.join(script_dir, SCRIPT_NAME)
+ bat_str = '@"%s" "%s" %%*' % (sys.executable, script_path)
+ bat_path = os.path.join(self.install_dir, '%s.bat' %SCRIPT_NAME)
+ f = open(bat_path, 'w')
+ f.write(bat_str)
+ f.close()
+ print ('Created: %s' % bat_path)
+ except Exception:
+ _, err, _ = sys.exc_info() # for both 2.x & 3.x compatability
+ print ('ERROR: Unable to create %s: %s' % (bat_path, err))
+
+
+class build_docs(Command):
+ """ Build markdown documentation into html."""
+
+ description = '"build" documentation (convert markdown text to html)'
+
+ user_options = [
+ ('build-base=', 'd', 'directory to "build" to'),
+ ('force', 'f', 'forcibly build everything (ignore file timestamps)'),
+ ]
+
+ boolean_options = ['force']
+
+ def initialize_options(self):
+ self.build_base = None
+ self.force = None
+ self.docs = None
+ self.sitemap = ''
+
+ def finalize_options(self):
+ self.set_undefined_options('build',
+ ('build_base', 'build_base'),
+ ('force', 'force'))
+ self.docs = self._get_docs()
+
+ def _get_docs(self):
+ for root, dirs, files in os.walk('docs'):
+ for file in files:
+ if not file.startswith('_'):
+ path = os.path.join(root, file)
+ yield path
+
+ def _get_context(self, src, path):
+ """ Build and return context to pass to template. """
+ # set defaults
+ c = {
+ 'title' : '',
+ 'prev_url' : '',
+ 'prev_title' : '',
+ 'next_url' : '',
+ 'next_title' : '',
+ 'crumb' : '',
+ 'version' : version,
+ }
+ c['body'] = self.md.convert(src)
+ c['toc'] = self.md.toc
+ for k, v in self.md.Meta.items():
+ c[k] = ' '.join(v)
+ self.md.reset()
+ # Manipulate path
+ path = path[len(os.path.join(self.build_base, 'docs/')):]
+ dir, file = os.path.split(path)
+ name, ext = os.path.splitext(file)
+ parts = [x for x in dir.split(os.sep) if x]
+ c['source'] = '%s.txt' % name
+ c['base'] = '../'*len(parts)
+ # Build page title
+ if name.lower() != 'index' or parts:
+ c['page_title'] = '%s — Python Markdown' % c['title']
+ else:
+ c['page_title'] = 'Python Markdown'
+ # Build crumb trail
+ crumbs = []
+ ctemp = '<li><a href="%s">%s</a> »</li>'
+ for n, part in enumerate(parts):
+ href = ('../'*n) + 'index.html'
+ label = part.replace('_', ' ').capitalize()
+ crumbs.append(ctemp % (href, label))
+ if c['title'] and name.lower() != 'index':
+ crumbs.append(ctemp % (file, c['title']))
+ c['crumb'] = '\n'.join(crumbs)
+ return c
+
+ def run(self):
+ # Before importing markdown, tweak sys.path to import from the
+ # build directory (2to3 might have run on the library).
+ bld_cmd = self.get_finalized_command("build")
+ sys.path.insert(0, bld_cmd.build_lib)
+ try:
+ import markdown
+ except ImportError:
+ print ('skipping build_docs: Markdown "import" failed!')
+ else:
+ with codecs.open('docs/_template.html', encoding='utf-8') as f:
+ template = f.read()
+ self.md = markdown.Markdown(
+ extensions=['extra', 'toc(permalink=true)', 'meta', 'admonition', 'smarty'])
+ for infile in self.docs:
+ outfile, ext = os.path.splitext(infile)
+ if ext == '.txt':
+ # Copy src to .txt file
+ srcfile = outfile + '.txt'
+ srcfile = change_root(self.build_base, srcfile)
+ self.mkpath(os.path.split(srcfile)[0])
+ self.copy_file(infile, srcfile)
+ # Render html file
+ outfile += '.html'
+ outfile = change_root(self.build_base, outfile)
+ self.mkpath(os.path.split(outfile)[0])
+ if self.force or newer(infile, outfile):
+ if self.verbose:
+ print ('Converting %s -> %s' % (infile, outfile))
+ if not self.dry_run:
+ with codecs.open(infile, encoding='utf-8') as f:
+ src = f.read()
+ out = template % self._get_context(src, outfile)
+ doc = open(outfile, 'wb')
+ doc.write(out.encode('utf-8'))
+ doc.close()
+ else:
+ outfile = change_root(self.build_base, infile)
+ self.mkpath(os.path.split(outfile)[0])
+ self.copy_file(infile, outfile)
+
+
+class md_build(build):
+ """ Run "build_docs" command from "build" command. """
+
+ user_options = build.user_options + [
+ ('no-build-docs', None, 'do not build documentation'),
+ ]
+
+ boolean_options = build.boolean_options + ['build-docs']
+
+ def initialize_options(self):
+ build.initialize_options(self)
+ self.no_build_docs = False
+
+ def has_docs(self):
+ return not self.no_build_docs
+
+ sub_commands = build.sub_commands + [('build_docs', has_docs)]
+
+long_description = \
+'''This is a Python implementation of John Gruber's Markdown_.
+It is almost completely compliant with the reference implementation,
+though there are a few known issues. See Features_ for information
+on what exactly is supported and what is not. Additional features are
+supported by the `Available Extensions`_.
+
+.. _Markdown: http://daringfireball.net/projects/markdown/
+.. _Features: https://pythonhosted.org/Markdown/index.html#Features
+.. _`Available Extensions`: https://pythonhosted.org/Markdown/extensions/index.html
+
+Support
+=======
+
+You may ask for help and discuss various other issues on the
+`mailing list`_ and report bugs on the `bug tracker`_.
+
+.. _`mailing list`: http://lists.sourceforge.net/lists/listinfo/python-markdown-discuss
+.. _`bug tracker`: http://github.com/waylan/Python-Markdown/issues
+'''
+
+setup(
+ name = 'Markdown',
+ version = version,
+ url = 'https://pythonhosted.org/Markdown/',
+ download_url = 'http://pypi.python.org/packages/source/M/Markdown/Markdown-%s.tar.gz' % version,
+ description = 'Python implementation of Markdown.',
+ long_description = long_description,
+ author = 'Manfred Stienstra, Yuri takhteyev and Waylan limberg',
+ author_email = 'markdown [at] freewisdom.org',
+ maintainer = 'Waylan Limberg',
+ maintainer_email = 'waylan [at] gmail.com',
+ license = 'BSD License',
+ packages = ['markdown', 'markdown.extensions'],
+ scripts = ['bin/%s' % SCRIPT_NAME],
+ cmdclass = {'install_scripts': md_install_scripts,
+ 'build_docs': build_docs,
+ 'build': md_build},
+ classifiers = ['Development Status :: %s' % DEVSTATUS,
+ 'License :: OSI Approved :: BSD License',
+ 'Operating System :: OS Independent',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.2',
+ 'Programming Language :: Python :: 3.3',
+ 'Programming Language :: Python :: 3.4',
+ 'Topic :: Communications :: Email :: Filters',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries',
+ 'Topic :: Internet :: WWW/HTTP :: Site Management',
+ 'Topic :: Software Development :: Documentation',
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ 'Topic :: Text Processing :: Filters',
+ 'Topic :: Text Processing :: Markup :: HTML',
+ ],
+ )
-\r
-import os\r
-import markdown\r
-import codecs\r
-import difflib\r
-try:\r
- import nose\r
-except ImportError:\r
- raise ImportError("The nose testing framework is required to run " \\r
- "Python-Markdown tests. Run `easy_install nose` " \\r
- "to install the latest version.")\r
-from . import util \r
-from .plugins import HtmlOutput, Markdown\r
-try:\r
- import tidylib\r
-except ImportError:\r
- tidylib = None\r
-\r
-\r
-test_dir = os.path.abspath(os.path.dirname(__file__))\r
-\r
-def relpath(path, start=test_dir):\r
- """ reimplement relpath for python 2.3-2.5 from 2.6 """\r
- if not path:\r
- raise ValueError('no path secified')\r
- start_list = os.path.abspath(start).split(os.path.sep)\r
- path_list = os.path.abspath(path).split(os.path.sep)\r
- # Work out how much of the filepath is shared by start and path.\r
- i = len(os.path.commonprefix([start_list, path_list]))\r
- rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]\r
- if not rel_list:\r
- return test_dir\r
- return os.path.join(*rel_list)\r
-\r
-def get_config(dir_name):\r
- """ Get config for given directory name. """\r
- config = util.CustomConfigParser({'normalize': '0',\r
- 'skip': '0',\r
- 'input_ext': '.txt',\r
- 'output_ext': '.html'})\r
- config.read(os.path.join(dir_name, 'test.cfg'))\r
- return config\r
-\r
-def get_section(file, config):\r
- """ Get name of config section for given file. """\r
- filename = os.path.basename(file)\r
- if config.has_section(filename):\r
- return filename\r
- else:\r
- return 'DEFAULT'\r
-\r
-def get_args(file, config):\r
- """ Get args to pass to markdown from config for a given file. """\r
- args = {}\r
- section = get_section(file, config)\r
- for key, v in config.items(section):\r
- # Filter out args unique to testing framework\r
- if key not in ['normalize', 'skip', 'input_ext', 'output_ext']:\r
- args[key] = config.get(section, key)\r
- return args\r
-\r
-def normalize(text):\r
- """ Normalize whitespace for a string of html using tidylib. """\r
- output, errors = tidylib.tidy_fragment(text, options={\r
- 'drop_empty_paras':0,\r
- 'fix_backslash':0,\r
- 'fix_bad_comments':0,\r
- 'fix_uri':0,\r
- 'join_styles':0,\r
- 'lower_literals':0,\r
- 'merge_divs':0,\r
- 'output_xhtml':1,\r
- 'quote_ampersand':0,\r
- 'newline':'LF'})\r
- return output\r
-\r
-class CheckSyntax(object):\r
- def __init__(self, description=None):\r
- if description:\r
- self.description = 'TestSyntax: "%s"' % description\r
-\r
- def __call__(self, file, config):\r
- """ Compare expected output to actual output and report result. """\r
- cfg_section = get_section(file, config)\r
- if config.get(cfg_section, 'skip'):\r
- raise nose.plugins.skip.SkipTest('Test skipped per config.')\r
- input_file = file + config.get(cfg_section, 'input_ext')\r
- with codecs.open(input_file, encoding="utf-8") as f:\r
- input = f.read()\r
- output_file = file + config.get(cfg_section, 'output_ext') \r
- with codecs.open(output_file, encoding="utf-8") as f:\r
- # Normalize line endings (on windows, git may have altered line endings).\r
- expected_output = f.read().replace("\r\n", "\n")\r
- output = markdown.markdown(input, **get_args(file, config))\r
- if tidylib and config.get(cfg_section, 'normalize'):\r
- # Normalize whitespace with tidylib before comparing.\r
- expected_output = normalize(expected_output)\r
- output = normalize(output)\r
- elif config.get(cfg_section, 'normalize'):\r
- # Tidylib is not available. Skip this test.\r
- raise nose.plugins.skip.SkipTest('Test skipped. Tidylib not available on system.')\r
- diff = [l for l in difflib.unified_diff(expected_output.splitlines(True),\r
- output.splitlines(True), \r
- output_file, \r
- 'actual_output.html', \r
- n=3)]\r
- if diff:\r
- raise util.MarkdownSyntaxError('Output from "%s" failed to match expected '\r
- 'output.\n\n%s' % (input_file, ''.join(diff)))\r
-\r
-def TestSyntax():\r
- for dir_name, sub_dirs, files in os.walk(test_dir):\r
- # Get dir specific config settings.\r
- config = get_config(dir_name)\r
- # Loop through files and generate tests.\r
- for file in files:\r
- root, ext = os.path.splitext(file)\r
- if ext == config.get(get_section(file, config), 'input_ext'):\r
- path = os.path.join(dir_name, root)\r
- check_syntax = CheckSyntax(description=relpath(path, test_dir))\r
- yield check_syntax, path, config\r
-\r
-def generate(file, config):\r
- """ Write expected output file for given input. """\r
- cfg_section = get_section(file, config)\r
- if config.get(cfg_section, 'skip') or config.get(cfg_section, 'normalize'):\r
- print('Skipping:', file)\r
- return None\r
- input_file = file + config.get(cfg_section, 'input_ext')\r
- output_file = file + config.get(cfg_section, 'output_ext') \r
- if not os.path.isfile(output_file) or \\r
- os.path.getmtime(output_file) < os.path.getmtime(input_file):\r
- print('Generating:', file)\r
- markdown.markdownFromFile(input=input_file, output=output_file, \r
- encoding='utf-8', **get_args(file, config))\r
- else:\r
- print('Already up-to-date:', file)\r
-\r
-def generate_all():\r
- """ Generate expected output for all outdated tests. """\r
- for dir_name, sub_dirs, files in os.walk(test_dir):\r
- # Get dir specific config settings.\r
- config = get_config(dir_name)\r
- # Loop through files and generate tests.\r
- for file in files:\r
- root, ext = os.path.splitext(file)\r
- if ext == config.get(get_section(file, config), 'input_ext'):\r
- generate(os.path.join(dir_name, root), config)\r
-\r
-\r
-def run():\r
- nose.main(addplugins=[HtmlOutput(), Markdown()])\r
-\r
+import os
+import markdown
+import codecs
+import difflib
+try:
+ import nose
+except ImportError as e:
+ msg = e.args[0]
+ msg = msg + ". The nose testing framework is required to run the Python-" \
+ "Markdown tests. Run `pip install nose` to install the latest version."
+ e.args = (msg,) + e.args[1:]
+ raise
+from .plugins import HtmlOutput, Markdown, MarkdownSyntaxError
+try:
+ import tidylib
+except ImportError:
+ tidylib = None
+try:
+ import yaml
+except ImportError as e:
+ msg = e.args[0]
+ msg = msg + ". A YAML library is required to run the Python-Markdown " \
+ "tests. Run `pip install pyyaml` to install the latest version."
+ e.args = (msg,) + e.args[1:]
+ raise
+
+test_dir = os.path.abspath(os.path.dirname(__file__))
+
+class YamlConfig():
+ def __init__(self, defaults, filename):
+ """ Set defaults and load config file if it exists. """
+ self.DEFAULT_SECTION = 'DEFAULT'
+ self._defaults = defaults
+ self._config = {}
+ if os.path.exists(filename):
+ with codecs.open(filename, encoding="utf-8") as f:
+ self._config = yaml.load(f)
+
+ def get(self, section, option):
+ """ Get config value for given section and option key. """
+ if section in self._config and option in self._config[section]:
+ return self._config[section][option]
+ return self._defaults[option]
+
+ def get_section(self, file):
+ """ Get name of config section for given file. """
+ filename = os.path.basename(file)
+ if filename in self._config:
+ return filename
+ else:
+ return self.DEFAULT_SECTION
+
+ def get_args(self, file):
+ """ Get args to pass to markdown from config for a given file. """
+ args = {}
+ section = self.get_section(file)
+ if section in self._config:
+ for key in self._config[section].keys():
+ # Filter out args unique to testing framework
+ if key not in self._defaults.keys():
+ args[key] = self.get(section, key)
+ return args
+
+
+def get_config(dir_name):
+ """ Get config for given directory name. """
+ defaults = {
+ 'normalize': False,
+ 'skip': False,
+ 'input_ext': '.txt',
+ 'output_ext': '.html'
+ }
+ config = YamlConfig(defaults, os.path.join(dir_name, 'test.cfg'))
+ return config
+
+def normalize(text):
+ """ Normalize whitespace for a string of html using tidylib. """
+ output, errors = tidylib.tidy_fragment(text, options={
+ 'drop_empty_paras':0,
+ 'fix_backslash':0,
+ 'fix_bad_comments':0,
+ 'fix_uri':0,
+ 'join_styles':0,
+ 'lower_literals':0,
+ 'merge_divs':0,
+ 'output_xhtml':1,
+ 'quote_ampersand':0,
+ 'newline':'LF'})
+ return output
+
+class CheckSyntax(object):
+ def __init__(self, description=None):
+ if description:
+ self.description = 'TestSyntax: "%s"' % description
+
+ def __call__(self, file, config):
+ """ Compare expected output to actual output and report result. """
+ cfg_section = config.get_section(file)
+ if config.get(cfg_section, 'skip'):
+ raise nose.plugins.skip.SkipTest('Test skipped per config.')
+ input_file = file + config.get(cfg_section, 'input_ext')
+ with codecs.open(input_file, encoding="utf-8") as f:
+ input = f.read()
+ output_file = file + config.get(cfg_section, 'output_ext')
+ with codecs.open(output_file, encoding="utf-8") as f:
+ # Normalize line endings (on windows, git may have altered line endings).
+ expected_output = f.read().replace("\r\n", "\n")
+ output = markdown.markdown(input, **config.get_args(file))
+ if tidylib and config.get(cfg_section, 'normalize'):
+ # Normalize whitespace with tidylib before comparing.
+ expected_output = normalize(expected_output)
+ output = normalize(output)
+ elif config.get(cfg_section, 'normalize'):
+ # Tidylib is not available. Skip this test.
+ raise nose.plugins.skip.SkipTest('Test skipped. Tidylib not available on system.')
+ diff = [l for l in difflib.unified_diff(expected_output.splitlines(True),
+ output.splitlines(True),
+ output_file,
+ 'actual_output.html',
+ n=3)]
+ if diff:
+ raise MarkdownSyntaxError('Output from "%s" failed to match expected '
+ 'output.\n\n%s' % (input_file, ''.join(diff)))
+
+def TestSyntax():
+ for dir_name, sub_dirs, files in os.walk(test_dir):
+ # Get dir specific config settings.
+ config = get_config(dir_name)
+ # Loop through files and generate tests.
+ for file in files:
+ root, ext = os.path.splitext(file)
+ if ext == config.get(config.get_section(file), 'input_ext'):
+ path = os.path.join(dir_name, root)
+ check_syntax = CheckSyntax(description=os.path.relpath(path, test_dir))
+ yield check_syntax, path, config
+
+def generate(file, config):
+ """ Write expected output file for given input. """
+ cfg_section = config.get_section(file)
+ if config.get(cfg_section, 'skip') or config.get(cfg_section, 'normalize'):
+ print('Skipping:', file)
+ return None
+ input_file = file + config.get(cfg_section, 'input_ext')
+ output_file = file + config.get(cfg_section, 'output_ext')
+ if not os.path.isfile(output_file) or \
+ os.path.getmtime(output_file) < os.path.getmtime(input_file):
+ print('Generating:', file)
+ markdown.markdownFromFile(input=input_file, output=output_file,
+ encoding='utf-8', **config.get_args(file))
+ else:
+ print('Already up-to-date:', file)
+
+def generate_all():
+ """ Generate expected output for all outdated tests. """
+ for dir_name, sub_dirs, files in os.walk(test_dir):
+ # Get dir specific config settings.
+ config = get_config(dir_name)
+ # Loop through files and generate tests.
+ for file in files:
+ root, ext = os.path.splitext(file)
+ if ext == config.get(config.get_section(file), 'input_ext'):
+ generate(os.path.join(dir_name, root), config)
+
+
+def run():
+ nose.main(addplugins=[HtmlOutput(), Markdown()])
+
-<p>AT&T has an ampersand in their name.</p>\r
-<p>AT&T is another way to write it.</p>\r
-<p>This & that.</p>\r
-<p>4 < 5.</p>\r
-<p>6 > 5.</p>\r
-<p>Here's a <a href="http://example.com/?foo=1&bar=2">link</a> with an ampersand in the URL.</p>\r
-<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&T">AT&T</a>.</p>\r
-<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>\r
+<p>AT&T has an ampersand in their name.</p>
+<p>AT&T is another way to write it.</p>
+<p>This & that.</p>
+<p>4 < 5.</p>
+<p>6 > 5.</p>
+<p>Here's a <a href="http://example.com/?foo=1&bar=2">link</a> with an ampersand in the URL.</p>
+<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&T">AT&T</a>.</p>
+<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
\ No newline at end of file
-AT&T has an ampersand in their name.\r
-\r
-AT&T is another way to write it.\r
-\r
-This & that.\r
-\r
-4 < 5.\r
-\r
-6 > 5.\r
-\r
-Here's a [link] [1] with an ampersand in the URL.\r
-\r
-Here's a link with an amersand in the link text: [AT&T] [2].\r
-\r
-Here's an inline [link](/script?foo=1&bar=2).\r
-\r
-Here's an inline [link](</script?foo=1&bar=2>).\r
-\r
-\r
-[1]: http://example.com/?foo=1&bar=2\r
+AT&T has an ampersand in their name.
+
+AT&T is another way to write it.
+
+This & that.
+
+4 < 5.
+
+6 > 5.
+
+Here's a [link] [1] with an ampersand in the URL.
+
+Here's a link with an amersand in the link text: [AT&T] [2].
+
+Here's an inline [link](/script?foo=1&bar=2).
+
+Here's an inline [link](</script?foo=1&bar=2>).
+
+
+[1]: http://example.com/?foo=1&bar=2
[2]: http://att.com/ "AT&T"
\ No newline at end of file
-<p><a href="simple link" title="title">link</a>\r
-<img alt="image" src="http://example.com/image.jpg" />\r
-<a href="http://example.com/(()((())923)(">link</a>\r
+<p><a href="simple link" title="title">link</a>
+<img alt="image" src="http://example.com/image.jpg" />
+<a href="http://example.com/(()((())923)(">link</a>
<img alt="image" src="link(()))(" /></p>
\ No newline at end of file
-[link](<simple link> "title")\r
-\r
-[link](<http://example.com/(()((())923)(>)\r
-))(>)\r
+[link](<simple link> "title")
+
+[link](<http://example.com/(()((())923)(>)
+))(>)
-<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>\r
-<p>Https link: <a href="https://example.com">https://example.com</a></p>\r
-<p>Ftp link: <a href="ftp://example.com">ftp://example.com</a></p>\r
-<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p>\r
-<ul>\r
-<li>In a list?</li>\r
-<li><a href="http://example.com/">http://example.com/</a></li>\r
-<li>It should.</li>\r
-</ul>\r
-<blockquote>\r
-<p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>\r
-</blockquote>\r
-<p>Auto-links should not occur here: <code><http://example.com/></code></p>\r
-<pre><code>or here: <http://example.com/>\r
+<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>
+<p>Https link: <a href="https://example.com">https://example.com</a></p>
+<p>Ftp link: <a href="ftp://example.com">ftp://example.com</a></p>
+<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p>
+<ul>
+<li>In a list?</li>
+<li><a href="http://example.com/">http://example.com/</a></li>
+<li>It should.</li>
+</ul>
+<blockquote>
+<p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>
+</blockquote>
+<p>Auto-links should not occur here: <code><http://example.com/></code></p>
+<pre><code>or here: <http://example.com/>
</code></pre>
\ No newline at end of file
-Link: <http://example.com/>.\r
-\r
-Https link: <https://example.com>\r
-\r
-Ftp link: <ftp://example.com>\r
-\r
-With an ampersand: <http://example.com/?foo=1&bar=2>\r
-\r
-* In a list?\r
-* <http://example.com/>\r
-* It should.\r
-\r
-> Blockquoted: <http://example.com/>\r
-\r
-Auto-links should not occur here: `<http://example.com/>`\r
-\r
- or here: <http://example.com/>\r
+Link: <http://example.com/>.
+
+Https link: <https://example.com>
+
+Ftp link: <ftp://example.com>
+
+With an ampersand: <http://example.com/?foo=1&bar=2>
+
+* In a list?
+* <http://example.com/>
+* It should.
+
+> Blockquoted: <http://example.com/>
+
+Auto-links should not occur here: `<http://example.com/>`
+
+ or here: <http://example.com/>
-<p>These should all get escaped:</p>\r
-<p>Backslash: \</p>\r
-<p>Backtick: `</p>\r
-<p>Asterisk: *</p>\r
-<p>Underscore: _</p>\r
-<p>Left brace: {</p>\r
-<p>Right brace: }</p>\r
-<p>Left bracket: [</p>\r
-<p>Right bracket: ]</p>\r
-<p>Left paren: (</p>\r
-<p>Right paren: )</p>\r
-<p>Greater-than: ></p>\r
-<p>Hash: #</p>\r
-<p>Period: .</p>\r
-<p>Bang: !</p>\r
-<p>Plus: +</p>\r
-<p>Minus: -</p>\r
-<p>These should not, because they occur within a code block:</p>\r
-<pre><code>Backslash: \\\r
-\r
-Backtick: \`\r
-\r
-Asterisk: \*\r
-\r
-Underscore: \_\r
-\r
-Left brace: \{\r
-\r
-Right brace: \}\r
-\r
-Left bracket: \[\r
-\r
-Right bracket: \]\r
-\r
-Left paren: \(\r
-\r
-Right paren: \)\r
-\r
-Greater-than: \>\r
-\r
-Hash: \#\r
-\r
-Period: \.\r
-\r
-Bang: \!\r
-\r
-Plus: \+\r
-\r
-Minus: \-\r
-</code></pre>\r
-<p>Nor should these, which occur in code spans:</p>\r
-<p>Backslash: <code>\\</code></p>\r
-<p>Backtick: <code>\`</code></p>\r
-<p>Asterisk: <code>\*</code></p>\r
-<p>Underscore: <code>\_</code></p>\r
-<p>Left brace: <code>\{</code></p>\r
-<p>Right brace: <code>\}</code></p>\r
-<p>Left bracket: <code>\[</code></p>\r
-<p>Right bracket: <code>\]</code></p>\r
-<p>Left paren: <code>\(</code></p>\r
-<p>Right paren: <code>\)</code></p>\r
-<p>Greater-than: <code>\></code></p>\r
-<p>Hash: <code>\#</code></p>\r
-<p>Period: <code>\.</code></p>\r
-<p>Bang: <code>\!</code></p>\r
-<p>Plus: <code>\+</code></p>\r
+<p>These should all get escaped:</p>
+<p>Backslash: \</p>
+<p>Backtick: `</p>
+<p>Asterisk: *</p>
+<p>Underscore: _</p>
+<p>Left brace: {</p>
+<p>Right brace: }</p>
+<p>Left bracket: [</p>
+<p>Right bracket: ]</p>
+<p>Left paren: (</p>
+<p>Right paren: )</p>
+<p>Greater-than: ></p>
+<p>Hash: #</p>
+<p>Period: .</p>
+<p>Bang: !</p>
+<p>Plus: +</p>
+<p>Minus: -</p>
+<p>These should not, because they occur within a code block:</p>
+<pre><code>Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+</code></pre>
+<p>Nor should these, which occur in code spans:</p>
+<p>Backslash: <code>\\</code></p>
+<p>Backtick: <code>\`</code></p>
+<p>Asterisk: <code>\*</code></p>
+<p>Underscore: <code>\_</code></p>
+<p>Left brace: <code>\{</code></p>
+<p>Right brace: <code>\}</code></p>
+<p>Left bracket: <code>\[</code></p>
+<p>Right bracket: <code>\]</code></p>
+<p>Left paren: <code>\(</code></p>
+<p>Right paren: <code>\)</code></p>
+<p>Greater-than: <code>\></code></p>
+<p>Hash: <code>\#</code></p>
+<p>Period: <code>\.</code></p>
+<p>Bang: <code>\!</code></p>
+<p>Plus: <code>\+</code></p>
<p>Minus: <code>\-</code></p>
\ No newline at end of file
-These should all get escaped:\r
-\r
-Backslash: \\\r
-\r
-Backtick: \`\r
-\r
-Asterisk: \*\r
-\r
-Underscore: \_\r
-\r
-Left brace: \{\r
-\r
-Right brace: \}\r
-\r
-Left bracket: \[\r
-\r
-Right bracket: \]\r
-\r
-Left paren: \(\r
-\r
-Right paren: \)\r
-\r
-Greater-than: \>\r
-\r
-Hash: \#\r
-\r
-Period: \.\r
-\r
-Bang: \!\r
-\r
-Plus: \+\r
-\r
-Minus: \-\r
-\r
-\r
-\r
-These should not, because they occur within a code block:\r
-\r
- Backslash: \\\r
-\r
- Backtick: \`\r
-\r
- Asterisk: \*\r
-\r
- Underscore: \_\r
-\r
- Left brace: \{\r
-\r
- Right brace: \}\r
-\r
- Left bracket: \[\r
-\r
- Right bracket: \]\r
-\r
- Left paren: \(\r
-\r
- Right paren: \)\r
-\r
- Greater-than: \>\r
-\r
- Hash: \#\r
-\r
- Period: \.\r
-\r
- Bang: \!\r
-\r
- Plus: \+\r
-\r
- Minus: \-\r
-\r
-\r
-Nor should these, which occur in code spans:\r
-\r
-Backslash: `\\`\r
-\r
-Backtick: `` \` ``\r
-\r
-Asterisk: `\*`\r
-\r
-Underscore: `\_`\r
-\r
-Left brace: `\{`\r
-\r
-Right brace: `\}`\r
-\r
-Left bracket: `\[`\r
-\r
-Right bracket: `\]`\r
-\r
-Left paren: `\(`\r
-\r
-Right paren: `\)`\r
-\r
-Greater-than: `\>`\r
-\r
-Hash: `\#`\r
-\r
-Period: `\.`\r
-\r
-Bang: `\!`\r
-\r
-Plus: `\+`\r
-\r
-Minus: `\-`\r
+These should all get escaped:
+
+Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+
+
+
+These should not, because they occur within a code block:
+
+ Backslash: \\
+
+ Backtick: \`
+
+ Asterisk: \*
+
+ Underscore: \_
+
+ Left brace: \{
+
+ Right brace: \}
+
+ Left bracket: \[
+
+ Right bracket: \]
+
+ Left paren: \(
+
+ Right paren: \)
+
+ Greater-than: \>
+
+ Hash: \#
+
+ Period: \.
+
+ Bang: \!
+
+ Plus: \+
+
+ Minus: \-
+
+
+Nor should these, which occur in code spans:
+
+Backslash: `\\`
+
+Backtick: `` \` ``
+
+Asterisk: `\*`
+
+Underscore: `\_`
+
+Left brace: `\{`
+
+Right brace: `\}`
+
+Left bracket: `\[`
+
+Right bracket: `\]`
+
+Left paren: `\(`
+
+Right paren: `\)`
+
+Greater-than: `\>`
+
+Hash: `\#`
+
+Period: `\.`
+
+Bang: `\!`
+
+Plus: `\+`
+
+Minus: `\-`
-<blockquote>\r
-<p>Example:</p>\r
-<pre><code>sub status {\r
- print "working";\r
-}\r
-</code></pre>\r
-<p>Or:</p>\r
-<pre><code>sub status {\r
- return "working";\r
-}\r
-</code></pre>\r
+<blockquote>
+<p>Example:</p>
+<pre><code>sub status {
+ print "working";
+}
+</code></pre>
+<p>Or:</p>
+<pre><code>sub status {
+ return "working";
+}
+</code></pre>
</blockquote>
\ No newline at end of file
-> Example:\r
-> \r
-> sub status {\r
-> print "working";\r
-> }\r
-> \r
-> Or:\r
-> \r
-> sub status {\r
-> return "working";\r
-> }\r
+> Example:
+>
+> sub status {
+> print "working";
+> }
+>
+> Or:
+>
+> sub status {
+> return "working";
+> }
-<ul>\r
-<li>\r
-<p>A list item with a code block</p>\r
-<pre><code>Some *code*\r
-</code></pre>\r
-</li>\r
-<li>\r
-<p>Another list item</p>\r
-<pre><code>More code\r
-\r
-And more code\r
-</code></pre>\r
-</li>\r
+<ul>
+<li>
+<p>A list item with a code block</p>
+<pre><code>Some *code*
+</code></pre>
+</li>
+<li>
+<p>Another list item</p>
+<pre><code>More code
+
+And more code
+</code></pre>
+</li>
</ul>
\ No newline at end of file
-* A list item with a code block\r
-\r
- Some *code*\r
-\r
-* Another list item\r
-\r
- More code\r
-\r
- And more code\r
-\r
+* A list item with a code block
+
+ Some *code*
+
+* Another list item
+
+ More code
+
+ And more code
+
-<p>In Markdown 1.0.0 and earlier. Version\r
-8. This line turns into a list item.\r
-Because a hard-wrapped line in the\r
-middle of a paragraph looked like a\r
-list item.</p>\r
-<p>Here's one with a bullet.\r
+<p>In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.</p>
+<p>Here's one with a bullet.
* criminey.</p>
\ No newline at end of file
-In Markdown 1.0.0 and earlier. Version\r
-8. This line turns into a list item.\r
-Because a hard-wrapped line in the\r
-middle of a paragraph looked like a\r
-list item.\r
-\r
-Here's one with a bullet.\r
-* criminey.\r
+In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.
+
+Here's one with a bullet.
+* criminey.
-<p>Dashes:</p>\r
-<hr />\r
-<hr />\r
-<hr />\r
-<hr />\r
-<pre><code>---\r
-</code></pre>\r
-<hr />\r
-<hr />\r
-<hr />\r
-<hr />\r
-<pre><code>- - -\r
-</code></pre>\r
-<p>Asterisks:</p>\r
-<hr />\r
-<hr />\r
-<hr />\r
-<hr />\r
-<pre><code>***\r
-</code></pre>\r
-<hr />\r
-<hr />\r
-<hr />\r
-<hr />\r
-<pre><code>* * *\r
-</code></pre>\r
-<p>Underscores:</p>\r
-<hr />\r
-<hr />\r
-<hr />\r
-<hr />\r
-<pre><code>___\r
-</code></pre>\r
-<hr />\r
-<hr />\r
-<hr />\r
-<hr />\r
-<pre><code>_ _ _\r
+<p>Dashes:</p>
+<hr />
+<hr />
+<hr />
+<hr />
+<pre><code>---
+</code></pre>
+<hr />
+<hr />
+<hr />
+<hr />
+<pre><code>- - -
+</code></pre>
+<p>Asterisks:</p>
+<hr />
+<hr />
+<hr />
+<hr />
+<pre><code>***
+</code></pre>
+<hr />
+<hr />
+<hr />
+<hr />
+<pre><code>* * *
+</code></pre>
+<p>Underscores:</p>
+<hr />
+<hr />
+<hr />
+<hr />
+<pre><code>___
+</code></pre>
+<hr />
+<hr />
+<hr />
+<hr />
+<pre><code>_ _ _
</code></pre>
\ No newline at end of file
-Dashes:\r
-\r
----\r
-\r
- ---\r
- \r
- ---\r
-\r
- ---\r
-\r
- ---\r
-\r
-- - -\r
-\r
- - - -\r
- \r
- - - -\r
-\r
- - - -\r
-\r
- - - -\r
-\r
-\r
-Asterisks:\r
-\r
-***\r
-\r
- ***\r
- \r
- ***\r
-\r
- ***\r
-\r
- ***\r
-\r
-* * *\r
-\r
- * * *\r
- \r
- * * *\r
-\r
- * * *\r
-\r
- * * *\r
-\r
-\r
-Underscores:\r
-\r
-___\r
-\r
- ___\r
- \r
- ___\r
-\r
- ___\r
-\r
- ___\r
-\r
-_ _ _\r
-\r
- _ _ _\r
- \r
- _ _ _\r
-\r
- _ _ _\r
-\r
- _ _ _\r
+Dashes:
+
+---
+
+ ---
+
+ ---
+
+ ---
+
+ ---
+
+- - -
+
+ - - -
+
+ - - -
+
+ - - -
+
+ - - -
+
+
+Asterisks:
+
+***
+
+ ***
+
+ ***
+
+ ***
+
+ ***
+
+* * *
+
+ * * *
+
+ * * *
+
+ * * *
+
+ * * *
+
+
+Underscores:
+
+___
+
+ ___
+
+ ___
+
+ ___
+
+ ___
+
+_ _ _
+
+ _ _ _
+
+ _ _ _
+
+ _ _ _
+
+ _ _ _
-<p>Simple block on one line:</p>\r
-<div>foo</div>\r
-\r
-<p>And nested without indentation:</p>\r
-<div>\r
-<div>\r
-<div>\r
-foo\r
-</div>\r
-</div>\r
-<div>bar</div>\r
+<p>Simple block on one line:</p>
+<div>foo</div>
+
+<p>And nested without indentation:</p>
+<div>
+<div>
+<div>
+foo
+</div>
+</div>
+<div>bar</div>
</div>
\ No newline at end of file
-Simple block on one line:\r
-\r
-<div>foo</div>\r
-\r
-And nested without indentation:\r
-\r
-<div>\r
-<div>\r
-<div>\r
-foo\r
-</div>\r
-</div>\r
-<div>bar</div>\r
-</div>\r
+Simple block on one line:
+
+<div>foo</div>
+
+And nested without indentation:
+
+<div>
+<div>
+<div>
+foo
+</div>
+</div>
+<div>bar</div>
+</div>
-<p>Paragraph one.</p>\r
-<!-- This is a simple comment -->\r
-\r
-<!--\r
- This is another comment.\r
--->\r
-\r
-<p>Paragraph two.</p>\r
-<!-- one comment block -- -- with two comments -->\r
-\r
+<p>Paragraph one.</p>
+<!-- This is a simple comment -->
+
+<!--
+ This is another comment.
+-->
+
+<p>Paragraph two.</p>
+<!-- one comment block -- -- with two comments -->
+
<p>The end.</p>
\ No newline at end of file
-Paragraph one.\r
-\r
-<!-- This is a simple comment -->\r
-\r
-<!--\r
- This is another comment.\r
--->\r
-\r
-Paragraph two.\r
-\r
-<!-- one comment block -- -- with two comments -->\r
-\r
-The end.\r
+Paragraph one.
+
+<!-- This is a simple comment -->
+
+<!--
+ This is another comment.
+-->
+
+Paragraph two.
+
+<!-- one comment block -- -- with two comments -->
+
+The end.
-<p>Here's a simple block:</p>\r
-<div>\r
- foo\r
-</div>\r
-\r
-<p>This should be a code block, though:</p>\r
-<pre><code><div>\r
- foo\r
-</div>\r
-</code></pre>\r
-<p>As should this:</p>\r
-<pre><code><div>foo</div>\r
-</code></pre>\r
-<p>Now, nested:</p>\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-<p>This should just be an HTML comment:</p>\r
-<!-- Comment -->\r
-\r
-<p>Multiline:</p>\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-<p>Code block:</p>\r
-<pre><code><!-- Comment -->\r
-</code></pre>\r
-<p>Just plain comment, with trailing spaces on the line:</p>\r
-<!-- foo -->\r
-\r
-<p>Code:</p>\r
-<pre><code><hr />\r
-</code></pre>\r
-<p>Hr's:</p>\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
-\r
+<p>Here's a simple block:</p>
+<div>
+ foo
+</div>
+
+<p>This should be a code block, though:</p>
+<pre><code><div>
+ foo
+</div>
+</code></pre>
+<p>As should this:</p>
+<pre><code><div>foo</div>
+</code></pre>
+<p>Now, nested:</p>
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+<p>This should just be an HTML comment:</p>
+<!-- Comment -->
+
+<p>Multiline:</p>
+<!--
+Blah
+Blah
+-->
+
+<p>Code block:</p>
+<pre><code><!-- Comment -->
+</code></pre>
+<p>Just plain comment, with trailing spaces on the line:</p>
+<!-- foo -->
+
+<p>Code:</p>
+<pre><code><hr />
+</code></pre>
+<p>Hr's:</p>
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
+
<p><some <a href="http://example.com">weird</a> stuff></p>
\ No newline at end of file
-Here's a simple block:\r
-\r
-<div>\r
- foo\r
-</div>\r
-\r
-This should be a code block, though:\r
-\r
- <div>\r
- foo\r
- </div>\r
-\r
-As should this:\r
-\r
- <div>foo</div>\r
-\r
-Now, nested:\r
-\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-This should just be an HTML comment:\r
-\r
-<!-- Comment -->\r
-\r
-Multiline:\r
-\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-Code block:\r
-\r
- <!-- Comment -->\r
-\r
-Just plain comment, with trailing spaces on the line:\r
-\r
-<!-- foo --> \r
-\r
-Code:\r
-\r
- <hr />\r
- \r
-Hr's:\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr> \r
-\r
-<hr/> \r
-\r
-<hr /> \r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
-\r
-<some [weird](http://example.com) stuff>\r
+Here's a simple block:
+
+<div>
+ foo
+</div>
+
+This should be a code block, though:
+
+ <div>
+ foo
+ </div>
+
+As should this:
+
+ <div>foo</div>
+
+Now, nested:
+
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+This should just be an HTML comment:
+
+<!-- Comment -->
+
+Multiline:
+
+<!--
+Blah
+Blah
+-->
+
+Code block:
+
+ <!-- Comment -->
+
+Just plain comment, with trailing spaces on the line:
+
+<!-- foo -->
+
+Code:
+
+ <hr />
+
+Hr's:
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
+
+<some [weird](http://example.com) stuff>
-<p>Just a <a href="/url/">URL</a>.</p>\r
-<p><a href="/url/" title="title">URL and title</a>.</p>\r
-<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>\r
-<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>\r
+<p>Just a <a href="/url/">URL</a>.</p>
+<p><a href="/url/" title="title">URL and title</a>.</p>
+<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>
+<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>
<p><a href="">Empty</a>.</p>
\ No newline at end of file
-Just a [URL](/url/).\r
-\r
-[URL and title](/url/ "title").\r
-\r
-[URL and title](/url/ "title preceded by two spaces").\r
-\r
-[URL and title](/url/ "title preceded by a tab").\r
-\r
-[Empty]().\r
+Just a [URL](/url/).
+
+[URL and title](/url/ "title").
+
+[URL and title](/url/ "title preceded by two spaces").
+
+[URL and title](/url/ "title preceded by a tab").
+
+[Empty]().
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-<p>With <a href="/url/">embedded [brackets]</a>.</p>\r
-<p>Indented <a href="/url">once</a>.</p>\r
-<p>Indented <a href="/url">twice</a>.</p>\r
-<p>Indented <a href="/url">thrice</a>.</p>\r
-<p>Indented [four][] times.</p>\r
-<pre><code>[four]: /url\r
-</code></pre>\r
-<p>With <a href="http://example.com/" title="Angle Brackets">angle brackets</a>.</p>\r
-<p>And <a href="http://example.com/" title="Without angle brackets.">without</a>.</p>\r
-<p>With <a href="http://example.com" title="Yes this works">line\r
-breaks</a></p>\r
-<p>and <a href="http://example.com" title="Yes this works">line \r
-breaks</a> with one space.</p>\r
-<p>and [line<br />\r
-breaks[] with two spaces.</p>\r
-<p><a href="http://example.com" title="No more hanging empty bracket!">short ref</a></p>\r
-<p><a href="http://example.com" title="No more hanging empty bracket!">short \r
-ref</a></p>\r
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+<p>With <a href="/url/">embedded [brackets]</a>.</p>
+<p>Indented <a href="/url">once</a>.</p>
+<p>Indented <a href="/url">twice</a>.</p>
+<p>Indented <a href="/url">thrice</a>.</p>
+<p>Indented [four][] times.</p>
+<pre><code>[four]: /url
+</code></pre>
+<p>With <a href="http://example.com/" title="Angle Brackets">angle brackets</a>.</p>
+<p>And <a href="http://example.com/" title="Without angle brackets.">without</a>.</p>
+<p>With <a href="http://example.com" title="Yes this works">line
+breaks</a></p>
+<p>and <a href="http://example.com" title="Yes this works">line
+breaks</a> with one space.</p>
+<p>and [line<br />
+breaks[] with two spaces.</p>
+<p><a href="http://example.com" title="No more hanging empty bracket!">short ref</a></p>
+<p><a href="http://example.com" title="No more hanging empty bracket!">short
+ref</a></p>
<p><a href="http://example.com" title="Title on next line.">a ref</a></p>
\ No newline at end of file
-Foo [bar] [1].\r
-\r
-Foo [bar][1].\r
-\r
-Foo [bar]\r
-[1].\r
-\r
-[1]: /url/ "Title"\r
-\r
-\r
-With [embedded [brackets]] [b].\r
-\r
-\r
-Indented [once][].\r
-\r
-Indented [twice][].\r
-\r
-Indented [thrice][].\r
-\r
-Indented [four][] times.\r
-\r
- [once]: /url\r
-\r
- [twice]: /url\r
-\r
- [thrice]: /url\r
-\r
- [four]: /url\r
-\r
-\r
-[b]: /url/\r
-\r
-With [angle brackets][].\r
-\r
-And [without][].\r
-\r
-[angle brackets]: <http://example.com/> "Angle Brackets"\r
-[without]: http://example.com/ "Without angle brackets."\r
-\r
-With [line\r
-breaks][]\r
-\r
-and [line \r
-breaks][] with one space.\r
-\r
-and [line \r
-breaks[] with two spaces.\r
-\r
-[line breaks]: http://example.com "Yes this works"\r
-\r
-[short ref]\r
-\r
-[short \r
-ref]\r
-\r
-[short ref]: http://example.com "No more hanging empty bracket!"\r
-\r
-[a ref]\r
-\r
-[a ref]: http://example.com\r
- "Title on next line."\r
+Foo [bar] [1].
+
+Foo [bar][1].
+
+Foo [bar]
+[1].
+
+[1]: /url/ "Title"
+
+
+With [embedded [brackets]] [b].
+
+
+Indented [once][].
+
+Indented [twice][].
+
+Indented [thrice][].
+
+Indented [four][] times.
+
+ [once]: /url
+
+ [twice]: /url
+
+ [thrice]: /url
+
+ [four]: /url
+
+
+[b]: /url/
+
+With [angle brackets][].
+
+And [without][].
+
+[angle brackets]: <http://example.com/> "Angle Brackets"
+[without]: http://example.com/ "Without angle brackets."
+
+With [line
+breaks][]
+
+and [line
+breaks][] with one space.
+
+and [line
+breaks[] with two spaces.
+
+[line breaks]: http://example.com "Yes this works"
+
+[short ref]
+
+[short
+ref]
+
+[short ref]: http://example.com "No more hanging empty bracket!"
+
+[a ref]
+
+[a ref]: http://example.com
+ "Title on next line."
-<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>\r
+<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
\ No newline at end of file
-Foo [bar][].\r
-\r
-Foo [bar](/url/ "Title with "quotes" inside").\r
-\r
-\r
- [bar]: /url/ "Title with "quotes" inside"\r
-\r
+Foo [bar][].
+
+Foo [bar](/url/ "Title with "quotes" inside").
+
+
+ [bar]: /url/ "Title with "quotes" inside"
+
-<h1>Markdown: Basics</h1>\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a class="selected" title="Markdown Basics">Basics</a></li>\r
- <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<h2>Getting the Gist of Markdown's Formatting Syntax</h2>\r
-<p>This page offers a brief overview of what it's like to use Markdown.\r
-The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for\r
-every feature, but Markdown should be very easy to pick up simply by\r
-looking at a few examples of it in action. The examples on this page\r
-are written in a before/after style, showing example syntax and the\r
-HTML output produced by Markdown.</p>\r
-<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a\r
-web application that allows you type your own Markdown-formatted text\r
-and translate it to XHTML.</p>\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-<h2>Paragraphs, Headers, Blockquotes</h2>\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.\r
-Setext-style headers for <code><h1></code> and <code><h2></code> are created by\r
-"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.\r
-To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the\r
-beginning of the line -- the number of hashes equals the resulting\r
-HTML header level.</p>\r
-<p>Blockquotes are indicated using email-style '<code>></code>' angle brackets.</p>\r
-<p>Markdown:</p>\r
-<pre><code>A First Level Header\r
-====================\r
-\r
-A Second Level Header\r
----------------------\r
-\r
-Now is the time for all good men to come to\r
-the aid of their country. This is just a\r
-regular paragraph.\r
-\r
-The quick brown fox jumped over the lazy\r
-dog's back.\r
-\r
-### Header 3\r
-\r
-> This is a blockquote.\r
-> \r
-> This is the second paragraph in the blockquote.\r
->\r
-> ## This is an H2 in a blockquote\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><h1>A First Level Header</h1>\r
-\r
-<h2>A Second Level Header</h2>\r
-\r
-<p>Now is the time for all good men to come to\r
-the aid of their country. This is just a\r
-regular paragraph.</p>\r
-\r
-<p>The quick brown fox jumped over the lazy\r
-dog's back.</p>\r
-\r
-<h3>Header 3</h3>\r
-\r
-<blockquote>\r
- <p>This is a blockquote.</p>\r
-\r
- <p>This is the second paragraph in the blockquote.</p>\r
-\r
- <h2>This is an H2 in a blockquote</h2>\r
-</blockquote>\r
-</code></pre>\r
-<h3>Phrase Emphasis</h3>\r
-<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>\r
-<p>Markdown:</p>\r
-<pre><code>Some of these words *are emphasized*.\r
-Some of these words _are emphasized also_.\r
-\r
-Use two asterisks for **strong emphasis**.\r
-Or, if you prefer, __use two underscores instead__.\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>Some of these words <em>are emphasized</em>.\r
-Some of these words <em>are emphasized also</em>.</p>\r
-\r
-<p>Use two asterisks for <strong>strong emphasis</strong>.\r
-Or, if you prefer, <strong>use two underscores instead</strong>.</p>\r
-</code></pre>\r
-<h2>Lists</h2>\r
-<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,\r
-<code>+</code>, and <code>-</code>) as list markers. These three markers are\r
-interchangable; this:</p>\r
-<pre><code>* Candy.\r
-* Gum.\r
-* Booze.\r
-</code></pre>\r
-<p>this:</p>\r
-<pre><code>+ Candy.\r
-+ Gum.\r
-+ Booze.\r
-</code></pre>\r
-<p>and this:</p>\r
-<pre><code>- Candy.\r
-- Gum.\r
-- Booze.\r
-</code></pre>\r
-<p>all produce the same output:</p>\r
-<pre><code><ul>\r
-<li>Candy.</li>\r
-<li>Gum.</li>\r
-<li>Booze.</li>\r
-</ul>\r
-</code></pre>\r
-<p>Ordered (numbered) lists use regular numbers, followed by periods, as\r
-list markers:</p>\r
-<pre><code>1. Red\r
-2. Green\r
-3. Blue\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><ol>\r
-<li>Red</li>\r
-<li>Green</li>\r
-<li>Blue</li>\r
-</ol>\r
-</code></pre>\r
-<p>If you put blank lines between items, you'll get <code><p></code> tags for the\r
-list item text. You can create multi-paragraph list items by indenting\r
-the paragraphs by 4 spaces or 1 tab:</p>\r
-<pre><code>* A list item.\r
-\r
- With multiple paragraphs.\r
-\r
-* Another item in the list.\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><ul>\r
-<li><p>A list item.</p>\r
-<p>With multiple paragraphs.</p></li>\r
-<li><p>Another item in the list.</p></li>\r
-</ul>\r
-</code></pre>\r
-<h3>Links</h3>\r
-<p>Markdown supports two styles for creating links: <em>inline</em> and\r
-<em>reference</em>. With both styles, you use square brackets to delimit the\r
-text you want to turn into a link.</p>\r
-<p>Inline-style links use parentheses immediately after the link text.\r
-For example:</p>\r
-<pre><code>This is an [example link](http://example.com/).\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>This is an <a href="http://example.com/">\r
-example link</a>.</p>\r
-</code></pre>\r
-<p>Optionally, you may include a title attribute in the parentheses:</p>\r
-<pre><code>This is an [example link](http://example.com/ "With a Title").\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>This is an <a href="http://example.com/" title="With a Title">\r
-example link</a>.</p>\r
-</code></pre>\r
-<p>Reference-style links allow you to refer to your links by names, which\r
-you define elsewhere in your document:</p>\r
-<pre><code>I get 10 times more traffic from [Google][1] than from\r
-[Yahoo][2] or [MSN][3].\r
-\r
-[1]: http://google.com/ "Google"\r
-[2]: http://search.yahoo.com/ "Yahoo Search"\r
-[3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from <a href="http://search.yahoo.com/"\r
-title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"\r
-title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-<p>The title attribute is optional. Link names may contain letters,\r
-numbers and spaces, but are <em>not</em> case sensitive:</p>\r
-<pre><code>I start my morning with a cup of coffee and\r
-[The New York Times][NY Times].\r
-\r
-[ny times]: http://www.nytimes.com/\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>I start my morning with a cup of coffee and\r
-<a href="http://www.nytimes.com/">The New York Times</a>.</p>\r
-</code></pre>\r
-<h3>Images</h3>\r
-<p>Image syntax is very much like link syntax.</p>\r
-<p>Inline (titles are optional):</p>\r
-<pre><code>\r
-</code></pre>\r
-<p>Reference-style:</p>\r
-<pre><code>![alt text][id]\r
-\r
-[id]: /path/to/img.jpg "Title"\r
-</code></pre>\r
-<p>Both of the above examples produce the same output:</p>\r
-<pre><code><img src="/path/to/img.jpg" alt="alt text" title="Title" />\r
-</code></pre>\r
-<h3>Code</h3>\r
-<p>In a regular paragraph, you can create code span by wrapping text in\r
-backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or\r
-<code>></code>) will automatically be translated into HTML entities. This makes\r
-it easy to use Markdown to write about HTML example code:</p>\r
-<pre><code>I strongly recommend against using any `<blink>` tags.\r
-\r
-I wish SmartyPants used named entities like `&mdash;`\r
-instead of decimal-encoded entites like `&#8212;`.\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>I strongly recommend against using any\r
-<code>&lt;blink&gt;</code> tags.</p>\r
-\r
-<p>I wish SmartyPants used named entities like\r
-<code>&amp;mdash;</code> instead of decimal-encoded\r
-entites like <code>&amp;#8212;</code>.</p>\r
-</code></pre>\r
-<p>To specify an entire block of pre-formatted code, indent every line of\r
-the block by 4 spaces or 1 tab. Just like with code spans, <code>&</code>, <code><</code>,\r
-and <code>></code> characters will be escaped automatically.</p>\r
-<p>Markdown:</p>\r
-<pre><code>If you want your page to validate under XHTML 1.0 Strict,\r
-you've got to put paragraph tags in your blockquotes:\r
-\r
- <blockquote>\r
- <p>For example.</p>\r
- </blockquote>\r
-</code></pre>\r
-<p>Output:</p>\r
-<pre><code><p>If you want your page to validate under XHTML 1.0 Strict,\r
-you've got to put paragraph tags in your blockquotes:</p>\r
-\r
-<pre><code>&lt;blockquote&gt;\r
- &lt;p&gt;For example.&lt;/p&gt;\r
-&lt;/blockquote&gt;\r
-</code></pre>\r
+<h1>Markdown: Basics</h1>
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
+<p>This page offers a brief overview of what it's like to use Markdown.
+The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.</p>
+<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.</p>
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
+<h2>Paragraphs, Headers, Blockquotes</h2>
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
+Setext-style headers for <code><h1></code> and <code><h2></code> are created by
+"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
+To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.</p>
+<p>Blockquotes are indicated using email-style '<code>></code>' angle brackets.</p>
+<p>Markdown:</p>
+<pre><code>A First Level Header
+====================
+
+A Second Level Header
+---------------------
+
+Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.
+
+The quick brown fox jumped over the lazy
+dog's back.
+
+### Header 3
+
+> This is a blockquote.
+>
+> This is the second paragraph in the blockquote.
+>
+> ## This is an H2 in a blockquote
+</code></pre>
+<p>Output:</p>
+<pre><code><h1>A First Level Header</h1>
+
+<h2>A Second Level Header</h2>
+
+<p>Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.</p>
+
+<p>The quick brown fox jumped over the lazy
+dog's back.</p>
+
+<h3>Header 3</h3>
+
+<blockquote>
+ <p>This is a blockquote.</p>
+
+ <p>This is the second paragraph in the blockquote.</p>
+
+ <h2>This is an H2 in a blockquote</h2>
+</blockquote>
+</code></pre>
+<h3>Phrase Emphasis</h3>
+<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
+<p>Markdown:</p>
+<pre><code>Some of these words *are emphasized*.
+Some of these words _are emphasized also_.
+
+Use two asterisks for **strong emphasis**.
+Or, if you prefer, __use two underscores instead__.
+</code></pre>
+<p>Output:</p>
+<pre><code><p>Some of these words <em>are emphasized</em>.
+Some of these words <em>are emphasized also</em>.</p>
+
+<p>Use two asterisks for <strong>strong emphasis</strong>.
+Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+</code></pre>
+<h2>Lists</h2>
+<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
+<code>+</code>, and <code>-</code>) as list markers. These three markers are
+interchangable; this:</p>
+<pre><code>* Candy.
+* Gum.
+* Booze.
+</code></pre>
+<p>this:</p>
+<pre><code>+ Candy.
++ Gum.
++ Booze.
+</code></pre>
+<p>and this:</p>
+<pre><code>- Candy.
+- Gum.
+- Booze.
+</code></pre>
+<p>all produce the same output:</p>
+<pre><code><ul>
+<li>Candy.</li>
+<li>Gum.</li>
+<li>Booze.</li>
+</ul>
+</code></pre>
+<p>Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:</p>
+<pre><code>1. Red
+2. Green
+3. Blue
+</code></pre>
+<p>Output:</p>
+<pre><code><ol>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ol>
+</code></pre>
+<p>If you put blank lines between items, you'll get <code><p></code> tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:</p>
+<pre><code>* A list item.
+
+ With multiple paragraphs.
+
+* Another item in the list.
+</code></pre>
+<p>Output:</p>
+<pre><code><ul>
+<li><p>A list item.</p>
+<p>With multiple paragraphs.</p></li>
+<li><p>Another item in the list.</p></li>
+</ul>
+</code></pre>
+<h3>Links</h3>
+<p>Markdown supports two styles for creating links: <em>inline</em> and
+<em>reference</em>. With both styles, you use square brackets to delimit the
+text you want to turn into a link.</p>
+<p>Inline-style links use parentheses immediately after the link text.
+For example:</p>
+<pre><code>This is an [example link](http://example.com/).
+</code></pre>
+<p>Output:</p>
+<pre><code><p>This is an <a href="http://example.com/">
+example link</a>.</p>
+</code></pre>
+<p>Optionally, you may include a title attribute in the parentheses:</p>
+<pre><code>This is an [example link](http://example.com/ "With a Title").
+</code></pre>
+<p>Output:</p>
+<pre><code><p>This is an <a href="http://example.com/" title="With a Title">
+example link</a>.</p>
+</code></pre>
+<p>Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:</p>
+<pre><code>I get 10 times more traffic from [Google][1] than from
+[Yahoo][2] or [MSN][3].
+
+[1]: http://google.com/ "Google"
+[2]: http://search.yahoo.com/ "Yahoo Search"
+[3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Output:</p>
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+title="MSN Search">MSN</a>.</p>
+</code></pre>
+<p>The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are <em>not</em> case sensitive:</p>
+<pre><code>I start my morning with a cup of coffee and
+[The New York Times][NY Times].
+
+[ny times]: http://www.nytimes.com/
+</code></pre>
+<p>Output:</p>
+<pre><code><p>I start my morning with a cup of coffee and
+<a href="http://www.nytimes.com/">The New York Times</a>.</p>
+</code></pre>
+<h3>Images</h3>
+<p>Image syntax is very much like link syntax.</p>
+<p>Inline (titles are optional):</p>
+<pre><code>
+</code></pre>
+<p>Reference-style:</p>
+<pre><code>![alt text][id]
+
+[id]: /path/to/img.jpg "Title"
+</code></pre>
+<p>Both of the above examples produce the same output:</p>
+<pre><code><img src="/path/to/img.jpg" alt="alt text" title="Title" />
+</code></pre>
+<h3>Code</h3>
+<p>In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or
+<code>></code>) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:</p>
+<pre><code>I strongly recommend against using any `<blink>` tags.
+
+I wish SmartyPants used named entities like `&mdash;`
+instead of decimal-encoded entites like `&#8212;`.
+</code></pre>
+<p>Output:</p>
+<pre><code><p>I strongly recommend against using any
+<code>&lt;blink&gt;</code> tags.</p>
+
+<p>I wish SmartyPants used named entities like
+<code>&amp;mdash;</code> instead of decimal-encoded
+entites like <code>&amp;#8212;</code>.</p>
+</code></pre>
+<p>To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, <code>&</code>, <code><</code>,
+and <code>></code> characters will be escaped automatically.</p>
+<p>Markdown:</p>
+<pre><code>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:
+
+ <blockquote>
+ <p>For example.</p>
+ </blockquote>
+</code></pre>
+<p>Output:</p>
+<pre><code><p>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:</p>
+
+<pre><code>&lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+&lt;/blockquote&gt;
+</code></pre>
</code></pre>
\ No newline at end of file
-Markdown: Basics\r
-================\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a class="selected" title="Markdown Basics">Basics</a></li>\r
- <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-\r
-Getting the Gist of Markdown's Formatting Syntax\r
-------------------------------------------------\r
-\r
-This page offers a brief overview of what it's like to use Markdown.\r
-The [syntax page] [s] provides complete, detailed documentation for\r
-every feature, but Markdown should be very easy to pick up simply by\r
-looking at a few examples of it in action. The examples on this page\r
-are written in a before/after style, showing example syntax and the\r
-HTML output produced by Markdown.\r
-\r
-It's also helpful to simply try Markdown out; the [Dingus] [d] is a\r
-web application that allows you type your own Markdown-formatted text\r
-and translate it to XHTML.\r
-\r
-**Note:** This document is itself written using Markdown; you\r
-can [see the source for it by adding '.text' to the URL] [src].\r
-\r
- [s]: /projects/markdown/syntax "Markdown Syntax"\r
- [d]: /projects/markdown/dingus "Markdown Dingus"\r
- [src]: /projects/markdown/basics.text\r
-\r
-\r
-## Paragraphs, Headers, Blockquotes ##\r
-\r
-A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.\r
-\r
-Markdown offers two styles of headers: *Setext* and *atx*.\r
-Setext-style headers for `<h1>` and `<h2>` are created by\r
-"underlining" with equal signs (`=`) and hyphens (`-`), respectively.\r
-To create an atx-style header, you put 1-6 hash marks (`#`) at the\r
-beginning of the line -- the number of hashes equals the resulting\r
-HTML header level.\r
-\r
-Blockquotes are indicated using email-style '`>`' angle brackets.\r
-\r
-Markdown:\r
-\r
- A First Level Header\r
- ====================\r
- \r
- A Second Level Header\r
- ---------------------\r
-\r
- Now is the time for all good men to come to\r
- the aid of their country. This is just a\r
- regular paragraph.\r
-\r
- The quick brown fox jumped over the lazy\r
- dog's back.\r
- \r
- ### Header 3\r
-\r
- > This is a blockquote.\r
- > \r
- > This is the second paragraph in the blockquote.\r
- >\r
- > ## This is an H2 in a blockquote\r
-\r
-\r
-Output:\r
-\r
- <h1>A First Level Header</h1>\r
- \r
- <h2>A Second Level Header</h2>\r
- \r
- <p>Now is the time for all good men to come to\r
- the aid of their country. This is just a\r
- regular paragraph.</p>\r
- \r
- <p>The quick brown fox jumped over the lazy\r
- dog's back.</p>\r
- \r
- <h3>Header 3</h3>\r
- \r
- <blockquote>\r
- <p>This is a blockquote.</p>\r
- \r
- <p>This is the second paragraph in the blockquote.</p>\r
- \r
- <h2>This is an H2 in a blockquote</h2>\r
- </blockquote>\r
-\r
-\r
-\r
-### Phrase Emphasis ###\r
-\r
-Markdown uses asterisks and underscores to indicate spans of emphasis.\r
-\r
-Markdown:\r
-\r
- Some of these words *are emphasized*.\r
- Some of these words _are emphasized also_.\r
- \r
- Use two asterisks for **strong emphasis**.\r
- Or, if you prefer, __use two underscores instead__.\r
-\r
-Output:\r
-\r
- <p>Some of these words <em>are emphasized</em>.\r
- Some of these words <em>are emphasized also</em>.</p>\r
- \r
- <p>Use two asterisks for <strong>strong emphasis</strong>.\r
- Or, if you prefer, <strong>use two underscores instead</strong>.</p>\r
- \r
-\r
-\r
-## Lists ##\r
-\r
-Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,\r
-`+`, and `-`) as list markers. These three markers are\r
-interchangable; this:\r
-\r
- * Candy.\r
- * Gum.\r
- * Booze.\r
-\r
-this:\r
-\r
- + Candy.\r
- + Gum.\r
- + Booze.\r
-\r
-and this:\r
-\r
- - Candy.\r
- - Gum.\r
- - Booze.\r
-\r
-all produce the same output:\r
-\r
- <ul>\r
- <li>Candy.</li>\r
- <li>Gum.</li>\r
- <li>Booze.</li>\r
- </ul>\r
-\r
-Ordered (numbered) lists use regular numbers, followed by periods, as\r
-list markers:\r
-\r
- 1. Red\r
- 2. Green\r
- 3. Blue\r
-\r
-Output:\r
-\r
- <ol>\r
- <li>Red</li>\r
- <li>Green</li>\r
- <li>Blue</li>\r
- </ol>\r
-\r
-If you put blank lines between items, you'll get `<p>` tags for the\r
-list item text. You can create multi-paragraph list items by indenting\r
-the paragraphs by 4 spaces or 1 tab:\r
-\r
- * A list item.\r
- \r
- With multiple paragraphs.\r
-\r
- * Another item in the list.\r
-\r
-Output:\r
-\r
- <ul>\r
- <li><p>A list item.</p>\r
- <p>With multiple paragraphs.</p></li>\r
- <li><p>Another item in the list.</p></li>\r
- </ul>\r
- \r
-\r
-\r
-### Links ###\r
-\r
-Markdown supports two styles for creating links: *inline* and\r
-*reference*. With both styles, you use square brackets to delimit the\r
-text you want to turn into a link.\r
-\r
-Inline-style links use parentheses immediately after the link text.\r
-For example:\r
-\r
- This is an [example link](http://example.com/).\r
-\r
-Output:\r
-\r
- <p>This is an <a href="http://example.com/">\r
- example link</a>.</p>\r
-\r
-Optionally, you may include a title attribute in the parentheses:\r
-\r
- This is an [example link](http://example.com/ "With a Title").\r
-\r
-Output:\r
-\r
- <p>This is an <a href="http://example.com/" title="With a Title">\r
- example link</a>.</p>\r
-\r
-Reference-style links allow you to refer to your links by names, which\r
-you define elsewhere in your document:\r
-\r
- I get 10 times more traffic from [Google][1] than from\r
- [Yahoo][2] or [MSN][3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-\r
-Output:\r
-\r
- <p>I get 10 times more traffic from <a href="http://google.com/"\r
- title="Google">Google</a> than from <a href="http://search.yahoo.com/"\r
- title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"\r
- title="MSN Search">MSN</a>.</p>\r
-\r
-The title attribute is optional. Link names may contain letters,\r
-numbers and spaces, but are *not* case sensitive:\r
-\r
- I start my morning with a cup of coffee and\r
- [The New York Times][NY Times].\r
-\r
- [ny times]: http://www.nytimes.com/\r
-\r
-Output:\r
-\r
- <p>I start my morning with a cup of coffee and\r
- <a href="http://www.nytimes.com/">The New York Times</a>.</p>\r
-\r
-\r
-### Images ###\r
-\r
-Image syntax is very much like link syntax.\r
-\r
-Inline (titles are optional):\r
-\r
- \r
-\r
-Reference-style:\r
-\r
- ![alt text][id]\r
-\r
- [id]: /path/to/img.jpg "Title"\r
-\r
-Both of the above examples produce the same output:\r
-\r
- <img src="/path/to/img.jpg" alt="alt text" title="Title" />\r
-\r
-\r
-\r
-### Code ###\r
-\r
-In a regular paragraph, you can create code span by wrapping text in\r
-backtick quotes. Any ampersands (`&`) and angle brackets (`<` or\r
-`>`) will automatically be translated into HTML entities. This makes\r
-it easy to use Markdown to write about HTML example code:\r
-\r
- I strongly recommend against using any `<blink>` tags.\r
-\r
- I wish SmartyPants used named entities like `—`\r
- instead of decimal-encoded entites like `—`.\r
-\r
-Output:\r
-\r
- <p>I strongly recommend against using any\r
- <code><blink></code> tags.</p>\r
- \r
- <p>I wish SmartyPants used named entities like\r
- <code>&mdash;</code> instead of decimal-encoded\r
- entites like <code>&#8212;</code>.</p>\r
-\r
-\r
-To specify an entire block of pre-formatted code, indent every line of\r
-the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,\r
-and `>` characters will be escaped automatically.\r
-\r
-Markdown:\r
-\r
- If you want your page to validate under XHTML 1.0 Strict,\r
- you've got to put paragraph tags in your blockquotes:\r
-\r
- <blockquote>\r
- <p>For example.</p>\r
- </blockquote>\r
-\r
-Output:\r
-\r
- <p>If you want your page to validate under XHTML 1.0 Strict,\r
- you've got to put paragraph tags in your blockquotes:</p>\r
- \r
- <pre><code><blockquote>\r
- <p>For example.</p>\r
- </blockquote>\r
- </code></pre>\r
+Markdown: Basics
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+Getting the Gist of Markdown's Formatting Syntax
+------------------------------------------------
+
+This page offers a brief overview of what it's like to use Markdown.
+The [syntax page] [s] provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.
+
+It's also helpful to simply try Markdown out; the [Dingus] [d] is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL] [src].
+
+ [s]: /projects/markdown/syntax "Markdown Syntax"
+ [d]: /projects/markdown/dingus "Markdown Dingus"
+ [src]: /projects/markdown/basics.text
+
+
+## Paragraphs, Headers, Blockquotes ##
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.
+
+Markdown offers two styles of headers: *Setext* and *atx*.
+Setext-style headers for `<h1>` and `<h2>` are created by
+"underlining" with equal signs (`=`) and hyphens (`-`), respectively.
+To create an atx-style header, you put 1-6 hash marks (`#`) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.
+
+Blockquotes are indicated using email-style '`>`' angle brackets.
+
+Markdown:
+
+ A First Level Header
+ ====================
+
+ A Second Level Header
+ ---------------------
+
+ Now is the time for all good men to come to
+ the aid of their country. This is just a
+ regular paragraph.
+
+ The quick brown fox jumped over the lazy
+ dog's back.
+
+ ### Header 3
+
+ > This is a blockquote.
+ >
+ > This is the second paragraph in the blockquote.
+ >
+ > ## This is an H2 in a blockquote
+
+
+Output:
+
+ <h1>A First Level Header</h1>
+
+ <h2>A Second Level Header</h2>
+
+ <p>Now is the time for all good men to come to
+ the aid of their country. This is just a
+ regular paragraph.</p>
+
+ <p>The quick brown fox jumped over the lazy
+ dog's back.</p>
+
+ <h3>Header 3</h3>
+
+ <blockquote>
+ <p>This is a blockquote.</p>
+
+ <p>This is the second paragraph in the blockquote.</p>
+
+ <h2>This is an H2 in a blockquote</h2>
+ </blockquote>
+
+
+
+### Phrase Emphasis ###
+
+Markdown uses asterisks and underscores to indicate spans of emphasis.
+
+Markdown:
+
+ Some of these words *are emphasized*.
+ Some of these words _are emphasized also_.
+
+ Use two asterisks for **strong emphasis**.
+ Or, if you prefer, __use two underscores instead__.
+
+Output:
+
+ <p>Some of these words <em>are emphasized</em>.
+ Some of these words <em>are emphasized also</em>.</p>
+
+ <p>Use two asterisks for <strong>strong emphasis</strong>.
+ Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+
+
+
+## Lists ##
+
+Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
+`+`, and `-`) as list markers. These three markers are
+interchangable; this:
+
+ * Candy.
+ * Gum.
+ * Booze.
+
+this:
+
+ + Candy.
+ + Gum.
+ + Booze.
+
+and this:
+
+ - Candy.
+ - Gum.
+ - Booze.
+
+all produce the same output:
+
+ <ul>
+ <li>Candy.</li>
+ <li>Gum.</li>
+ <li>Booze.</li>
+ </ul>
+
+Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:
+
+ 1. Red
+ 2. Green
+ 3. Blue
+
+Output:
+
+ <ol>
+ <li>Red</li>
+ <li>Green</li>
+ <li>Blue</li>
+ </ol>
+
+If you put blank lines between items, you'll get `<p>` tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:
+
+ * A list item.
+
+ With multiple paragraphs.
+
+ * Another item in the list.
+
+Output:
+
+ <ul>
+ <li><p>A list item.</p>
+ <p>With multiple paragraphs.</p></li>
+ <li><p>Another item in the list.</p></li>
+ </ul>
+
+
+
+### Links ###
+
+Markdown supports two styles for creating links: *inline* and
+*reference*. With both styles, you use square brackets to delimit the
+text you want to turn into a link.
+
+Inline-style links use parentheses immediately after the link text.
+For example:
+
+ This is an [example link](http://example.com/).
+
+Output:
+
+ <p>This is an <a href="http://example.com/">
+ example link</a>.</p>
+
+Optionally, you may include a title attribute in the parentheses:
+
+ This is an [example link](http://example.com/ "With a Title").
+
+Output:
+
+ <p>This is an <a href="http://example.com/" title="With a Title">
+ example link</a>.</p>
+
+Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:
+
+ I get 10 times more traffic from [Google][1] than from
+ [Yahoo][2] or [MSN][3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+ title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+ title="MSN Search">MSN</a>.</p>
+
+The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are *not* case sensitive:
+
+ I start my morning with a cup of coffee and
+ [The New York Times][NY Times].
+
+ [ny times]: http://www.nytimes.com/
+
+Output:
+
+ <p>I start my morning with a cup of coffee and
+ <a href="http://www.nytimes.com/">The New York Times</a>.</p>
+
+
+### Images ###
+
+Image syntax is very much like link syntax.
+
+Inline (titles are optional):
+
+ 
+
+Reference-style:
+
+ ![alt text][id]
+
+ [id]: /path/to/img.jpg "Title"
+
+Both of the above examples produce the same output:
+
+ <img src="/path/to/img.jpg" alt="alt text" title="Title" />
+
+
+
+### Code ###
+
+In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (`&`) and angle brackets (`<` or
+`>`) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:
+
+ I strongly recommend against using any `<blink>` tags.
+
+ I wish SmartyPants used named entities like `—`
+ instead of decimal-encoded entites like `—`.
+
+Output:
+
+ <p>I strongly recommend against using any
+ <code><blink></code> tags.</p>
+
+ <p>I wish SmartyPants used named entities like
+ <code>&mdash;</code> instead of decimal-encoded
+ entites like <code>&#8212;</code>.</p>
+
+
+To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,
+and `>` characters will be escaped automatically.
+
+Markdown:
+
+ If you want your page to validate under XHTML 1.0 Strict,
+ you've got to put paragraph tags in your blockquotes:
+
+ <blockquote>
+ <p>For example.</p>
+ </blockquote>
+
+Output:
+
+ <p>If you want your page to validate under XHTML 1.0 Strict,
+ you've got to put paragraph tags in your blockquotes:</p>
+
+ <pre><code><blockquote>
+ <p>For example.</p>
+ </blockquote>
+ </code></pre>
-<h1>Markdown: Syntax</h1>\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>\r
- <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<ul>\r
-<li><a href="#overview">Overview</a><ul>\r
-<li><a href="#philosophy">Philosophy</a></li>\r
-<li><a href="#html">Inline HTML</a></li>\r
-<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#block">Block Elements</a><ul>\r
-<li><a href="#p">Paragraphs and Line Breaks</a></li>\r
-<li><a href="#header">Headers</a></li>\r
-<li><a href="#blockquote">Blockquotes</a></li>\r
-<li><a href="#list">Lists</a></li>\r
-<li><a href="#precode">Code Blocks</a></li>\r
-<li><a href="#hr">Horizontal Rules</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#span">Span Elements</a><ul>\r
-<li><a href="#link">Links</a></li>\r
-<li><a href="#em">Emphasis</a></li>\r
-<li><a href="#code">Code</a></li>\r
-<li><a href="#img">Images</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#misc">Miscellaneous</a><ul>\r
-<li><a href="#backslash">Backslash Escapes</a></li>\r
-<li><a href="#autolink">Automatic Links</a></li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-<hr />\r
-<h2 id="overview">Overview</h2>\r
-\r
-<h3 id="philosophy">Philosophy</h3>\r
-\r
-<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\r
-<p>Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,\r
-<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.</p>\r
-<p>To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like *emphasis*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.</p>\r
-<h3 id="html">Inline HTML</h3>\r
-\r
-<p>Markdown's syntax is intended for one purpose: to be used as a\r
-format for <em>writing</em> for the web.</p>\r
-<p>Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is <em>not</em> to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.</p>\r
-<p>For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.</p>\r
-<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,\r
-<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>\r
-<p>For example, to add an HTML table to a Markdown article:</p>\r
-<pre><code>This is a regular paragraph.\r
-\r
-<table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
-</table>\r
-\r
-This is another regular paragraph.\r
-</code></pre>\r
-<p>Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an\r
-HTML block.</p>\r
-<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's\r
-link or image syntax, go right ahead.</p>\r
-<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within\r
-span-level tags.</p>\r
-<h3 id="autoescape">Automatic Escaping for Special Characters</h3>\r
-\r
-<p>In HTML, there are two characters that demand special treatment: <code><</code>\r
-and <code>&</code>. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. <code>&lt;</code>, and\r
-<code>&amp;</code>.</p>\r
-<p>Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:</p>\r
-<pre><code>http://images.google.com/images?num=30&q=larry+bird\r
-</code></pre>\r
-<p>you need to encode the URL as:</p>\r
-<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird\r
-</code></pre>\r
-<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.</p>\r
-<p>Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into <code>&amp;</code>.</p>\r
-<p>So, if you want to include a copyright symbol in your article, you can write:</p>\r
-<pre><code>&copy;\r
-</code></pre>\r
-<p>and Markdown will leave it alone. But if you write:</p>\r
-<pre><code>AT&T\r
-</code></pre>\r
-<p>Markdown will translate it to:</p>\r
-<pre><code>AT&amp;T\r
-</code></pre>\r
-<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:</p>\r
-<pre><code>4 < 5\r
-</code></pre>\r
-<p>Markdown will translate it to:</p>\r
-<pre><code>4 &lt; 5\r
-</code></pre>\r
-<p>However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are <em>always</em> encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single <code><</code>\r
-and <code>&</code> in your example code needs to be escaped.)</p>\r
-<hr />\r
-<h2 id="block">Block Elements</h2>\r
-\r
-<h3 id="p">Paragraphs and Line Breaks</h3>\r
-\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-<p>The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a <code><br /></code> tag.</p>\r
-<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you\r
-end a line with two or more spaces, then type return.</p>\r
-<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic\r
-"every line break is a <code><br /></code>" rule wouldn't work for Markdown.\r
-Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>\r
-work best -- and look better -- when you format them with hard breaks.</p>\r
-<h3 id="header">Headers</h3>\r
-\r
-<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>\r
-<p>Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:</p>\r
-<pre><code>This is an H1\r
-=============\r
-\r
-This is an H2\r
--------------\r
-</code></pre>\r
-<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>\r
-<p>Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:</p>\r
-<pre><code># This is an H1\r
-\r
-## This is an H2\r
-\r
-###### This is an H6\r
-</code></pre>\r
-<p>Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :</p>\r
-<pre><code># This is an H1 #\r
-\r
-## This is an H2 ##\r
-\r
-### This is an H3 ######\r
-</code></pre>\r
-<h3 id="blockquote">Blockquotes</h3>\r
-\r
-<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a <code>></code> before every line:</p>\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-> \r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-> id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>Markdown allows you to be lazy and only put the <code>></code> before the first\r
-line of a hard-wrapped paragraph:</p>\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of <code>></code>:</p>\r
-<pre><code>> This is the first level of quoting.\r
->\r
-> > This is nested blockquote.\r
->\r
-> Back to the first level.\r
-</code></pre>\r
-<p>Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:</p>\r
-<pre><code>> ## This is a header.\r
-> \r
-> 1. This is the first list item.\r
-> 2. This is the second list item.\r
-> \r
-> Here's some example code:\r
-> \r
-> return shell_exec("echo $input | $markdown_script");\r
-</code></pre>\r
-<p>Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.</p>\r
-<h3 id="list">Lists</h3>\r
-\r
-<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>\r
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:</p>\r
-<pre><code>* Red\r
-* Green\r
-* Blue\r
-</code></pre>\r
-<p>is equivalent to:</p>\r
-<pre><code>+ Red\r
-+ Green\r
-+ Blue\r
-</code></pre>\r
-<p>and:</p>\r
-<pre><code>- Red\r
-- Green\r
-- Blue\r
-</code></pre>\r
-<p>Ordered lists use numbers followed by periods:</p>\r
-<pre><code>1. Bird\r
-2. McHale\r
-3. Parish\r
-</code></pre>\r
-<p>It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:</p>\r
-<pre><code><ol>\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-</code></pre>\r
-<p>If you instead wrote the list in Markdown like this:</p>\r
-<pre><code>1. Bird\r
-1. McHale\r
-1. Parish\r
-</code></pre>\r
-<p>or even:</p>\r
-<pre><code>3. Bird\r
-1. McHale\r
-8. Parish\r
-</code></pre>\r
-<p>you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.</p>\r
-<p>If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.</p>\r
-<p>List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.</p>\r
-<p>To make lists look nice, you can wrap items with hanging indents:</p>\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>But if you want to be lazy, you don't have to:</p>\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
-Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
-viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
-Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>If list items are separated by blank lines, Markdown will wrap the\r
-items in <code><p></code> tags in the HTML output. For example, this input:</p>\r
-<pre><code>* Bird\r
-* Magic\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><ul>\r
-<li>Bird</li>\r
-<li>Magic</li>\r
-</ul>\r
-</code></pre>\r
-<p>But this:</p>\r
-<pre><code>* Bird\r
-\r
-* Magic\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><ul>\r
-<li><p>Bird</p></li>\r
-<li><p>Magic</p></li>\r
-</ul>\r
-</code></pre>\r
-<p>List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:</p>\r
-<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
-2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:</p>\r
-<pre><code>* This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
-only required to indent the first line. Lorem ipsum dolor\r
-sit amet, consectetuer adipiscing elit.\r
-\r
-* Another item in the same list.\r
-</code></pre>\r
-<p>To put a blockquote within a list item, the blockquote's <code>></code>\r
-delimiters need to be indented:</p>\r
-<pre><code>* A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-</code></pre>\r
-<p>To put a code block within a list item, the code block needs\r
-to be indented <em>twice</em> -- 8 spaces or two tabs:</p>\r
-<pre><code>* A list item with a code block:\r
-\r
- <code goes here>\r
-</code></pre>\r
-<p>It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:</p>\r
-<pre><code>1986. What a great season.\r
-</code></pre>\r
-<p>In other words, a <em>number-period-space</em> sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:</p>\r
-<pre><code>1986\. What a great season.\r
-</code></pre>\r
-<h3 id="precode">Code Blocks</h3>\r
-\r
-<p>Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both <code><pre></code> and <code><code></code> tags.</p>\r
-<p>To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:</p>\r
-<pre><code>This is a normal paragraph:\r
-\r
- This is a code block.\r
-</code></pre>\r
-<p>Markdown will generate:</p>\r
-<pre><code><p>This is a normal paragraph:</p>\r
-\r
-<pre><code>This is a code block.\r
-</code></pre>\r
-</code></pre>\r
-<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:</p>\r
-<pre><code>Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><p>Here is an example of AppleScript:</p>\r
-\r
-<pre><code>tell application "Foo"\r
- beep\r
-end tell\r
-</code></pre>\r
-</code></pre>\r
-<p>A code block continues until it reaches a line that is not indented\r
-(or the end of the article).</p>\r
-<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:</p>\r
-<pre><code> <div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><pre><code>&lt;div class="footer"&gt;\r
- &amp;copy; 2004 Foo Corporation\r
-&lt;/div&gt;\r
-</code></pre>\r
-</code></pre>\r
-<p>Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.</p>\r
-<h3 id="hr">Horizontal Rules</h3>\r
-\r
-<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:</p>\r
-<pre><code>* * *\r
-\r
-***\r
-\r
-*****\r
-\r
-- - -\r
-\r
----------------------------------------\r
-\r
-_ _ _\r
-</code></pre>\r
-<hr />\r
-<h2 id="span">Span Elements</h2>\r
-\r
-<h3 id="link">Links</h3>\r
-\r
-<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>\r
-<p>In both styles, the link text is delimited by [square brackets].</p>\r
-<p>To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an <em>optional</em>\r
-title for the link, surrounded in quotes. For example:</p>\r
-<pre><code>This is [an example](http://example.com/ "Title") inline link.\r
-\r
-[This link](http://example.net/) has no title attribute.\r
-</code></pre>\r
-<p>Will produce:</p>\r
-<pre><code><p>This is <a href="http://example.com/" title="Title">\r
-an example</a> inline link.</p>\r
-\r
-<p><a href="http://example.net/">This link</a> has no\r
-title attribute.</p>\r
-</code></pre>\r
-<p>If you're referring to a local resource on the same server, you can\r
-use relative paths:</p>\r
-<pre><code>See my [About](/about/) page for details.\r
-</code></pre>\r
-<p>Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:</p>\r
-<pre><code>This is [an example][id] reference-style link.\r
-</code></pre>\r
-<p>You can optionally use a space to separate the sets of brackets:</p>\r
-<pre><code>This is [an example] [id] reference-style link.\r
-</code></pre>\r
-<p>Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:</p>\r
-<pre><code>[id]: http://example.com/ "Optional Title Here"\r
-</code></pre>\r
-<p>That is:</p>\r
-<ul>\r
-<li>Square brackets containing the link identifier (optionally\r
- indented from the left margin using up to three spaces);</li>\r
-<li>followed by a colon;</li>\r
-<li>followed by one or more spaces (or tabs);</li>\r
-<li>followed by the URL for the link;</li>\r
-<li>optionally followed by a title attribute for the link, enclosed\r
- in double or single quotes.</li>\r
-</ul>\r
-<p>The link URL may, optionally, be surrounded by angle brackets:</p>\r
-<pre><code>[id]: <http://example.com/> "Optional Title Here"\r
-</code></pre>\r
-<p>You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:</p>\r
-<pre><code>[id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-</code></pre>\r
-<p>Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.</p>\r
-<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>\r
-<pre><code>[link text][a]\r
-[link text][A]\r
-</code></pre>\r
-<p>are equivalent.</p>\r
-<p>The <em>implicit link name</em> shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:</p>\r
-<pre><code>[Google][]\r
-</code></pre>\r
-<p>And then define the link:</p>\r
-<pre><code>[Google]: http://google.com/\r
-</code></pre>\r
-<p>Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:</p>\r
-<pre><code>Visit [Daring Fireball][] for more information.\r
-</code></pre>\r
-<p>And then define the link:</p>\r
-<pre><code>[Daring Fireball]: http://daringfireball.net/\r
-</code></pre>\r
-<p>Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.</p>\r
-<p>Here's an example of reference links in action:</p>\r
-<pre><code>I get 10 times more traffic from [Google] [1] than from\r
-[Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Using the implicit link name shortcut, you could instead write:</p>\r
-<pre><code>I get 10 times more traffic from [Google][] than from\r
-[Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Both of the above examples will produce the following HTML output:</p>\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from\r
-<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
-or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-<p>For comparison, here is the same paragraph written using\r
-Markdown's inline link style:</p>\r
-<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")\r
-than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
-[MSN](http://search.msn.com/ "MSN Search").\r
-</code></pre>\r
-<p>The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.</p>\r
-<p>With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.</p>\r
-<h3 id="em">Emphasis</h3>\r
-\r
-<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of\r
-emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an\r
-HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML\r
-<code><strong></code> tag. E.g., this input:</p>\r
-<pre><code>*single asterisks*\r
-\r
-_single underscores_\r
-\r
-**double asterisks**\r
-\r
-__double underscores__\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><em>single asterisks</em>\r
-\r
-<em>single underscores</em>\r
-\r
-<strong>double asterisks</strong>\r
-\r
-<strong>double underscores</strong>\r
-</code></pre>\r
-<p>You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.</p>\r
-<p>Emphasis can be used in the middle of a word:</p>\r
-<pre><code>un*fucking*believable\r
-</code></pre>\r
-<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a\r
-literal asterisk or underscore.</p>\r
-<p>To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:</p>\r
-<pre><code>\*this text is surrounded by literal asterisks\*\r
-</code></pre>\r
-<h3 id="code">Code</h3>\r
-\r
-<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:</p>\r
-<pre><code>Use the `printf()` function.\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><p>Use the <code>printf()</code> function.</p>\r
-</code></pre>\r
-<p>To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:</p>\r
-<pre><code>``There is a literal backtick (`) here.``\r
-</code></pre>\r
-<p>which will produce this:</p>\r
-<pre><code><p><code>There is a literal backtick (`) here.</code></p>\r
-</code></pre>\r
-<p>The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:</p>\r
-<pre><code>A single backtick in a code span: `` ` ``\r
-\r
-A backtick-delimited string in a code span: `` `foo` ``\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><p>A single backtick in a code span: <code>`</code></p>\r
-\r
-<p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-</code></pre>\r
-<p>With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:</p>\r
-<pre><code>Please don't use any `<blink>` tags.\r
-</code></pre>\r
-<p>into:</p>\r
-<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>\r
-</code></pre>\r
-<p>You can write this:</p>\r
-<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.\r
-</code></pre>\r
-<p>to produce:</p>\r
-<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded\r
-equivalent of <code>&amp;mdash;</code>.</p>\r
-</code></pre>\r
-<h3 id="img">Images</h3>\r
-\r
-<p>Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.</p>\r
-<p>Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>\r
-<p>Inline image syntax looks like this:</p>\r
-<pre><code>\r
-\r
-\r
-</code></pre>\r
-<p>That is:</p>\r
-<ul>\r
-<li>An exclamation mark: <code>!</code>;</li>\r
-<li>followed by a set of square brackets, containing the <code>alt</code>\r
- attribute text for the image;</li>\r
-<li>followed by a set of parentheses, containing the URL or path to\r
- the image, and an optional <code>title</code> attribute enclosed in double\r
- or single quotes.</li>\r
-</ul>\r
-<p>Reference-style image syntax looks like this:</p>\r
-<pre><code>![Alt text][id]\r
-</code></pre>\r
-<p>Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:</p>\r
-<pre><code>[id]: url/to/image "Optional title attribute"\r
-</code></pre>\r
-<p>As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML <code><img></code> tags.</p>\r
-<hr />\r
-<h2 id="misc">Miscellaneous</h2>\r
-\r
-<h3 id="autolink">Automatic Links</h3>\r
-\r
-<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>\r
-<pre><code><http://example.com/>\r
-</code></pre>\r
-<p>Markdown will turn this into:</p>\r
-<pre><code><a href="http://example.com/">http://example.com/</a>\r
-</code></pre>\r
-<p>Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:</p>\r
-<pre><code><address@example.com>\r
-</code></pre>\r
-<p>into something like this:</p>\r
-<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;\r
-&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;\r
-&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;\r
-&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>\r
-</code></pre>\r
-<p>which will render in a browser as a clickable link to "address@example.com".</p>\r
-<p>(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)</p>\r
-<h3 id="backslash">Backslash Escapes</h3>\r
-\r
-<p>Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes\r
-before the asterisks, like this:</p>\r
-<pre><code>\*literal asterisks\*\r
-</code></pre>\r
-<p>Markdown provides backslash escapes for the following characters:</p>\r
-<pre><code>\ backslash\r
-` backtick\r
-* asterisk\r
-_ underscore\r
-{} curly braces\r
-[] square brackets\r
-() parentheses\r
-# hash mark\r
-+ plus sign\r
-- minus sign (hyphen)\r
-. dot\r
-! exclamation mark\r
+<h1>Markdown: Syntax</h1>
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<ul>
+<li><a href="#overview">Overview</a><ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#html">Inline HTML</a></li>
+<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
+</ul>
+</li>
+<li><a href="#block">Block Elements</a><ul>
+<li><a href="#p">Paragraphs and Line Breaks</a></li>
+<li><a href="#header">Headers</a></li>
+<li><a href="#blockquote">Blockquotes</a></li>
+<li><a href="#list">Lists</a></li>
+<li><a href="#precode">Code Blocks</a></li>
+<li><a href="#hr">Horizontal Rules</a></li>
+</ul>
+</li>
+<li><a href="#span">Span Elements</a><ul>
+<li><a href="#link">Links</a></li>
+<li><a href="#em">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#img">Images</a></li>
+</ul>
+</li>
+<li><a href="#misc">Miscellaneous</a><ul>
+<li><a href="#backslash">Backslash Escapes</a></li>
+<li><a href="#autolink">Automatic Links</a></li>
+</ul>
+</li>
+</ul>
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
+<hr />
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+<h3 id="html">Inline HTML</h3>
+
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,
+<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>
+<p>For example, to add an HTML table to a Markdown article:</p>
+<pre><code>This is a regular paragraph.
+
+<table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+</table>
+
+This is another regular paragraph.
+</code></pre>
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+<p>In HTML, there are two characters that demand special treatment: <code><</code>
+and <code>&</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&lt;</code>, and
+<code>&amp;</code>.</p>
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+<pre><code>http://images.google.com/images?num=30&q=larry+bird
+</code></pre>
+<p>you need to encode the URL as:</p>
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;</code>.</p>
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+<pre><code>&copy;
+</code></pre>
+<p>and Markdown will leave it alone. But if you write:</p>
+<pre><code>AT&T
+</code></pre>
+<p>Markdown will translate it to:</p>
+<pre><code>AT&amp;T
+</code></pre>
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+<pre><code>4 < 5
+</code></pre>
+<p>Markdown will translate it to:</p>
+<pre><code>4 &lt; 5
+</code></pre>
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code><</code>
+and <code>&</code> in your example code needs to be escaped.)</p>
+<hr />
+<h2 id="block">Block Elements</h2>
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code><br /></code> tag.</p>
+<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic
+"every line break is a <code><br /></code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+<h3 id="header">Headers</h3>
+
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+<h3 id="blockquote">Blockquotes</h3>
+
+<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>></code> before every line:</p>
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>Markdown allows you to be lazy and only put the <code>></code> before the first
+line of a hard-wrapped paragraph:</p>
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>></code>:</p>
+<pre><code>> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+</code></pre>
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+<pre><code>> ## This is a header.
+>
+> 1. This is the first list item.
+> 2. This is the second list item.
+>
+> Here's some example code:
+>
+> return shell_exec("echo $input | $markdown_script");
+</code></pre>
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+<h3 id="list">Lists</h3>
+
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+<p>is equivalent to:</p>
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+<p>and:</p>
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+<p>Ordered lists use numbers followed by periods:</p>
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+<pre><code><ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+</code></pre>
+<p>If you instead wrote the list in Markdown like this:</p>
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+<p>or even:</p>
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>But if you want to be lazy, you don't have to:</p>
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code><p></code> tags in the HTML output. For example, this input:</p>
+<pre><code>* Bird
+* Magic
+</code></pre>
+<p>will turn into:</p>
+<pre><code><ul>
+<li>Bird</li>
+<li>Magic</li>
+</ul>
+</code></pre>
+<p>But this:</p>
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+<p>will turn into:</p>
+<pre><code><ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
+</code></pre>
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:</p>
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+<p>To put a blockquote within a list item, the blockquote's <code>></code>
+delimiters need to be indented:</p>
+<pre><code>* A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+</code></pre>
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+<pre><code>* A list item with a code block:
+
+ <code goes here>
+</code></pre>
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+<pre><code>1986. What a great season.
+</code></pre>
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+<pre><code>1986\. What a great season.
+</code></pre>
+<h3 id="precode">Code Blocks</h3>
+
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code><pre></code> and <code><code></code> tags.</p>
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+<p>Markdown will generate:</p>
+<pre><code><p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
+</code></pre>
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+<p>will turn into:</p>
+<pre><code><p>Here is an example of AppleScript:</p>
+
+<pre><code>tell application "Foo"
+ beep
+end tell
+</code></pre>
+</code></pre>
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+<pre><code> <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+</code></pre>
+<p>will turn into:</p>
+<pre><code><pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+&lt;/div&gt;
+</code></pre>
+</code></pre>
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+<h3 id="hr">Horizontal Rules</h3>
+
+<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+<hr />
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+<p>In both styles, the link text is delimited by [square brackets].</p>
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+<p>Will produce:</p>
+<pre><code><p>This is <a href="http://example.com/" title="Title">
+an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no
+title attribute.</p>
+</code></pre>
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+<p>You can optionally use a space to separate the sets of brackets:</p>
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+<p>That is:</p>
+<ul>
+<li>Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.</li>
+</ul>
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+<pre><code>[id]: <http://example.com/> "Optional Title Here"
+</code></pre>
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+<p>are equivalent.</p>
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+<pre><code>[Google][]
+</code></pre>
+<p>And then define the link:</p>
+<pre><code>[Google]: http://google.com/
+</code></pre>
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+<p>And then define the link:</p>
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+<p>Here's an example of reference links in action:</p>
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Using the implicit link name shortcut, you could instead write:</p>
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Both of the above examples will produce the following HTML output:</p>
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from
+<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+</code></pre>
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+<h3 id="em">Emphasis</h3>
+
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code><strong></code> tag. E.g., this input:</p>
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+<p>will produce:</p>
+<pre><code><em>single asterisks</em>
+
+<em>single underscores</em>
+
+<strong>double asterisks</strong>
+
+<strong>double underscores</strong>
+</code></pre>
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+<p>Emphasis can be used in the middle of a word:</p>
+<pre><code>un*fucking*believable
+</code></pre>
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+<h3 id="code">Code</h3>
+
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+<pre><code>Use the `printf()` function.
+</code></pre>
+<p>will produce:</p>
+<pre><code><p>Use the <code>printf()</code> function.</p>
+</code></pre>
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+<p>which will produce this:</p>
+<pre><code><p><code>There is a literal backtick (`) here.</code></p>
+</code></pre>
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+<p>will produce:</p>
+<pre><code><p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+</code></pre>
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+<pre><code>Please don't use any `<blink>` tags.
+</code></pre>
+<p>into:</p>
+<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+</code></pre>
+<p>You can write this:</p>
+<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+</code></pre>
+<p>to produce:</p>
+<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded
+equivalent of <code>&amp;mdash;</code>.</p>
+</code></pre>
+<h3 id="img">Images</h3>
+
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+<p>Inline image syntax looks like this:</p>
+<pre><code>
+
+
+</code></pre>
+<p>That is:</p>
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+ attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+ the image, and an optional <code>title</code> attribute enclosed in double
+ or single quotes.</li>
+</ul>
+<p>Reference-style image syntax looks like this:</p>
+<pre><code>![Alt text][id]
+</code></pre>
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code><img></code> tags.</p>
+<hr />
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+<pre><code><http://example.com/>
+</code></pre>
+<p>Markdown will turn this into:</p>
+<pre><code><a href="http://example.com/">http://example.com/</a>
+</code></pre>
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+<pre><code><address@example.com>
+</code></pre>
+<p>into something like this:</p>
+<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+</code></pre>
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+<h3 id="backslash">Backslash Escapes</h3>
+
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes
+before the asterisks, like this:</p>
+<pre><code>\*literal asterisks\*
+</code></pre>
+<p>Markdown provides backslash escapes for the following characters:</p>
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
</code></pre>
\ No newline at end of file
-Markdown: Syntax\r
-================\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>\r
- <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-\r
-* [Overview](#overview)\r
- * [Philosophy](#philosophy)\r
- * [Inline HTML](#html)\r
- * [Automatic Escaping for Special Characters](#autoescape)\r
-* [Block Elements](#block)\r
- * [Paragraphs and Line Breaks](#p)\r
- * [Headers](#header)\r
- * [Blockquotes](#blockquote)\r
- * [Lists](#list)\r
- * [Code Blocks](#precode)\r
- * [Horizontal Rules](#hr)\r
-* [Span Elements](#span)\r
- * [Links](#link)\r
- * [Emphasis](#em)\r
- * [Code](#code)\r
- * [Images](#img)\r
-* [Miscellaneous](#misc)\r
- * [Backslash Escapes](#backslash)\r
- * [Automatic Links](#autolink)\r
-\r
-\r
-**Note:** This document is itself written using Markdown; you\r
-can [see the source for it by adding '.text' to the URL][src].\r
-\r
- [src]: /projects/markdown/syntax.text\r
-\r
-* * *\r
-\r
-<h2 id="overview">Overview</h2>\r
-\r
-<h3 id="philosophy">Philosophy</h3>\r
-\r
-Markdown is intended to be as easy-to-read and easy-to-write as is feasible.\r
-\r
-Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],\r
-[Grutatext] [5], and [EtText] [6] -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.\r
-\r
- [1]: http://docutils.sourceforge.net/mirror/setext.html\r
- [2]: http://www.aaronsw.com/2002/atx/\r
- [3]: http://textism.com/tools/textile/\r
- [4]: http://docutils.sourceforge.net/rst.html\r
- [5]: http://www.triptico.com/software/grutatxt.html\r
- [6]: http://ettext.taint.org/doc/\r
-\r
-To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like \*emphasis\*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.\r
-\r
-\r
-\r
-<h3 id="html">Inline HTML</h3>\r
-\r
-Markdown's syntax is intended for one purpose: to be used as a\r
-format for *writing* for the web.\r
-\r
-Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is *not* to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a *publishing* format; Markdown is a *writing*\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.\r
-\r
-For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.\r
-\r
-The only restrictions are that block-level HTML elements -- e.g. `<div>`,\r
-`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) `<p>` tags around HTML block-level tags.\r
-\r
-For example, to add an HTML table to a Markdown article:\r
-\r
- This is a regular paragraph.\r
-\r
- <table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
- </table>\r
-\r
- This is another regular paragraph.\r
-\r
-Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an\r
-HTML block.\r
-\r
-Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's\r
-link or image syntax, go right ahead.\r
-\r
-Unlike block-level HTML tags, Markdown syntax *is* processed within\r
-span-level tags.\r
-\r
-\r
-<h3 id="autoescape">Automatic Escaping for Special Characters</h3>\r
-\r
-In HTML, there are two characters that demand special treatment: `<`\r
-and `&`. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. `<`, and\r
-`&`.\r
-\r
-Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '`AT&T`'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:\r
-\r
- http://images.google.com/images?num=30&q=larry+bird\r
-\r
-you need to encode the URL as:\r
-\r
- http://images.google.com/images?num=30&q=larry+bird\r
-\r
-in your anchor tag `href` attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.\r
-\r
-Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into `&`.\r
-\r
-So, if you want to include a copyright symbol in your article, you can write:\r
-\r
- ©\r
-\r
-and Markdown will leave it alone. But if you write:\r
-\r
- AT&T\r
-\r
-Markdown will translate it to:\r
-\r
- AT&T\r
-\r
-Similarly, because Markdown supports [inline HTML](#html), if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:\r
-\r
- 4 < 5\r
-\r
-Markdown will translate it to:\r
-\r
- 4 < 5\r
-\r
-However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are *always* encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single `<`\r
-and `&` in your example code needs to be escaped.)\r
-\r
-\r
-* * *\r
-\r
-\r
-<h2 id="block">Block Elements</h2>\r
-\r
-\r
-<h3 id="p">Paragraphs and Line Breaks</h3>\r
-\r
-A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.\r
-\r
-The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a `<br />` tag.\r
-\r
-When you *do* want to insert a `<br />` break tag using Markdown, you\r
-end a line with two or more spaces, then type return.\r
-\r
-Yes, this takes a tad more effort to create a `<br />`, but a simplistic\r
-"every line break is a `<br />`" rule wouldn't work for Markdown.\r
-Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]\r
-work best -- and look better -- when you format them with hard breaks.\r
-\r
- [bq]: #blockquote\r
- [l]: #list\r
-\r
-\r
-\r
-<h3 id="header">Headers</h3>\r
-\r
-Markdown supports two styles of headers, [Setext] [1] and [atx] [2].\r
-\r
-Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:\r
-\r
- This is an H1\r
- =============\r
-\r
- This is an H2\r
- -------------\r
-\r
-Any number of underlining `=`'s or `-`'s will work.\r
-\r
-Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:\r
-\r
- # This is an H1\r
-\r
- ## This is an H2\r
-\r
- ###### This is an H6\r
-\r
-Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :\r
-\r
- # This is an H1 #\r
-\r
- ## This is an H2 ##\r
-\r
- ### This is an H3 ######\r
-\r
-\r
-<h3 id="blockquote">Blockquotes</h3>\r
-\r
-Markdown uses email-style `>` characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a `>` before every line:\r
-\r
- > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
- > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
- > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
- > \r
- > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
- > id sem consectetuer libero luctus adipiscing.\r
-\r
-Markdown allows you to be lazy and only put the `>` before the first\r
-line of a hard-wrapped paragraph:\r
-\r
- > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
- consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
- > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
- id sem consectetuer libero luctus adipiscing.\r
-\r
-Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of `>`:\r
-\r
- > This is the first level of quoting.\r
- >\r
- > > This is nested blockquote.\r
- >\r
- > Back to the first level.\r
-\r
-Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:\r
-\r
- > ## This is a header.\r
- > \r
- > 1. This is the first list item.\r
- > 2. This is the second list item.\r
- > \r
- > Here's some example code:\r
- > \r
- > return shell_exec("echo $input | $markdown_script");\r
-\r
-Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.\r
-\r
-\r
-<h3 id="list">Lists</h3>\r
-\r
-Markdown supports ordered (numbered) and unordered (bulleted) lists.\r
-\r
-Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:\r
-\r
- * Red\r
- * Green\r
- * Blue\r
-\r
-is equivalent to:\r
-\r
- + Red\r
- + Green\r
- + Blue\r
-\r
-and:\r
-\r
- - Red\r
- - Green\r
- - Blue\r
-\r
-Ordered lists use numbers followed by periods:\r
-\r
- 1. Bird\r
- 2. McHale\r
- 3. Parish\r
-\r
-It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:\r
-\r
- <ol>\r
- <li>Bird</li>\r
- <li>McHale</li>\r
- <li>Parish</li>\r
- </ol>\r
-\r
-If you instead wrote the list in Markdown like this:\r
-\r
- 1. Bird\r
- 1. McHale\r
- 1. Parish\r
-\r
-or even:\r
-\r
- 3. Bird\r
- 1. McHale\r
- 8. Parish\r
-\r
-you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.\r
-\r
-If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.\r
-\r
-List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.\r
-\r
-To make lists look nice, you can wrap items with hanging indents:\r
-\r
- * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
- * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-But if you want to be lazy, you don't have to:\r
-\r
- * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
- * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-If list items are separated by blank lines, Markdown will wrap the\r
-items in `<p>` tags in the HTML output. For example, this input:\r
-\r
- * Bird\r
- * Magic\r
-\r
-will turn into:\r
-\r
- <ul>\r
- <li>Bird</li>\r
- <li>Magic</li>\r
- </ul>\r
-\r
-But this:\r
-\r
- * Bird\r
-\r
- * Magic\r
-\r
-will turn into:\r
-\r
- <ul>\r
- <li><p>Bird</p></li>\r
- <li><p>Magic</p></li>\r
- </ul>\r
-\r
-List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:\r
-\r
- 1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
- 2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:\r
-\r
- * This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
- only required to indent the first line. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit.\r
-\r
- * Another item in the same list.\r
-\r
-To put a blockquote within a list item, the blockquote's `>`\r
-delimiters need to be indented:\r
-\r
- * A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-\r
-To put a code block within a list item, the code block needs\r
-to be indented *twice* -- 8 spaces or two tabs:\r
-\r
- * A list item with a code block:\r
-\r
- <code goes here>\r
-\r
-\r
-It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:\r
-\r
- 1986. What a great season.\r
-\r
-In other words, a *number-period-space* sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:\r
-\r
- 1986\. What a great season.\r
-\r
-\r
-\r
-<h3 id="precode">Code Blocks</h3>\r
-\r
-Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both `<pre>` and `<code>` tags.\r
-\r
-To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:\r
-\r
- This is a normal paragraph:\r
-\r
- This is a code block.\r
-\r
-Markdown will generate:\r
-\r
- <p>This is a normal paragraph:</p>\r
-\r
- <pre><code>This is a code block.\r
- </code></pre>\r
-\r
-One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:\r
-\r
- Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-\r
-will turn into:\r
-\r
- <p>Here is an example of AppleScript:</p>\r
-\r
- <pre><code>tell application "Foo"\r
- beep\r
- end tell\r
- </code></pre>\r
-\r
-A code block continues until it reaches a line that is not indented\r
-(or the end of the article).\r
-\r
-Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:\r
-\r
- <div class="footer">\r
- © 2004 Foo Corporation\r
- </div>\r
-\r
-will turn into:\r
-\r
- <pre><code><div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
- </code></pre>\r
-\r
-Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.\r
-\r
-\r
-\r
-<h3 id="hr">Horizontal Rules</h3>\r
-\r
-You can produce a horizontal rule tag (`<hr />`) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:\r
-\r
- * * *\r
-\r
- ***\r
-\r
- *****\r
- \r
- - - -\r
-\r
- ---------------------------------------\r
-\r
- _ _ _\r
-\r
-\r
-* * *\r
-\r
-<h2 id="span">Span Elements</h2>\r
-\r
-<h3 id="link">Links</h3>\r
-\r
-Markdown supports two style of links: *inline* and *reference*.\r
-\r
-In both styles, the link text is delimited by [square brackets].\r
-\r
-To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an *optional*\r
-title for the link, surrounded in quotes. For example:\r
-\r
- This is [an example](http://example.com/ "Title") inline link.\r
-\r
- [This link](http://example.net/) has no title attribute.\r
-\r
-Will produce:\r
-\r
- <p>This is <a href="http://example.com/" title="Title">\r
- an example</a> inline link.</p>\r
-\r
- <p><a href="http://example.net/">This link</a> has no\r
- title attribute.</p>\r
-\r
-If you're referring to a local resource on the same server, you can\r
-use relative paths:\r
-\r
- See my [About](/about/) page for details. \r
-\r
-Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:\r
-\r
- This is [an example][id] reference-style link.\r
-\r
-You can optionally use a space to separate the sets of brackets:\r
-\r
- This is [an example] [id] reference-style link.\r
-\r
-Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:\r
-\r
- [id]: http://example.com/ "Optional Title Here"\r
-\r
-That is:\r
-\r
-* Square brackets containing the link identifier (optionally\r
- indented from the left margin using up to three spaces);\r
-* followed by a colon;\r
-* followed by one or more spaces (or tabs);\r
-* followed by the URL for the link;\r
-* optionally followed by a title attribute for the link, enclosed\r
- in double or single quotes.\r
-\r
-The link URL may, optionally, be surrounded by angle brackets:\r
-\r
- [id]: <http://example.com/> "Optional Title Here"\r
-\r
-You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:\r
-\r
- [id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-\r
-Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.\r
-\r
-Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:\r
-\r
- [link text][a]\r
- [link text][A]\r
-\r
-are equivalent.\r
-\r
-The *implicit link name* shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:\r
-\r
- [Google][]\r
-\r
-And then define the link:\r
-\r
- [Google]: http://google.com/\r
-\r
-Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:\r
-\r
- Visit [Daring Fireball][] for more information.\r
-\r
-And then define the link:\r
- \r
- [Daring Fireball]: http://daringfireball.net/\r
-\r
-Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.\r
-\r
-Here's an example of reference links in action:\r
-\r
- I get 10 times more traffic from [Google] [1] than from\r
- [Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-\r
-Using the implicit link name shortcut, you could instead write:\r
-\r
- I get 10 times more traffic from [Google][] than from\r
- [Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-\r
-Both of the above examples will produce the following HTML output:\r
-\r
- <p>I get 10 times more traffic from <a href="http://google.com/"\r
- title="Google">Google</a> than from\r
- <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
- or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-\r
-For comparison, here is the same paragraph written using\r
-Markdown's inline link style:\r
-\r
- I get 10 times more traffic from [Google](http://google.com/ "Google")\r
- than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
- [MSN](http://search.msn.com/ "MSN Search").\r
-\r
-The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.\r
-\r
-With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.\r
-\r
-\r
-<h3 id="em">Emphasis</h3>\r
-\r
-Markdown treats asterisks (`*`) and underscores (`_`) as indicators of\r
-emphasis. Text wrapped with one `*` or `_` will be wrapped with an\r
-HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML\r
-`<strong>` tag. E.g., this input:\r
-\r
- *single asterisks*\r
-\r
- _single underscores_\r
-\r
- **double asterisks**\r
-\r
- __double underscores__\r
-\r
-will produce:\r
-\r
- <em>single asterisks</em>\r
-\r
- <em>single underscores</em>\r
-\r
- <strong>double asterisks</strong>\r
-\r
- <strong>double underscores</strong>\r
-\r
-You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.\r
-\r
-Emphasis can be used in the middle of a word:\r
-\r
- un*fucking*believable\r
-\r
-But if you surround an `*` or `_` with spaces, it'll be treated as a\r
-literal asterisk or underscore.\r
-\r
-To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:\r
-\r
- \*this text is surrounded by literal asterisks\*\r
-\r
-\r
-\r
-<h3 id="code">Code</h3>\r
-\r
-To indicate a span of code, wrap it with backtick quotes (`` ` ``).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:\r
-\r
- Use the `printf()` function.\r
-\r
-will produce:\r
-\r
- <p>Use the <code>printf()</code> function.</p>\r
-\r
-To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:\r
-\r
- ``There is a literal backtick (`) here.``\r
-\r
-which will produce this:\r
-\r
- <p><code>There is a literal backtick (`) here.</code></p>\r
-\r
-The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:\r
-\r
- A single backtick in a code span: `` ` ``\r
- \r
- A backtick-delimited string in a code span: `` `foo` ``\r
-\r
-will produce:\r
-\r
- <p>A single backtick in a code span: <code>`</code></p>\r
- \r
- <p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-\r
-With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:\r
-\r
- Please don't use any `<blink>` tags.\r
-\r
-into:\r
-\r
- <p>Please don't use any <code><blink></code> tags.</p>\r
-\r
-You can write this:\r
-\r
- `—` is the decimal-encoded equivalent of `—`.\r
-\r
-to produce:\r
-\r
- <p><code>&#8212;</code> is the decimal-encoded\r
- equivalent of <code>&mdash;</code>.</p>\r
-\r
-\r
-\r
-<h3 id="img">Images</h3>\r
-\r
-Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.\r
-\r
-Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: *inline* and *reference*.\r
-\r
-Inline image syntax looks like this:\r
-\r
- \r
-\r
- \r
-\r
-That is:\r
-\r
-* An exclamation mark: `!`;\r
-* followed by a set of square brackets, containing the `alt`\r
- attribute text for the image;\r
-* followed by a set of parentheses, containing the URL or path to\r
- the image, and an optional `title` attribute enclosed in double\r
- or single quotes.\r
-\r
-Reference-style image syntax looks like this:\r
-\r
- ![Alt text][id]\r
-\r
-Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:\r
-\r
- [id]: url/to/image "Optional title attribute"\r
-\r
-As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML `<img>` tags.\r
-\r
-\r
-* * *\r
-\r
-\r
-<h2 id="misc">Miscellaneous</h2>\r
-\r
-<h3 id="autolink">Automatic Links</h3>\r
-\r
-Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:\r
-\r
- <http://example.com/>\r
- \r
-Markdown will turn this into:\r
-\r
- <a href="http://example.com/">http://example.com/</a>\r
-\r
-Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:\r
-\r
- <address@example.com>\r
-\r
-into something like this:\r
-\r
- <a href="mailto:addre\r
- ss@example.co\r
- m">address@exa\r
- mple.com</a>\r
-\r
-which will render in a browser as a clickable link to "address@example.com".\r
-\r
-(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)\r
-\r
-\r
-\r
-<h3 id="backslash">Backslash Escapes</h3>\r
-\r
-Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML `<em>` tag), you can backslashes\r
-before the asterisks, like this:\r
-\r
- \*literal asterisks\*\r
-\r
-Markdown provides backslash escapes for the following characters:\r
-\r
- \ backslash\r
- ` backtick\r
- * asterisk\r
- _ underscore\r
- {} curly braces\r
- [] square brackets\r
- () parentheses\r
- # hash mark\r
- + plus sign\r
- - minus sign (hyphen)\r
- . dot\r
- ! exclamation mark\r
-\r
+Markdown: Syntax
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+* [Overview](#overview)
+ * [Philosophy](#philosophy)
+ * [Inline HTML](#html)
+ * [Automatic Escaping for Special Characters](#autoescape)
+* [Block Elements](#block)
+ * [Paragraphs and Line Breaks](#p)
+ * [Headers](#header)
+ * [Blockquotes](#blockquote)
+ * [Lists](#list)
+ * [Code Blocks](#precode)
+ * [Horizontal Rules](#hr)
+* [Span Elements](#span)
+ * [Links](#link)
+ * [Emphasis](#em)
+ * [Code](#code)
+ * [Images](#img)
+* [Miscellaneous](#misc)
+ * [Backslash Escapes](#backslash)
+ * [Automatic Links](#autolink)
+
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL][src].
+
+ [src]: /projects/markdown/syntax.text
+
+* * *
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+
+Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
+[Grutatext] [5], and [EtText] [6] -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.
+
+ [1]: http://docutils.sourceforge.net/mirror/setext.html
+ [2]: http://www.aaronsw.com/2002/atx/
+ [3]: http://textism.com/tools/textile/
+ [4]: http://docutils.sourceforge.net/rst.html
+ [5]: http://www.triptico.com/software/grutatxt.html
+ [6]: http://ettext.taint.org/doc/
+
+To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like \*emphasis\*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.
+
+
+
+<h3 id="html">Inline HTML</h3>
+
+Markdown's syntax is intended for one purpose: to be used as a
+format for *writing* for the web.
+
+Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is *not* to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a *publishing* format; Markdown is a *writing*
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.
+
+For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.
+
+The only restrictions are that block-level HTML elements -- e.g. `<div>`,
+`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) `<p>` tags around HTML block-level tags.
+
+For example, to add an HTML table to a Markdown article:
+
+ This is a regular paragraph.
+
+ <table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+ </table>
+
+ This is another regular paragraph.
+
+Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
+HTML block.
+
+Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
+link or image syntax, go right ahead.
+
+Unlike block-level HTML tags, Markdown syntax *is* processed within
+span-level tags.
+
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+In HTML, there are two characters that demand special treatment: `<`
+and `&`. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. `<`, and
+`&`.
+
+Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '`AT&T`'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+you need to encode the URL as:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+in your anchor tag `href` attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.
+
+Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into `&`.
+
+So, if you want to include a copyright symbol in your article, you can write:
+
+ ©
+
+and Markdown will leave it alone. But if you write:
+
+ AT&T
+
+Markdown will translate it to:
+
+ AT&T
+
+Similarly, because Markdown supports [inline HTML](#html), if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:
+
+ 4 < 5
+
+Markdown will translate it to:
+
+ 4 < 5
+
+However, inside Markdown code spans and blocks, angle brackets and
+ampersands are *always* encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single `<`
+and `&` in your example code needs to be escaped.)
+
+
+* * *
+
+
+<h2 id="block">Block Elements</h2>
+
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.
+
+The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a `<br />` tag.
+
+When you *do* want to insert a `<br />` break tag using Markdown, you
+end a line with two or more spaces, then type return.
+
+Yes, this takes a tad more effort to create a `<br />`, but a simplistic
+"every line break is a `<br />`" rule wouldn't work for Markdown.
+Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
+work best -- and look better -- when you format them with hard breaks.
+
+ [bq]: #blockquote
+ [l]: #list
+
+
+
+<h3 id="header">Headers</h3>
+
+Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
+
+Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:
+
+ This is an H1
+ =============
+
+ This is an H2
+ -------------
+
+Any number of underlining `=`'s or `-`'s will work.
+
+Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:
+
+ # This is an H1
+
+ ## This is an H2
+
+ ###### This is an H6
+
+Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :
+
+ # This is an H1 #
+
+ ## This is an H2 ##
+
+ ### This is an H3 ######
+
+
+<h3 id="blockquote">Blockquotes</h3>
+
+Markdown uses email-style `>` characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a `>` before every line:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+ >
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ > id sem consectetuer libero luctus adipiscing.
+
+Markdown allows you to be lazy and only put the `>` before the first
+line of a hard-wrapped paragraph:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of `>`:
+
+ > This is the first level of quoting.
+ >
+ > > This is nested blockquote.
+ >
+ > Back to the first level.
+
+Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:
+
+ > ## This is a header.
+ >
+ > 1. This is the first list item.
+ > 2. This is the second list item.
+ >
+ > Here's some example code:
+ >
+ > return shell_exec("echo $input | $markdown_script");
+
+Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.
+
+
+<h3 id="list">Lists</h3>
+
+Markdown supports ordered (numbered) and unordered (bulleted) lists.
+
+Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:
+
+ * Red
+ * Green
+ * Blue
+
+is equivalent to:
+
+ + Red
+ + Green
+ + Blue
+
+and:
+
+ - Red
+ - Green
+ - Blue
+
+Ordered lists use numbers followed by periods:
+
+ 1. Bird
+ 2. McHale
+ 3. Parish
+
+It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:
+
+ <ol>
+ <li>Bird</li>
+ <li>McHale</li>
+ <li>Parish</li>
+ </ol>
+
+If you instead wrote the list in Markdown like this:
+
+ 1. Bird
+ 1. McHale
+ 1. Parish
+
+or even:
+
+ 3. Bird
+ 1. McHale
+ 8. Parish
+
+you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.
+
+If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.
+
+List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.
+
+To make lists look nice, you can wrap items with hanging indents:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+But if you want to be lazy, you don't have to:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+If list items are separated by blank lines, Markdown will wrap the
+items in `<p>` tags in the HTML output. For example, this input:
+
+ * Bird
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li>Bird</li>
+ <li>Magic</li>
+ </ul>
+
+But this:
+
+ * Bird
+
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li><p>Bird</p></li>
+ <li><p>Magic</p></li>
+ </ul>
+
+List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:
+
+ 1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ 2. Suspendisse id sem consectetuer libero luctus adipiscing.
+
+It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:
+
+ * This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+ only required to indent the first line. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+ * Another item in the same list.
+
+To put a blockquote within a list item, the blockquote's `>`
+delimiters need to be indented:
+
+ * A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+
+To put a code block within a list item, the code block needs
+to be indented *twice* -- 8 spaces or two tabs:
+
+ * A list item with a code block:
+
+ <code goes here>
+
+
+It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:
+
+ 1986. What a great season.
+
+In other words, a *number-period-space* sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:
+
+ 1986\. What a great season.
+
+
+
+<h3 id="precode">Code Blocks</h3>
+
+Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both `<pre>` and `<code>` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:
+
+ This is a normal paragraph:
+
+ This is a code block.
+
+Markdown will generate:
+
+ <p>This is a normal paragraph:</p>
+
+ <pre><code>This is a code block.
+ </code></pre>
+
+One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:
+
+ Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+
+will turn into:
+
+ <p>Here is an example of AppleScript:</p>
+
+ <pre><code>tell application "Foo"
+ beep
+ end tell
+ </code></pre>
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+ <div class="footer">
+ © 2004 Foo Corporation
+ </div>
+
+will turn into:
+
+ <pre><code><div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+ </code></pre>
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+
+
+<h3 id="hr">Horizontal Rules</h3>
+
+You can produce a horizontal rule tag (`<hr />`) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:
+
+ * * *
+
+ ***
+
+ *****
+
+ - - -
+
+ ---------------------------------------
+
+ _ _ _
+
+
+* * *
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+ This is [an example](http://example.com/ "Title") inline link.
+
+ [This link](http://example.net/) has no title attribute.
+
+Will produce:
+
+ <p>This is <a href="http://example.com/" title="Title">
+ an example</a> inline link.</p>
+
+ <p><a href="http://example.net/">This link</a> has no
+ title attribute.</p>
+
+If you're referring to a local resource on the same server, you can
+use relative paths:
+
+ See my [About](/about/) page for details.
+
+Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:
+
+ This is [an example][id] reference-style link.
+
+You can optionally use a space to separate the sets of brackets:
+
+ This is [an example] [id] reference-style link.
+
+Then, anywhere in the document, you define your link label like this,
+on a line by itself:
+
+ [id]: http://example.com/ "Optional Title Here"
+
+That is:
+
+* Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);
+* followed by a colon;
+* followed by one or more spaces (or tabs);
+* followed by the URL for the link;
+* optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.
+
+The link URL may, optionally, be surrounded by angle brackets:
+
+ [id]: <http://example.com/> "Optional Title Here"
+
+You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:
+
+ [id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+
+Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.
+
+Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
+
+ [link text][a]
+ [link text][A]
+
+are equivalent.
+
+The *implicit link name* shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:
+
+ [Google][]
+
+And then define the link:
+
+ [Google]: http://google.com/
+
+Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:
+
+ Visit [Daring Fireball][] for more information.
+
+And then define the link:
+
+ [Daring Fireball]: http://daringfireball.net/
+
+Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.
+
+Here's an example of reference links in action:
+
+ I get 10 times more traffic from [Google] [1] than from
+ [Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Using the implicit link name shortcut, you could instead write:
+
+ I get 10 times more traffic from [Google][] than from
+ [Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+
+Both of the above examples will produce the following HTML output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from
+ <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+ or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+For comparison, here is the same paragraph written using
+Markdown's inline link style:
+
+ I get 10 times more traffic from [Google](http://google.com/ "Google")
+ than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+ [MSN](http://search.msn.com/ "MSN Search").
+
+The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.
+
+With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.
+
+
+<h3 id="em">Emphasis</h3>
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`<strong>` tag. E.g., this input:
+
+ *single asterisks*
+
+ _single underscores_
+
+ **double asterisks**
+
+ __double underscores__
+
+will produce:
+
+ <em>single asterisks</em>
+
+ <em>single underscores</em>
+
+ <strong>double asterisks</strong>
+
+ <strong>double underscores</strong>
+
+You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.
+
+Emphasis can be used in the middle of a word:
+
+ un*fucking*believable
+
+But if you surround an `*` or `_` with spaces, it'll be treated as a
+literal asterisk or underscore.
+
+To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:
+
+ \*this text is surrounded by literal asterisks\*
+
+
+
+<h3 id="code">Code</h3>
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+ Use the `printf()` function.
+
+will produce:
+
+ <p>Use the <code>printf()</code> function.</p>
+
+To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:
+
+ ``There is a literal backtick (`) here.``
+
+which will produce this:
+
+ <p><code>There is a literal backtick (`) here.</code></p>
+
+The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:
+
+ A single backtick in a code span: `` ` ``
+
+ A backtick-delimited string in a code span: `` `foo` ``
+
+will produce:
+
+ <p>A single backtick in a code span: <code>`</code></p>
+
+ <p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:
+
+ Please don't use any `<blink>` tags.
+
+into:
+
+ <p>Please don't use any <code><blink></code> tags.</p>
+
+You can write this:
+
+ `—` is the decimal-encoded equivalent of `—`.
+
+to produce:
+
+ <p><code>&#8212;</code> is the decimal-encoded
+ equivalent of <code>&mdash;</code>.</p>
+
+
+
+<h3 id="img">Images</h3>
+
+Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.
+
+Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: *inline* and *reference*.
+
+Inline image syntax looks like this:
+
+ 
+
+ 
+
+That is:
+
+* An exclamation mark: `!`;
+* followed by a set of square brackets, containing the `alt`
+ attribute text for the image;
+* followed by a set of parentheses, containing the URL or path to
+ the image, and an optional `title` attribute enclosed in double
+ or single quotes.
+
+Reference-style image syntax looks like this:
+
+ ![Alt text][id]
+
+Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:
+
+ [id]: url/to/image "Optional title attribute"
+
+As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML `<img>` tags.
+
+
+* * *
+
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+
+ <http://example.com/>
+
+Markdown will turn this into:
+
+ <a href="http://example.com/">http://example.com/</a>
+
+Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:
+
+ <address@example.com>
+
+into something like this:
+
+ <a href="mailto:addre
+ ss@example.co
+ m">address@exa
+ mple.com</a>
+
+which will render in a browser as a clickable link to "address@example.com".
+
+(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)
+
+
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML `<em>` tag), you can backslashes
+before the asterisks, like this:
+
+ \*literal asterisks\*
+
+Markdown provides backslash escapes for the following characters:
+
+ \ backslash
+ ` backtick
+ * asterisk
+ _ underscore
+ {} curly braces
+ [] square brackets
+ () parentheses
+ # hash mark
+ + plus sign
+ - minus sign (hyphen)
+ . dot
+ ! exclamation mark
+
-<blockquote>\r
-<p>foo</p>\r
-<blockquote>\r
-<p>bar</p>\r
-</blockquote>\r
-<p>foo</p>\r
+<blockquote>
+<p>foo</p>
+<blockquote>
+<p>bar</p>
+</blockquote>
+<p>foo</p>
</blockquote>
\ No newline at end of file
-> foo\r
->\r
-> > bar\r
->\r
-> foo\r
+> foo
+>
+> > bar
+>
+> foo
-<h2>Unordered</h2>\r
-<p>Asterisks tight:</p>\r
-<ul>\r
-<li>asterisk 1</li>\r
-<li>asterisk 2</li>\r
-<li>asterisk 3</li>\r
-</ul>\r
-<p>Asterisks loose:</p>\r
-<ul>\r
-<li>\r
-<p>asterisk 1</p>\r
-</li>\r
-<li>\r
-<p>asterisk 2</p>\r
-</li>\r
-<li>\r
-<p>asterisk 3</p>\r
-</li>\r
-</ul>\r
-<hr />\r
-<p>Pluses tight:</p>\r
-<ul>\r
-<li>Plus 1</li>\r
-<li>Plus 2</li>\r
-<li>Plus 3</li>\r
-</ul>\r
-<p>Pluses loose:</p>\r
-<ul>\r
-<li>\r
-<p>Plus 1</p>\r
-</li>\r
-<li>\r
-<p>Plus 2</p>\r
-</li>\r
-<li>\r
-<p>Plus 3</p>\r
-</li>\r
-</ul>\r
-<hr />\r
-<p>Minuses tight:</p>\r
-<ul>\r
-<li>Minus 1</li>\r
-<li>Minus 2</li>\r
-<li>Minus 3</li>\r
-</ul>\r
-<p>Minuses loose:</p>\r
-<ul>\r
-<li>\r
-<p>Minus 1</p>\r
-</li>\r
-<li>\r
-<p>Minus 2</p>\r
-</li>\r
-<li>\r
-<p>Minus 3</p>\r
-</li>\r
-</ul>\r
-<h2>Ordered</h2>\r
-<p>Tight:</p>\r
-<ol>\r
-<li>First</li>\r
-<li>Second</li>\r
-<li>Third</li>\r
-</ol>\r
-<p>and:</p>\r
-<ol>\r
-<li>One</li>\r
-<li>Two</li>\r
-<li>Three</li>\r
-</ol>\r
-<p>Loose using tabs:</p>\r
-<ol>\r
-<li>\r
-<p>First</p>\r
-</li>\r
-<li>\r
-<p>Second</p>\r
-</li>\r
-<li>\r
-<p>Third</p>\r
-</li>\r
-</ol>\r
-<p>and using spaces:</p>\r
-<ol>\r
-<li>\r
-<p>One</p>\r
-</li>\r
-<li>\r
-<p>Two</p>\r
-</li>\r
-<li>\r
-<p>Three</p>\r
-</li>\r
-</ol>\r
-<p>Multiple paragraphs:</p>\r
-<ol>\r
-<li>\r
-<p>Item 1, graf one.</p>\r
-<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's\r
-back.</p>\r
-</li>\r
-<li>\r
-<p>Item 2.</p>\r
-</li>\r
-<li>\r
-<p>Item 3.</p>\r
-</li>\r
-</ol>\r
-<h2>Nested</h2>\r
-<ul>\r
-<li>Tab<ul>\r
-<li>Tab<ul>\r
-<li>Tab</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<p>Here's another:</p>\r
-<ol>\r
-<li>First</li>\r
-<li>Second:<ul>\r
-<li>Fee</li>\r
-<li>Fie</li>\r
-<li>Foe</li>\r
-</ul>\r
-</li>\r
-<li>Third</li>\r
-</ol>\r
-<p>Same thing but with paragraphs:</p>\r
-<ol>\r
-<li>\r
-<p>First</p>\r
-</li>\r
-<li>\r
-<p>Second:</p>\r
-<ul>\r
-<li>Fee</li>\r
-<li>Fie</li>\r
-<li>Foe</li>\r
-</ul>\r
-</li>\r
-<li>\r
-<p>Third</p>\r
-</li>\r
+<h2>Unordered</h2>
+<p>Asterisks tight:</p>
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+<p>Asterisks loose:</p>
+<ul>
+<li>
+<p>asterisk 1</p>
+</li>
+<li>
+<p>asterisk 2</p>
+</li>
+<li>
+<p>asterisk 3</p>
+</li>
+</ul>
+<hr />
+<p>Pluses tight:</p>
+<ul>
+<li>Plus 1</li>
+<li>Plus 2</li>
+<li>Plus 3</li>
+</ul>
+<p>Pluses loose:</p>
+<ul>
+<li>
+<p>Plus 1</p>
+</li>
+<li>
+<p>Plus 2</p>
+</li>
+<li>
+<p>Plus 3</p>
+</li>
+</ul>
+<hr />
+<p>Minuses tight:</p>
+<ul>
+<li>Minus 1</li>
+<li>Minus 2</li>
+<li>Minus 3</li>
+</ul>
+<p>Minuses loose:</p>
+<ul>
+<li>
+<p>Minus 1</p>
+</li>
+<li>
+<p>Minus 2</p>
+</li>
+<li>
+<p>Minus 3</p>
+</li>
+</ul>
+<h2>Ordered</h2>
+<p>Tight:</p>
+<ol>
+<li>First</li>
+<li>Second</li>
+<li>Third</li>
+</ol>
+<p>and:</p>
+<ol>
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+</ol>
+<p>Loose using tabs:</p>
+<ol>
+<li>
+<p>First</p>
+</li>
+<li>
+<p>Second</p>
+</li>
+<li>
+<p>Third</p>
+</li>
+</ol>
+<p>and using spaces:</p>
+<ol>
+<li>
+<p>One</p>
+</li>
+<li>
+<p>Two</p>
+</li>
+<li>
+<p>Three</p>
+</li>
+</ol>
+<p>Multiple paragraphs:</p>
+<ol>
+<li>
+<p>Item 1, graf one.</p>
+<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's
+back.</p>
+</li>
+<li>
+<p>Item 2.</p>
+</li>
+<li>
+<p>Item 3.</p>
+</li>
+</ol>
+<h2>Nested</h2>
+<ul>
+<li>Tab<ul>
+<li>Tab<ul>
+<li>Tab</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<p>Here's another:</p>
+<ol>
+<li>First</li>
+<li>Second:<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul>
+</li>
+<li>Third</li>
+</ol>
+<p>Same thing but with paragraphs:</p>
+<ol>
+<li>
+<p>First</p>
+</li>
+<li>
+<p>Second:</p>
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul>
+</li>
+<li>
+<p>Third</p>
+</li>
</ol>
\ No newline at end of file
-## Unordered\r
-\r
-Asterisks tight:\r
-\r
-* asterisk 1\r
-* asterisk 2\r
-* asterisk 3\r
-\r
-\r
-Asterisks loose:\r
-\r
-* asterisk 1\r
-\r
-* asterisk 2\r
-\r
-* asterisk 3\r
-\r
-* * *\r
-\r
-Pluses tight:\r
-\r
-+ Plus 1\r
-+ Plus 2\r
-+ Plus 3\r
-\r
-\r
-Pluses loose:\r
-\r
-+ Plus 1\r
-\r
-+ Plus 2\r
-\r
-+ Plus 3\r
-\r
-* * *\r
-\r
-\r
-Minuses tight:\r
-\r
-- Minus 1\r
-- Minus 2\r
-- Minus 3\r
-\r
-\r
-Minuses loose:\r
-\r
-- Minus 1\r
-\r
-- Minus 2\r
-\r
-- Minus 3\r
-\r
-\r
-## Ordered\r
-\r
-Tight:\r
-\r
-1. First\r
-2. Second\r
-3. Third\r
-\r
-and:\r
-\r
-1. One\r
-2. Two\r
-3. Three\r
-\r
-\r
-Loose using tabs:\r
-\r
-1. First\r
-\r
-2. Second\r
-\r
-3. Third\r
-\r
-and using spaces:\r
-\r
-1. One\r
-\r
-2. Two\r
-\r
-3. Three\r
-\r
-Multiple paragraphs:\r
-\r
-1. Item 1, graf one.\r
-\r
- Item 2. graf two. The quick brown fox jumped over the lazy dog's\r
- back.\r
- \r
-2. Item 2.\r
-\r
-3. Item 3.\r
-\r
-\r
-\r
-## Nested\r
-\r
-* Tab\r
- * Tab\r
- * Tab\r
-\r
-Here's another:\r
-\r
-1. First\r
-2. Second:\r
- * Fee\r
- * Fie\r
- * Foe\r
-3. Third\r
-\r
-Same thing but with paragraphs:\r
-\r
-1. First\r
-\r
-2. Second:\r
- * Fee\r
- * Fie\r
- * Foe\r
-\r
-3. Third\r
+## Unordered
+
+Asterisks tight:
+
+* asterisk 1
+* asterisk 2
+* asterisk 3
+
+
+Asterisks loose:
+
+* asterisk 1
+
+* asterisk 2
+
+* asterisk 3
+
+* * *
+
+Pluses tight:
+
++ Plus 1
++ Plus 2
++ Plus 3
+
+
+Pluses loose:
+
++ Plus 1
+
++ Plus 2
+
++ Plus 3
+
+* * *
+
+
+Minuses tight:
+
+- Minus 1
+- Minus 2
+- Minus 3
+
+
+Minuses loose:
+
+- Minus 1
+
+- Minus 2
+
+- Minus 3
+
+
+## Ordered
+
+Tight:
+
+1. First
+2. Second
+3. Third
+
+and:
+
+1. One
+2. Two
+3. Three
+
+
+Loose using tabs:
+
+1. First
+
+2. Second
+
+3. Third
+
+and using spaces:
+
+1. One
+
+2. Two
+
+3. Three
+
+Multiple paragraphs:
+
+1. Item 1, graf one.
+
+ Item 2. graf two. The quick brown fox jumped over the lazy dog's
+ back.
+
+2. Item 2.
+
+3. Item 3.
+
+
+
+## Nested
+
+* Tab
+ * Tab
+ * Tab
+
+Here's another:
+
+1. First
+2. Second:
+ * Fee
+ * Fie
+ * Foe
+3. Third
+
+Same thing but with paragraphs:
+
+1. First
+
+2. Second:
+ * Fee
+ * Fie
+ * Foe
+
+3. Third
-<p><strong><em>This is strong and em.</em></strong></p>\r
-<p>So is <strong><em>this</em></strong> word.</p>\r
-<p><strong><em>This is strong and em.</em></strong></p>\r
+<p><strong><em>This is strong and em.</em></strong></p>
+<p>So is <strong><em>this</em></strong> word.</p>
+<p><strong><em>This is strong and em.</em></strong></p>
<p>So is <strong><em>this</em></strong> word.</p>
\ No newline at end of file
-***This is strong and em.***\r
-\r
-So is ***this*** word.\r
-\r
-___This is strong and em.___\r
-\r
-So is ___this___ word.\r
+***This is strong and em.***
+
+So is ***this*** word.
+
+___This is strong and em.___
+
+So is ___this___ word.
-<ul>\r
-<li>\r
-<p>this is a list item\r
- indented with tabs</p>\r
-</li>\r
-<li>\r
-<p>this is a list item\r
- indented with spaces</p>\r
-</li>\r
-</ul>\r
-<p>Code:</p>\r
-<pre><code>this code block is indented by one tab\r
-</code></pre>\r
-<p>And:</p>\r
-<pre><code> this code block is indented by two tabs\r
-</code></pre>\r
-<p>And:</p>\r
-<pre><code>+ this is an example list item\r
- indented with tabs\r
-\r
-+ this is an example list item\r
- indented with spaces\r
+<ul>
+<li>
+<p>this is a list item
+ indented with tabs</p>
+</li>
+<li>
+<p>this is a list item
+ indented with spaces</p>
+</li>
+</ul>
+<p>Code:</p>
+<pre><code>this code block is indented by one tab
+</code></pre>
+<p>And:</p>
+<pre><code> this code block is indented by two tabs
+</code></pre>
+<p>And:</p>
+<pre><code>+ this is an example list item
+ indented with tabs
+
++ this is an example list item
+ indented with spaces
</code></pre>
\ No newline at end of file
-+ this is a list item\r
- indented with tabs\r
-\r
-+ this is a list item\r
- indented with spaces\r
-\r
-Code:\r
-\r
- this code block is indented by one tab\r
-\r
-And:\r
-\r
- this code block is indented by two tabs\r
-\r
-And:\r
-\r
- + this is an example list item\r
- indented with tabs\r
- \r
- + this is an example list item\r
- indented with spaces\r
++ this is a list item
+ indented with tabs
+
++ this is a list item
+ indented with spaces
+
+Code:
+
+ this code block is indented by one tab
+
+And:
+
+ this code block is indented by two tabs
+
+And:
+
+ + this is an example list item
+ indented with tabs
+
+ + this is an example list item
+ indented with spaces
-<blockquote>\r
-<p>A list within a blockquote:</p>\r
-<ul>\r
-<li>asterisk 1</li>\r
-<li>asterisk 2</li>\r
-<li>asterisk 3</li>\r
-</ul>\r
+<blockquote>
+<p>A list within a blockquote:</p>
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
</blockquote>
\ No newline at end of file
-> A list within a blockquote:\r
-> \r
-> * asterisk 1\r
-> * asterisk 2\r
-> * asterisk 3\r
+> A list within a blockquote:
+>
+> * asterisk 1
+> * asterisk 2
+> * asterisk 3
-<p>Some text</p>\r
-<div class="admonition note">\r
-<p class="admonition-title">Note</p>\r
-<p>A normal paragraph here</p>\r
-<ol>\r
-<li>first</li>\r
-<li>second</li>\r
-</ol>\r
-<blockquote>\r
-<p>Some important quote</p>\r
-<p>another paragraph in the quote</p>\r
-</blockquote>\r
-<pre><code>int main() {\r
- // insert some code\r
-}\r
-</code></pre>\r
-</div>\r
-<p>More text and stuff.</p>\r
-<div class="admonition note">\r
-<p class="admonition-title">Did you know?</p>\r
-<p>You can customize the title of the admonition</p>\r
-</div>\r
-<div class="admonition mycustomcssclass">\r
-<p class="admonition-title">And now...</p>\r
-<p>For something completely different.</p>\r
-<p>You can also use a custom CSS class name.</p>\r
-</div>\r
-<div class="admonition tip">\r
-<p>An explicitly empty string prevents the title from being rendered.</p>\r
+<p>Some text</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>A normal paragraph here</p>
+<ol>
+<li>first</li>
+<li>second</li>
+</ol>
+<blockquote>
+<p>Some important quote</p>
+<p>another paragraph in the quote</p>
+</blockquote>
+<pre><code>int main() {
+ // insert some code
+}
+</code></pre>
+</div>
+<p>More text and stuff.</p>
+<div class="admonition note">
+<p class="admonition-title">Did you know?</p>
+<p>You can customize the title of the admonition</p>
+</div>
+<p>Not part of an Admonition!</p>
+<div class="admonition mycustomcssclass">
+<p class="admonition-title">And now...</p>
+<p>For something completely different.</p>
+<p>You can also use a custom CSS class name.</p>
+</div>
+<div class="admonition tip">
+<p>An explicitly empty string prevents the title from being rendered.</p>
</div>
\ No newline at end of file
-Some text\r
-\r
-!!! note\r
- A normal paragraph here\r
-\r
- 1. first\r
- 2. second\r
-\r
- > Some important quote\r
-\r
- > another paragraph in the quote\r
-\r
- int main() {\r
- // insert some code\r
- }\r
-\r
-More text and stuff.\r
-\r
-!!! Note "Did you know?"\r
- You can customize the title of the admonition\r
-\r
-!!! mycustomcssclass "And now..."\r
- For something completely different.\r
-\r
- You can also use a custom CSS class name.\r
-\r
-!!! tip ""\r
- An explicitly empty string prevents the title from being rendered.\r
+Some text
+
+!!! note
+ A normal paragraph here
+
+ 1. first
+ 2. second
+
+ > Some important quote
+
+ > another paragraph in the quote
+
+ int main() {
+ // insert some code
+ }
+
+More text and stuff.
+
+!!! Note "Did you know?"
+ You can customize the title of the admonition
+Not part of an Admonition!
+
+!!! mycustomcssclass "And now..."
+ For something completely different.
+
+ You can also use a custom CSS class name.
+
+!!! tip ""
+ An explicitly empty string prevents the title from being rendered.
-<h1 id="setext">This is a sextext header</h1>\r
-<p class="myclass" id="par1">A paragraph with some text.\r
-Line two of the paragraph.</p>\r
-<h2 class="someclass" id="sextext2">This is another</h2>\r
-<p>Test some <em class="inline">inline</em> text.\r
-A <a class="linkkyclass" href="http://example.com" title="A title.">link</a>\r
-And a <strong class="nest">nested <a class="linky2" href="http://example.com" title="Some title">link</a></strong></p>\r
-<h3 id="hash">This is a hash Header</h3>\r
-<p bar="b az" baz="blah blah" foo="foo" title="I wasn't kidding!">And now some random attributes.</p>\r
-<h3 id="hash2">No closing hash header</h3>\r
-<p class="foo bar addme" id="overridden">Now test overrides</p>\r
-<pre><code># A code block which contains attr_list syntax\r
-# This should be ignored.\r
-{: #someid .someclass }\r
-</code></pre>\r
-<h3 id="hash3">No colon for compatability with Headerid ext</h3>\r
-<p id="the_end">Also a codespan: <code class="foo">{: .someclass}</code>.</p>\r
-<h3 _:="{:" id="hash5">Bad Syntax</h3>\r
-<ul>\r
-<li class="item">Item1</li>\r
-<li class="item">Item2<ul>\r
-<li class="subitem">Item2-1</li>\r
-</ul>\r
-</li>\r
-<li class="item"><em class="emph">Item3</em><ul>\r
-<li class="subitem"><em class="emph">Item3-1</em></li>\r
-</ul>\r
-</li>\r
-<li>Item4<ul>\r
-<li>Item4-1</li>\r
-</ul>\r
-</li>\r
-<li>Item5</li>\r
-</ul>\r
-<h1>And ordered lists <em class="inline">too</em></h1>\r
-<ol>\r
-<li class="item">Item1</li>\r
-<li class="item">Item2<ol>\r
-<li class="subitem">Item2-1</li>\r
-</ol>\r
-</li>\r
-<li class="item"><em class="emph">Item3</em><ol>\r
-<li class="subitem"><em class="emph">Item3-1</em></li>\r
-</ol>\r
-</li>\r
-<li>Item4<ol>\r
-<li>Item4-1</li>\r
-</ol>\r
-</li>\r
-<li>Item5</li>\r
-</ol>\r
-<h1 class="block">Definition <em>lists</em></h1>\r
-<dl>\r
-<dt class="term">DT1</dt>\r
-<dt class="term">DT2</dt>\r
-<dd class="def">Some dd</dd>\r
-<dd><em class="inline">dd</em></dd>\r
-<dt><em class="inline">DT3</em></dt>\r
-<dd>Some dd</dd>\r
+<h1 id="setext">This is a sextext header</h1>
+<p class="myclass" id="par1">A paragraph with some text.
+Line two of the paragraph.</p>
+<h2 class="someclass" id="sextext2">This is another</h2>
+<p>Test some <em class="inline">inline</em> text.
+A <a class="linkkyclass" href="http://example.com" title="A title.">link</a>
+And a <strong class="nest">nested <a class="linky2" href="http://example.com" title="Some title">link</a></strong></p>
+<h3 id="hash">This is a hash Header</h3>
+<p bar="b az" baz="blah blah" foo="foo" title="I wasn't kidding!">And now some random attributes.</p>
+<h3 id="hash2">No closing hash header</h3>
+<p class="foo bar addme" id="overridden">Now test overrides</p>
+<pre><code># A code block which contains attr_list syntax
+# This should be ignored.
+{: #someid .someclass }
+</code></pre>
+<h3 id="hash3">No colon for compatability with Headerid ext</h3>
+<p id="the_end">Also a codespan: <code class="foo">{: .someclass}</code>.</p>
+<h3 _:="{:" id="hash5">Bad Syntax</h3>
+<ul>
+<li class="item">Item1</li>
+<li class="item">Item2<ul>
+<li class="subitem">Item2-1</li>
+</ul>
+</li>
+<li class="item"><em class="emph">Item3</em><ul>
+<li class="subitem"><em class="emph">Item3-1</em></li>
+</ul>
+</li>
+<li>Item4<ul>
+<li>Item4-1</li>
+</ul>
+</li>
+<li>Item5</li>
+</ul>
+<h1>And ordered lists <em class="inline">too</em></h1>
+<ol>
+<li class="item">Item1</li>
+<li class="item">Item2<ol>
+<li class="subitem">Item2-1</li>
+</ol>
+</li>
+<li class="item"><em class="emph">Item3</em><ol>
+<li class="subitem"><em class="emph">Item3-1</em></li>
+</ol>
+</li>
+<li>Item4<ol>
+<li>Item4-1</li>
+</ol>
+</li>
+<li>Item5</li>
+</ol>
+<h1 class="block">Definition <em>lists</em></h1>
+<dl>
+<dt class="term">DT1</dt>
+<dt class="term">DT2</dt>
+<dd class="def">Some dd</dd>
+<dd><em class="inline">dd</em></dd>
+<dt><em class="inline">DT3</em></dt>
+<dd>Some dd</dd>
</dl>
\ No newline at end of file
-This is a sextext header {: #setext}\r
-====================================\r
-\r
-A paragraph with some text.\r
-Line two of the paragraph.\r
-{: #par1 .myclass }\r
-\r
-This is another {: #sextext2 .someclass}\r
-----------------------------------------\r
-\r
-Test some _inline_{: .inline} text.\r
-A [link](http://example.com){: .linkkyclass title="A title."}\r
-And a __nested [link][]{: .linky2}__{: .nest}\r
-\r
-[link]: http://example.com "Some title"\r
-\r
-### This is a hash Header ### {: #hash}\r
-\r
-And now some random attributes.\r
-{:foo bar='b az' baz="blah blah" title="I wasn't kidding!" }\r
-\r
-### No closing hash header {: #hash2}\r
-\r
-Now test overrides\r
-{: #overrideme .andme id=overridden class='foo bar' .addme }\r
-\r
- # A code block which contains attr_list syntax\r
- # This should be ignored.\r
- {: #someid .someclass }\r
-\r
-### No colon for compatability with Headerid ext { #hash3 }\r
-\r
-Also a codespan: `{: .someclass}`{: .foo}.\r
-{: #the_end}\r
-\r
-### Bad Syntax { {: #hash5 }\r
-\r
-* Item1\r
- {: .item }\r
-* Item2\r
- {: .item }\r
- * Item2-1\r
- {: .subitem }\r
-* _Item3_{: .emph }\r
- {: .item }\r
- * _Item3-1_{: .emph }\r
- {: .subitem }\r
-* Item4\r
- * Item4-1\r
-* Item5\r
-\r
-# And ordered lists *too*{.inline}\r
-\r
-1. Item1\r
- {: .item }\r
-2. Item2\r
- {: .item }\r
- 1. Item2-1\r
- {: .subitem }\r
-3. _Item3_{: .emph }\r
- {: .item }\r
- 1. _Item3-1_{: .emph }\r
- {: .subitem }\r
-4. Item4\r
- 1. Item4-1\r
-5. Item5\r
-\r
-# Definition *lists* {.block}\r
-\r
-DT1 {.term}\r
-DT2 {.term}\r
-: Some dd\r
- {.def}\r
-: *dd*{.inline}\r
-\r
-*DT3*{.inline}\r
-: Some dd\r
-\r
+This is a sextext header {: #setext}
+====================================
+
+A paragraph with some text.
+Line two of the paragraph.
+{: #par1 .myclass }
+
+This is another {: #sextext2 .someclass}
+----------------------------------------
+
+Test some _inline_{: .inline} text.
+A [link](http://example.com){: .linkkyclass title="A title."}
+And a __nested [link][]{: .linky2}__{: .nest}
+
+[link]: http://example.com "Some title"
+
+### This is a hash Header ### {: #hash}
+
+And now some random attributes.
+{:foo bar='b az' baz="blah blah" title="I wasn't kidding!" }
+
+### No closing hash header {: #hash2}
+
+Now test overrides
+{: #overrideme .andme id=overridden class='foo bar' .addme }
+
+ # A code block which contains attr_list syntax
+ # This should be ignored.
+ {: #someid .someclass }
+
+### No colon for compatability with Headerid ext { #hash3 }
+
+Also a codespan: `{: .someclass}`{: .foo}.
+{: #the_end}
+
+### Bad Syntax { {: #hash5 }
+
+* Item1
+ {: .item }
+* Item2
+ {: .item }
+ * Item2-1
+ {: .subitem }
+* _Item3_{: .emph }
+ {: .item }
+ * _Item3-1_{: .emph }
+ {: .subitem }
+* Item4
+ * Item4-1
+* Item5
+
+# And ordered lists *too*{.inline}
+
+1. Item1
+ {: .item }
+2. Item2
+ {: .item }
+ 1. Item2-1
+ {: .subitem }
+3. _Item3_{: .emph }
+ {: .item }
+ 1. _Item3-1_{: .emph }
+ {: .subitem }
+4. Item4
+ 1. Item4-1
+5. Item5
+
+# Definition *lists* {.block}
+
+DT1 {.term}
+DT2 {.term}
+: Some dd
+ {.def}
+: *dd*{.inline}
+
+*DT3*{.inline}
+: Some dd
+
-<p>Some text</p>\r
-<table class="codehilitetable"><tr><td class="linenos"><pre>1\r
-2\r
-3\r
-4\r
-5\r
-6</pre></td><td class="code"><div class="codehilite"><pre><span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="p">:</span>\r
- <span class="bp">self</span><span class="o">.</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">pattern</span>\r
- <span class="bp">self</span><span class="o">.</span><span class="n">compiled_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">"^(.*)</span><span class="si">%s</span><span class="s">(.*)$"</span> <span class="o">%</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span><span class="p">)</span>\r
-\r
-<span class="k">def</span> <span class="nf">getCompiledRegExp</span> <span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="p">:</span>\r
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">compiled_re</span>\r
-</pre></div>\r
-</td></tr></table>\r
-\r
+<p>Some text</p>
+<table class="codehilitetable"><tr><td class="linenos"><pre>1
+2
+3
+4
+5
+6</pre></td><td class="code"><div class="codehilite"><pre><span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">pattern</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">compiled_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">"^(.*)</span><span class="si">%s</span><span class="s">(.*)$"</span> <span class="o">%</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">getCompiledRegExp</span> <span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">compiled_re</span>
+</pre></div>
+</td></tr></table>
+
<p>More text</p>
\ No newline at end of file
-\r
-Some text\r
-\r
- #!python\r
- def __init__ (self, pattern) :\r
- self.pattern = pattern\r
- self.compiled_re = re.compile("^(.*)%s(.*)$" % pattern, re.DOTALL)\r
-\r
- def getCompiledRegExp (self) :\r
- return self.compiled_re\r
-\r
+
+Some text
+
+ #!python
+ def __init__ (self, pattern) :
+ self.pattern = pattern
+ self.compiled_re = re.compile("^(.*)%s(.*)$" % pattern, re.DOTALL)
+
+ def getCompiledRegExp (self) :
+ return self.compiled_re
+
More text
\ No newline at end of file
-<p>An <abbr title="Abbreviation">ABBR</abbr>: "<abbr title="Reference">REF</abbr>".\r
-ref and REFERENCE should be ignored.</p>\r
-<p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification\r
+<p>An <abbr title="Abbreviation">ABBR</abbr>: "<abbr title="Reference">REF</abbr>".
+ref and REFERENCE should be ignored.</p>
+<p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification
is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p>
\ No newline at end of file
-An ABBR: "REF".\r
-ref and REFERENCE should be ignored.\r
-\r
-*[REF]: Reference\r
-*[ABBR]: This gets overriden by the next one.\r
-*[ABBR]: Abbreviation\r
-\r
-The HTML specification\r
-is maintained by the W3C.\r
-\r
-*[HTML]: Hyper Text Markup Language\r
-*[W3C]: World Wide Web Consortium\r
-\r
+An ABBR: "REF".
+ref and REFERENCE should be ignored.
+
+*[REF]: Reference
+*[ABBR]: This gets overriden by the next one.
+*[ABBR]: Abbreviation
+
+The HTML specification
+is maintained by the W3C.
+
+*[HTML]: Hyper Text Markup Language
+*[W3C]: World Wide Web Consortium
+
-<p>: a paragraph that starts with a colon</p>\r
-<ul>\r
-<li>A List item</li>\r
-<li>\r
-<dl>\r
-<dt>A def term</dt>\r
-<dd>A def item</dd>\r
-<dd>a second</dd>\r
-</dl>\r
-</li>\r
-<li>\r
-<dl>\r
-<dt>Another def term</dt>\r
-<dd>\r
-<p>a loose item</p>\r
-</dd>\r
-<dd>\r
-<p>a second</p>\r
-</dd>\r
-</dl>\r
-</li>\r
-<li>\r
-<p>: a list item that starts with a colon</p>\r
-</li>\r
+<p>: a paragraph that starts with a colon</p>
+<ul>
+<li>A List item</li>
+<li>
+<dl>
+<dt>A def term</dt>
+<dd>A def item</dd>
+<dd>a second</dd>
+</dl>
+</li>
+<li>
+<dl>
+<dt>Another def term</dt>
+<dd>
+<p>a loose item</p>
+</dd>
+<dd>
+<p>a second</p>
+</dd>
+</dl>
+</li>
+<li>
+<p>: a list item that starts with a colon</p>
+</li>
</ul>
\ No newline at end of file
-: a paragraph that starts with a colon\r
-\r
-* A List item\r
-* \r
- A def term\r
- : A def item\r
- : a second\r
-\r
-* Another def term\r
-\r
- : a loose item\r
- \r
- : a second\r
-\r
-* : a list item that starts with a colon\r
+: a paragraph that starts with a colon
+
+* A List item
+*
+ A def term
+ : A def item
+ : a second
+
+* Another def term
+
+ : a loose item
+
+ : a second
+
+* : a list item that starts with a colon
--- /dev/null
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>A Footnote. <a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>
+</li>
+</ol>
+</div>
+<p>Some text with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup>.</p>
\ No newline at end of file
--- /dev/null
+~~~placemarker~~~
+
+Some text with a footnote[^1].
+
+[^1]: A Footnote.
-<p>This is the body with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> or two<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup> or more<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup> <sup id="fnref:4"><a class="footnote-ref" href="#fn:4" rel="footnote">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5" rel="footnote">5</a></sup>.</p>\r
-<p>Also a reference that does not exist[^6].</p>\r
-<div class="footnote">\r
-<hr />\r
-<ol>\r
-<li id="fn:1">\r
-<p>Footnote that ends with a list:</p>\r
-<ul>\r
-<li>item 1</li>\r
-<li>item 2</li>\r
-</ul>\r
-<p><a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:2">\r
-<blockquote>\r
-<p>This footnote is a blockquote.</p>\r
-</blockquote>\r
-<p><a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:3">\r
-<p>A simple oneliner. <a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:4">\r
-<p>A footnote with multiple paragraphs.</p>\r
-<p>Paragraph two. <a class="footnote-backref" href="#fnref:4" rev="footnote" title="Jump back to footnote 4 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:5">\r
-<p>First line of first paragraph.\r
-Second line of first paragraph is not intended.\r
-Nor is third... <a class="footnote-backref" href="#fnref:5" rev="footnote" title="Jump back to footnote 5 in the text">↩</a></p>\r
-</li>\r
-</ol>\r
+<p>This is the body with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> or two<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup> or more<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup> <sup id="fnref:4"><a class="footnote-ref" href="#fn:4" rel="footnote">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5" rel="footnote">5</a></sup>.</p>
+<p>Also a reference that does not exist[^6].</p>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>Footnote that ends with a list:</p>
+<ul>
+<li>item 1</li>
+<li>item 2</li>
+</ul>
+<p><a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>
+</li>
+<li id="fn:2">
+<blockquote>
+<p>This footnote is a blockquote.</p>
+</blockquote>
+<p><a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">↩</a></p>
+</li>
+<li id="fn:3">
+<p>A simple oneliner. <a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">↩</a></p>
+</li>
+<li id="fn:4">
+<p>A footnote with multiple paragraphs.</p>
+<p>Paragraph two. <a class="footnote-backref" href="#fnref:4" rev="footnote" title="Jump back to footnote 4 in the text">↩</a></p>
+</li>
+<li id="fn:5">
+<p>First line of first paragraph.
+Second line of first paragraph is not intended.
+Nor is third... <a class="footnote-backref" href="#fnref:5" rev="footnote" title="Jump back to footnote 5 in the text">↩</a></p>
+</li>
+</ol>
</div>
\ No newline at end of file
-This is the body with a footnote[^1] or two[^2] or more[^3] [^4] [^5].\r
-\r
-Also a reference that does not exist[^6].\r
-\r
-[^1]: Footnote that ends with a list:\r
-\r
- * item 1\r
- * item 2\r
-\r
-[^2]: > This footnote is a blockquote.\r
-\r
-[^3]: A simple oneliner.\r
-\r
-[^4]: A footnote with multiple paragraphs.\r
-\r
- Paragraph two.\r
-\r
-[^5]: First line of first paragraph.\r
-Second line of first paragraph is not intended.\r
-Nor is third...\r
+This is the body with a footnote[^1] or two[^2] or more[^3] [^4] [^5].
+
+Also a reference that does not exist[^6].
+
+[^1]: Footnote that ends with a list:
+
+ * item 1
+ * item 2
+
+[^2]: > This footnote is a blockquote.
+
+[^3]: A simple oneliner.
+
+[^4]: A footnote with multiple paragraphs.
+
+ Paragraph two.
+
+[^5]: First line of first paragraph.
+Second line of first paragraph is not intended.
+Nor is third...
-<p>Something<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>\r
-<p>Something<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>\r
-<p>Something<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup></p>\r
-<p>Something<sup id="fnref:4"><a class="footnote-ref" href="#fn:4" rel="footnote">4</a></sup></p>\r
-<p>Something<sup id="fnref:5"><a class="footnote-ref" href="#fn:5" rel="footnote">5</a></sup></p>\r
-<p>Something<sup id="fnref:6"><a class="footnote-ref" href="#fn:6" rel="footnote">6</a></sup></p>\r
-<p>Something<sup id="fnref:7"><a class="footnote-ref" href="#fn:7" rel="footnote">7</a></sup></p>\r
-<p>Something<sup id="fnref:8"><a class="footnote-ref" href="#fn:8" rel="footnote">8</a></sup></p>\r
-<p>Something<sup id="fnref:9"><a class="footnote-ref" href="#fn:9" rel="footnote">9</a></sup></p>\r
-<p>Something<sup id="fnref:10"><a class="footnote-ref" href="#fn:10" rel="footnote">10</a></sup></p>\r
-<p>Something<sup id="fnref:11"><a class="footnote-ref" href="#fn:11" rel="footnote">11</a></sup></p>\r
-<p>Something<sup id="fnref:12"><a class="footnote-ref" href="#fn:12" rel="footnote">12</a></sup></p>\r
-<p>Something<sup id="fnref:13"><a class="footnote-ref" href="#fn:13" rel="footnote">13</a></sup></p>\r
-<p>Something<sup id="fnref:14"><a class="footnote-ref" href="#fn:14" rel="footnote">14</a></sup></p>\r
-<p>Something<sup id="fnref:15"><a class="footnote-ref" href="#fn:15" rel="footnote">15</a></sup></p>\r
-<p>Something<sup id="fnref:16"><a class="footnote-ref" href="#fn:16" rel="footnote">16</a></sup></p>\r
-<p>Something<sup id="fnref:17"><a class="footnote-ref" href="#fn:17" rel="footnote">17</a></sup></p>\r
-<p>Something<sup id="fnref:18"><a class="footnote-ref" href="#fn:18" rel="footnote">18</a></sup></p>\r
-<p>Something<sup id="fnref:19"><a class="footnote-ref" href="#fn:19" rel="footnote">19</a></sup></p>\r
-<p>Something<sup id="fnref:20"><a class="footnote-ref" href="#fn:20" rel="footnote">20</a></sup></p>\r
-<p>Something<sup id="fnref:21"><a class="footnote-ref" href="#fn:21" rel="footnote">21</a></sup></p>\r
-<p>Something<sup id="fnref:22"><a class="footnote-ref" href="#fn:22" rel="footnote">22</a></sup></p>\r
-<p>Something<sup id="fnref:23"><a class="footnote-ref" href="#fn:23" rel="footnote">23</a></sup></p>\r
-<p>Something<sup id="fnref:24"><a class="footnote-ref" href="#fn:24" rel="footnote">24</a></sup></p>\r
-<p>Something<sup id="fnref:25"><a class="footnote-ref" href="#fn:25" rel="footnote">25</a></sup></p>\r
-<p>Something<sup id="fnref:26"><a class="footnote-ref" href="#fn:26" rel="footnote">26</a></sup></p>\r
-<p>Something<sup id="fnref:27"><a class="footnote-ref" href="#fn:27" rel="footnote">27</a></sup></p>\r
-<p>Something<sup id="fnref:28"><a class="footnote-ref" href="#fn:28" rel="footnote">28</a></sup></p>\r
-<p>Something<sup id="fnref:29"><a class="footnote-ref" href="#fn:29" rel="footnote">29</a></sup></p>\r
-<p>Something<sup id="fnref:30"><a class="footnote-ref" href="#fn:30" rel="footnote">30</a></sup></p>\r
-<p>Something<sup id="fnref:31"><a class="footnote-ref" href="#fn:31" rel="footnote">31</a></sup></p>\r
-<p>Something<sup id="fnref:32"><a class="footnote-ref" href="#fn:32" rel="footnote">32</a></sup></p>\r
-<p>Something<sup id="fnref:33"><a class="footnote-ref" href="#fn:33" rel="footnote">33</a></sup></p>\r
-<p>Something<sup id="fnref:34"><a class="footnote-ref" href="#fn:34" rel="footnote">34</a></sup></p>\r
-<p>Something<sup id="fnref:35"><a class="footnote-ref" href="#fn:35" rel="footnote">35</a></sup></p>\r
-<p>Something<sup id="fnref:36"><a class="footnote-ref" href="#fn:36" rel="footnote">36</a></sup></p>\r
-<p>Something<sup id="fnref:37"><a class="footnote-ref" href="#fn:37" rel="footnote">37</a></sup></p>\r
-<p>Something<sup id="fnref:38"><a class="footnote-ref" href="#fn:38" rel="footnote">38</a></sup></p>\r
-<p>Something<sup id="fnref:39"><a class="footnote-ref" href="#fn:39" rel="footnote">39</a></sup></p>\r
-<p>Something<sup id="fnref:40"><a class="footnote-ref" href="#fn:40" rel="footnote">40</a></sup></p>\r
-<p>Something<sup id="fnref:41"><a class="footnote-ref" href="#fn:41" rel="footnote">41</a></sup></p>\r
-<p>Something<sup id="fnref:42"><a class="footnote-ref" href="#fn:42" rel="footnote">42</a></sup></p>\r
-<p>Something<sup id="fnref:43"><a class="footnote-ref" href="#fn:43" rel="footnote">43</a></sup></p>\r
-<p>Something<sup id="fnref:44"><a class="footnote-ref" href="#fn:44" rel="footnote">44</a></sup></p>\r
-<p>Something<sup id="fnref:45"><a class="footnote-ref" href="#fn:45" rel="footnote">45</a></sup></p>\r
-<p>Something<sup id="fnref:46"><a class="footnote-ref" href="#fn:46" rel="footnote">46</a></sup></p>\r
-<p>Something<sup id="fnref:47"><a class="footnote-ref" href="#fn:47" rel="footnote">47</a></sup></p>\r
-<p>Something<sup id="fnref:48"><a class="footnote-ref" href="#fn:48" rel="footnote">48</a></sup></p>\r
-<p>Something<sup id="fnref:49"><a class="footnote-ref" href="#fn:49" rel="footnote">49</a></sup></p>\r
-<p>Something<sup id="fnref:50"><a class="footnote-ref" href="#fn:50" rel="footnote">50</a></sup></p>\r
-<p>Something<sup id="fnref:51"><a class="footnote-ref" href="#fn:51" rel="footnote">51</a></sup></p>\r
-<p>Something<sup id="fnref:52"><a class="footnote-ref" href="#fn:52" rel="footnote">52</a></sup></p>\r
-<p>Something<sup id="fnref:53"><a class="footnote-ref" href="#fn:53" rel="footnote">53</a></sup></p>\r
-<p>Something<sup id="fnref:54"><a class="footnote-ref" href="#fn:54" rel="footnote">54</a></sup></p>\r
-<p>Something<sup id="fnref:55"><a class="footnote-ref" href="#fn:55" rel="footnote">55</a></sup></p>\r
-<p>Something<sup id="fnref:56"><a class="footnote-ref" href="#fn:56" rel="footnote">56</a></sup></p>\r
-<p>Something<sup id="fnref:57"><a class="footnote-ref" href="#fn:57" rel="footnote">57</a></sup></p>\r
-<p>Something<sup id="fnref:58"><a class="footnote-ref" href="#fn:58" rel="footnote">58</a></sup></p>\r
-<p>Something<sup id="fnref:59"><a class="footnote-ref" href="#fn:59" rel="footnote">59</a></sup></p>\r
-<p>Something<sup id="fnref:60"><a class="footnote-ref" href="#fn:60" rel="footnote">60</a></sup></p>\r
-<p>Something<sup id="fnref:61"><a class="footnote-ref" href="#fn:61" rel="footnote">61</a></sup></p>\r
-<p>Something<sup id="fnref:62"><a class="footnote-ref" href="#fn:62" rel="footnote">62</a></sup></p>\r
-<p>Something<sup id="fnref:63"><a class="footnote-ref" href="#fn:63" rel="footnote">63</a></sup></p>\r
-<p>Something<sup id="fnref:64"><a class="footnote-ref" href="#fn:64" rel="footnote">64</a></sup></p>\r
-<p>Something<sup id="fnref:65"><a class="footnote-ref" href="#fn:65" rel="footnote">65</a></sup></p>\r
-<p>Something<sup id="fnref:66"><a class="footnote-ref" href="#fn:66" rel="footnote">66</a></sup></p>\r
-<p>Something<sup id="fnref:67"><a class="footnote-ref" href="#fn:67" rel="footnote">67</a></sup></p>\r
-<p>Something<sup id="fnref:68"><a class="footnote-ref" href="#fn:68" rel="footnote">68</a></sup></p>\r
-<p>Something<sup id="fnref:69"><a class="footnote-ref" href="#fn:69" rel="footnote">69</a></sup></p>\r
-<p>Something<sup id="fnref:70"><a class="footnote-ref" href="#fn:70" rel="footnote">70</a></sup></p>\r
-<p>Something<sup id="fnref:71"><a class="footnote-ref" href="#fn:71" rel="footnote">71</a></sup></p>\r
-<p>Something<sup id="fnref:72"><a class="footnote-ref" href="#fn:72" rel="footnote">72</a></sup></p>\r
-<p>Something<sup id="fnref:73"><a class="footnote-ref" href="#fn:73" rel="footnote">73</a></sup></p>\r
-<p>Something<sup id="fnref:74"><a class="footnote-ref" href="#fn:74" rel="footnote">74</a></sup></p>\r
-<p>Something<sup id="fnref:75"><a class="footnote-ref" href="#fn:75" rel="footnote">75</a></sup></p>\r
-<p>Something<sup id="fnref:76"><a class="footnote-ref" href="#fn:76" rel="footnote">76</a></sup></p>\r
-<p>Something<sup id="fnref:77"><a class="footnote-ref" href="#fn:77" rel="footnote">77</a></sup></p>\r
-<p>Something<sup id="fnref:78"><a class="footnote-ref" href="#fn:78" rel="footnote">78</a></sup></p>\r
-<p>Something<sup id="fnref:79"><a class="footnote-ref" href="#fn:79" rel="footnote">79</a></sup></p>\r
-<p>Something<sup id="fnref:80"><a class="footnote-ref" href="#fn:80" rel="footnote">80</a></sup></p>\r
-<p>Something<sup id="fnref:81"><a class="footnote-ref" href="#fn:81" rel="footnote">81</a></sup></p>\r
-<p>Something<sup id="fnref:82"><a class="footnote-ref" href="#fn:82" rel="footnote">82</a></sup></p>\r
-<p>Something<sup id="fnref:83"><a class="footnote-ref" href="#fn:83" rel="footnote">83</a></sup></p>\r
-<p>Something<sup id="fnref:84"><a class="footnote-ref" href="#fn:84" rel="footnote">84</a></sup></p>\r
-<p>Something<sup id="fnref:85"><a class="footnote-ref" href="#fn:85" rel="footnote">85</a></sup></p>\r
-<p>Something<sup id="fnref:86"><a class="footnote-ref" href="#fn:86" rel="footnote">86</a></sup></p>\r
-<p>Something<sup id="fnref:87"><a class="footnote-ref" href="#fn:87" rel="footnote">87</a></sup></p>\r
-<p>Something<sup id="fnref:88"><a class="footnote-ref" href="#fn:88" rel="footnote">88</a></sup></p>\r
-<p>Something<sup id="fnref:89"><a class="footnote-ref" href="#fn:89" rel="footnote">89</a></sup></p>\r
-<p>Something<sup id="fnref:90"><a class="footnote-ref" href="#fn:90" rel="footnote">90</a></sup></p>\r
-<p>Something<sup id="fnref:91"><a class="footnote-ref" href="#fn:91" rel="footnote">91</a></sup></p>\r
-<p>Something<sup id="fnref:92"><a class="footnote-ref" href="#fn:92" rel="footnote">92</a></sup></p>\r
-<p>Something<sup id="fnref:93"><a class="footnote-ref" href="#fn:93" rel="footnote">93</a></sup></p>\r
-<p>Something<sup id="fnref:94"><a class="footnote-ref" href="#fn:94" rel="footnote">94</a></sup></p>\r
-<p>Something<sup id="fnref:95"><a class="footnote-ref" href="#fn:95" rel="footnote">95</a></sup></p>\r
-<p>Something<sup id="fnref:96"><a class="footnote-ref" href="#fn:96" rel="footnote">96</a></sup></p>\r
-<p>Something<sup id="fnref:97"><a class="footnote-ref" href="#fn:97" rel="footnote">97</a></sup></p>\r
-<p>Something<sup id="fnref:98"><a class="footnote-ref" href="#fn:98" rel="footnote">98</a></sup></p>\r
-<p>Something<sup id="fnref:99"><a class="footnote-ref" href="#fn:99" rel="footnote">99</a></sup></p>\r
-<p>Something<sup id="fnref:100"><a class="footnote-ref" href="#fn:100" rel="footnote">100</a></sup></p>\r
-<p>Something<sup id="fnref:101"><a class="footnote-ref" href="#fn:101" rel="footnote">101</a></sup></p>\r
-<p>Something<sup id="fnref:102"><a class="footnote-ref" href="#fn:102" rel="footnote">102</a></sup></p>\r
-<p>Something<sup id="fnref:103"><a class="footnote-ref" href="#fn:103" rel="footnote">103</a></sup></p>\r
-<p>Something<sup id="fnref:104"><a class="footnote-ref" href="#fn:104" rel="footnote">104</a></sup></p>\r
-<p>Something<sup id="fnref:105"><a class="footnote-ref" href="#fn:105" rel="footnote">105</a></sup></p>\r
-<p>Something<sup id="fnref:106"><a class="footnote-ref" href="#fn:106" rel="footnote">106</a></sup></p>\r
-<p>Something<sup id="fnref:107"><a class="footnote-ref" href="#fn:107" rel="footnote">107</a></sup></p>\r
-<p>Something<sup id="fnref:108"><a class="footnote-ref" href="#fn:108" rel="footnote">108</a></sup></p>\r
-<p>Something<sup id="fnref:109"><a class="footnote-ref" href="#fn:109" rel="footnote">109</a></sup></p>\r
-<p>Something<sup id="fnref:110"><a class="footnote-ref" href="#fn:110" rel="footnote">110</a></sup></p>\r
-<p>Something<sup id="fnref:111"><a class="footnote-ref" href="#fn:111" rel="footnote">111</a></sup></p>\r
-<p>Something<sup id="fnref:112"><a class="footnote-ref" href="#fn:112" rel="footnote">112</a></sup></p>\r
-<p>Something<sup id="fnref:113"><a class="footnote-ref" href="#fn:113" rel="footnote">113</a></sup></p>\r
-<p>Something<sup id="fnref:114"><a class="footnote-ref" href="#fn:114" rel="footnote">114</a></sup></p>\r
-<p>Something<sup id="fnref:115"><a class="footnote-ref" href="#fn:115" rel="footnote">115</a></sup></p>\r
-<p>Something<sup id="fnref:116"><a class="footnote-ref" href="#fn:116" rel="footnote">116</a></sup></p>\r
-<p>Something<sup id="fnref:117"><a class="footnote-ref" href="#fn:117" rel="footnote">117</a></sup></p>\r
-<p>Something<sup id="fnref:118"><a class="footnote-ref" href="#fn:118" rel="footnote">118</a></sup></p>\r
-<p>Something<sup id="fnref:119"><a class="footnote-ref" href="#fn:119" rel="footnote">119</a></sup></p>\r
-<p>Something<sup id="fnref:120"><a class="footnote-ref" href="#fn:120" rel="footnote">120</a></sup></p>\r
-<p>Something<sup id="fnref:121"><a class="footnote-ref" href="#fn:121" rel="footnote">121</a></sup></p>\r
-<p>Something<sup id="fnref:122"><a class="footnote-ref" href="#fn:122" rel="footnote">122</a></sup></p>\r
-<p>Something<sup id="fnref:123"><a class="footnote-ref" href="#fn:123" rel="footnote">123</a></sup></p>\r
-<p>Something<sup id="fnref:124"><a class="footnote-ref" href="#fn:124" rel="footnote">124</a></sup></p>\r
-<p>Something<sup id="fnref:125"><a class="footnote-ref" href="#fn:125" rel="footnote">125</a></sup></p>\r
-<p>Something<sup id="fnref:126"><a class="footnote-ref" href="#fn:126" rel="footnote">126</a></sup></p>\r
-<p>Something<sup id="fnref:127"><a class="footnote-ref" href="#fn:127" rel="footnote">127</a></sup></p>\r
-<p>Something<sup id="fnref:128"><a class="footnote-ref" href="#fn:128" rel="footnote">128</a></sup></p>\r
-<p>Something<sup id="fnref:129"><a class="footnote-ref" href="#fn:129" rel="footnote">129</a></sup></p>\r
-<p>Something<sup id="fnref:130"><a class="footnote-ref" href="#fn:130" rel="footnote">130</a></sup></p>\r
-<p>Something<sup id="fnref:131"><a class="footnote-ref" href="#fn:131" rel="footnote">131</a></sup></p>\r
-<p>Something<sup id="fnref:132"><a class="footnote-ref" href="#fn:132" rel="footnote">132</a></sup></p>\r
-<p>Something<sup id="fnref:133"><a class="footnote-ref" href="#fn:133" rel="footnote">133</a></sup></p>\r
-<p>Something<sup id="fnref:134"><a class="footnote-ref" href="#fn:134" rel="footnote">134</a></sup></p>\r
-<p>Something<sup id="fnref:135"><a class="footnote-ref" href="#fn:135" rel="footnote">135</a></sup></p>\r
-<p>Something<sup id="fnref:136"><a class="footnote-ref" href="#fn:136" rel="footnote">136</a></sup></p>\r
-<p>Something<sup id="fnref:137"><a class="footnote-ref" href="#fn:137" rel="footnote">137</a></sup></p>\r
-<p>Something<sup id="fnref:138"><a class="footnote-ref" href="#fn:138" rel="footnote">138</a></sup></p>\r
-<p>Something<sup id="fnref:139"><a class="footnote-ref" href="#fn:139" rel="footnote">139</a></sup></p>\r
-<p>Something<sup id="fnref:140"><a class="footnote-ref" href="#fn:140" rel="footnote">140</a></sup></p>\r
-<p>Something<sup id="fnref:141"><a class="footnote-ref" href="#fn:141" rel="footnote">141</a></sup></p>\r
-<p>Something<sup id="fnref:142"><a class="footnote-ref" href="#fn:142" rel="footnote">142</a></sup></p>\r
-<p>Something<sup id="fnref:143"><a class="footnote-ref" href="#fn:143" rel="footnote">143</a></sup></p>\r
-<p>Something<sup id="fnref:144"><a class="footnote-ref" href="#fn:144" rel="footnote">144</a></sup></p>\r
-<p>Something<sup id="fnref:145"><a class="footnote-ref" href="#fn:145" rel="footnote">145</a></sup></p>\r
-<p>Something<sup id="fnref:146"><a class="footnote-ref" href="#fn:146" rel="footnote">146</a></sup></p>\r
-<p>Something<sup id="fnref:147"><a class="footnote-ref" href="#fn:147" rel="footnote">147</a></sup></p>\r
-<p>Something<sup id="fnref:148"><a class="footnote-ref" href="#fn:148" rel="footnote">148</a></sup></p>\r
-<p>Something<sup id="fnref:149"><a class="footnote-ref" href="#fn:149" rel="footnote">149</a></sup></p>\r
-<p>Something<sup id="fnref:150"><a class="footnote-ref" href="#fn:150" rel="footnote">150</a></sup></p>\r
-<p>Something<sup id="fnref:151"><a class="footnote-ref" href="#fn:151" rel="footnote">151</a></sup></p>\r
-<p>Something<sup id="fnref:152"><a class="footnote-ref" href="#fn:152" rel="footnote">152</a></sup></p>\r
-<p>Something<sup id="fnref:153"><a class="footnote-ref" href="#fn:153" rel="footnote">153</a></sup></p>\r
-<p>Something<sup id="fnref:154"><a class="footnote-ref" href="#fn:154" rel="footnote">154</a></sup></p>\r
-<p>Something<sup id="fnref:155"><a class="footnote-ref" href="#fn:155" rel="footnote">155</a></sup></p>\r
-<p>Something<sup id="fnref:156"><a class="footnote-ref" href="#fn:156" rel="footnote">156</a></sup></p>\r
-<p>Something<sup id="fnref:157"><a class="footnote-ref" href="#fn:157" rel="footnote">157</a></sup></p>\r
-<p>Something<sup id="fnref:158"><a class="footnote-ref" href="#fn:158" rel="footnote">158</a></sup></p>\r
-<p>Something<sup id="fnref:159"><a class="footnote-ref" href="#fn:159" rel="footnote">159</a></sup></p>\r
-<p>Something<sup id="fnref:160"><a class="footnote-ref" href="#fn:160" rel="footnote">160</a></sup></p>\r
-<p>Something<sup id="fnref:161"><a class="footnote-ref" href="#fn:161" rel="footnote">161</a></sup></p>\r
-<p>Something<sup id="fnref:162"><a class="footnote-ref" href="#fn:162" rel="footnote">162</a></sup></p>\r
-<p>Something<sup id="fnref:163"><a class="footnote-ref" href="#fn:163" rel="footnote">163</a></sup></p>\r
-<p>Something<sup id="fnref:164"><a class="footnote-ref" href="#fn:164" rel="footnote">164</a></sup></p>\r
-<p>Something<sup id="fnref:165"><a class="footnote-ref" href="#fn:165" rel="footnote">165</a></sup></p>\r
-<p>Something<sup id="fnref:166"><a class="footnote-ref" href="#fn:166" rel="footnote">166</a></sup></p>\r
-<p>Something<sup id="fnref:167"><a class="footnote-ref" href="#fn:167" rel="footnote">167</a></sup></p>\r
-<p>Something<sup id="fnref:168"><a class="footnote-ref" href="#fn:168" rel="footnote">168</a></sup></p>\r
-<p>Something<sup id="fnref:169"><a class="footnote-ref" href="#fn:169" rel="footnote">169</a></sup></p>\r
-<p>Something<sup id="fnref:170"><a class="footnote-ref" href="#fn:170" rel="footnote">170</a></sup></p>\r
-<p>Something<sup id="fnref:171"><a class="footnote-ref" href="#fn:171" rel="footnote">171</a></sup></p>\r
-<p>Something<sup id="fnref:172"><a class="footnote-ref" href="#fn:172" rel="footnote">172</a></sup></p>\r
-<p>Something<sup id="fnref:173"><a class="footnote-ref" href="#fn:173" rel="footnote">173</a></sup></p>\r
-<p>Something<sup id="fnref:174"><a class="footnote-ref" href="#fn:174" rel="footnote">174</a></sup></p>\r
-<p>Something<sup id="fnref:175"><a class="footnote-ref" href="#fn:175" rel="footnote">175</a></sup></p>\r
-<p>Something<sup id="fnref:176"><a class="footnote-ref" href="#fn:176" rel="footnote">176</a></sup></p>\r
-<p>Something<sup id="fnref:177"><a class="footnote-ref" href="#fn:177" rel="footnote">177</a></sup></p>\r
-<p>Something<sup id="fnref:178"><a class="footnote-ref" href="#fn:178" rel="footnote">178</a></sup></p>\r
-<p>Something<sup id="fnref:179"><a class="footnote-ref" href="#fn:179" rel="footnote">179</a></sup></p>\r
-<p>Something<sup id="fnref:180"><a class="footnote-ref" href="#fn:180" rel="footnote">180</a></sup></p>\r
-<p>Something<sup id="fnref:181"><a class="footnote-ref" href="#fn:181" rel="footnote">181</a></sup></p>\r
-<p>Something<sup id="fnref:182"><a class="footnote-ref" href="#fn:182" rel="footnote">182</a></sup></p>\r
-<p>Something<sup id="fnref:183"><a class="footnote-ref" href="#fn:183" rel="footnote">183</a></sup></p>\r
-<p>Something<sup id="fnref:184"><a class="footnote-ref" href="#fn:184" rel="footnote">184</a></sup></p>\r
-<p>Something<sup id="fnref:185"><a class="footnote-ref" href="#fn:185" rel="footnote">185</a></sup></p>\r
-<p>Something<sup id="fnref:186"><a class="footnote-ref" href="#fn:186" rel="footnote">186</a></sup></p>\r
-<p>Something<sup id="fnref:187"><a class="footnote-ref" href="#fn:187" rel="footnote">187</a></sup></p>\r
-<p>Something<sup id="fnref:188"><a class="footnote-ref" href="#fn:188" rel="footnote">188</a></sup></p>\r
-<p>Something<sup id="fnref:189"><a class="footnote-ref" href="#fn:189" rel="footnote">189</a></sup></p>\r
-<p>Something<sup id="fnref:190"><a class="footnote-ref" href="#fn:190" rel="footnote">190</a></sup></p>\r
-<p>Something<sup id="fnref:191"><a class="footnote-ref" href="#fn:191" rel="footnote">191</a></sup></p>\r
-<p>Something<sup id="fnref:192"><a class="footnote-ref" href="#fn:192" rel="footnote">192</a></sup></p>\r
-<p>Something<sup id="fnref:193"><a class="footnote-ref" href="#fn:193" rel="footnote">193</a></sup></p>\r
-<p>Something<sup id="fnref:194"><a class="footnote-ref" href="#fn:194" rel="footnote">194</a></sup></p>\r
-<p>Something<sup id="fnref:195"><a class="footnote-ref" href="#fn:195" rel="footnote">195</a></sup></p>\r
-<p>Something<sup id="fnref:196"><a class="footnote-ref" href="#fn:196" rel="footnote">196</a></sup></p>\r
-<p>Something<sup id="fnref:197"><a class="footnote-ref" href="#fn:197" rel="footnote">197</a></sup></p>\r
-<p>Something<sup id="fnref:198"><a class="footnote-ref" href="#fn:198" rel="footnote">198</a></sup></p>\r
-<p>Something<sup id="fnref:199"><a class="footnote-ref" href="#fn:199" rel="footnote">199</a></sup></p>\r
-<p>Something<sup id="fnref:200"><a class="footnote-ref" href="#fn:200" rel="footnote">200</a></sup></p>\r
-<p>Something<sup id="fnref:201"><a class="footnote-ref" href="#fn:201" rel="footnote">201</a></sup></p>\r
-<p>Something<sup id="fnref:202"><a class="footnote-ref" href="#fn:202" rel="footnote">202</a></sup></p>\r
-<p>Something<sup id="fnref:203"><a class="footnote-ref" href="#fn:203" rel="footnote">203</a></sup></p>\r
-<p>Something<sup id="fnref:204"><a class="footnote-ref" href="#fn:204" rel="footnote">204</a></sup></p>\r
-<p>Something<sup id="fnref:205"><a class="footnote-ref" href="#fn:205" rel="footnote">205</a></sup></p>\r
-<p>Something<sup id="fnref:206"><a class="footnote-ref" href="#fn:206" rel="footnote">206</a></sup></p>\r
-<p>Something<sup id="fnref:207"><a class="footnote-ref" href="#fn:207" rel="footnote">207</a></sup></p>\r
-<p>Something<sup id="fnref:208"><a class="footnote-ref" href="#fn:208" rel="footnote">208</a></sup></p>\r
-<p>Something<sup id="fnref:209"><a class="footnote-ref" href="#fn:209" rel="footnote">209</a></sup></p>\r
-<p>Something<sup id="fnref:210"><a class="footnote-ref" href="#fn:210" rel="footnote">210</a></sup></p>\r
-<p>Something<sup id="fnref:211"><a class="footnote-ref" href="#fn:211" rel="footnote">211</a></sup></p>\r
-<p>Something<sup id="fnref:212"><a class="footnote-ref" href="#fn:212" rel="footnote">212</a></sup></p>\r
-<p>Something<sup id="fnref:213"><a class="footnote-ref" href="#fn:213" rel="footnote">213</a></sup></p>\r
-<p>Something<sup id="fnref:214"><a class="footnote-ref" href="#fn:214" rel="footnote">214</a></sup></p>\r
-<p>Something<sup id="fnref:215"><a class="footnote-ref" href="#fn:215" rel="footnote">215</a></sup></p>\r
-<p>Something<sup id="fnref:216"><a class="footnote-ref" href="#fn:216" rel="footnote">216</a></sup></p>\r
-<p>Something<sup id="fnref:217"><a class="footnote-ref" href="#fn:217" rel="footnote">217</a></sup></p>\r
-<p>Something<sup id="fnref:218"><a class="footnote-ref" href="#fn:218" rel="footnote">218</a></sup></p>\r
-<p>Something<sup id="fnref:219"><a class="footnote-ref" href="#fn:219" rel="footnote">219</a></sup></p>\r
-<p>Something<sup id="fnref:220"><a class="footnote-ref" href="#fn:220" rel="footnote">220</a></sup></p>\r
-<p>Something<sup id="fnref:221"><a class="footnote-ref" href="#fn:221" rel="footnote">221</a></sup></p>\r
-<p>Something<sup id="fnref:222"><a class="footnote-ref" href="#fn:222" rel="footnote">222</a></sup></p>\r
-<p>Something<sup id="fnref:223"><a class="footnote-ref" href="#fn:223" rel="footnote">223</a></sup></p>\r
-<p>Something<sup id="fnref:224"><a class="footnote-ref" href="#fn:224" rel="footnote">224</a></sup></p>\r
-<p>Something<sup id="fnref:225"><a class="footnote-ref" href="#fn:225" rel="footnote">225</a></sup></p>\r
-<p>Something<sup id="fnref:226"><a class="footnote-ref" href="#fn:226" rel="footnote">226</a></sup></p>\r
-<p>Something<sup id="fnref:227"><a class="footnote-ref" href="#fn:227" rel="footnote">227</a></sup></p>\r
-<p>Something<sup id="fnref:228"><a class="footnote-ref" href="#fn:228" rel="footnote">228</a></sup></p>\r
-<p>Something<sup id="fnref:229"><a class="footnote-ref" href="#fn:229" rel="footnote">229</a></sup></p>\r
-<p>Something<sup id="fnref:230"><a class="footnote-ref" href="#fn:230" rel="footnote">230</a></sup></p>\r
-<p>Something<sup id="fnref:231"><a class="footnote-ref" href="#fn:231" rel="footnote">231</a></sup></p>\r
-<p>Something<sup id="fnref:232"><a class="footnote-ref" href="#fn:232" rel="footnote">232</a></sup></p>\r
-<p>Something<sup id="fnref:233"><a class="footnote-ref" href="#fn:233" rel="footnote">233</a></sup></p>\r
-<p>Something<sup id="fnref:234"><a class="footnote-ref" href="#fn:234" rel="footnote">234</a></sup></p>\r
-<p>Something<sup id="fnref:235"><a class="footnote-ref" href="#fn:235" rel="footnote">235</a></sup></p>\r
-<p>Something<sup id="fnref:236"><a class="footnote-ref" href="#fn:236" rel="footnote">236</a></sup></p>\r
-<p>Something<sup id="fnref:237"><a class="footnote-ref" href="#fn:237" rel="footnote">237</a></sup></p>\r
-<p>Something<sup id="fnref:238"><a class="footnote-ref" href="#fn:238" rel="footnote">238</a></sup></p>\r
-<p>Something<sup id="fnref:239"><a class="footnote-ref" href="#fn:239" rel="footnote">239</a></sup></p>\r
-<p>Something<sup id="fnref:240"><a class="footnote-ref" href="#fn:240" rel="footnote">240</a></sup></p>\r
-<p>Something<sup id="fnref:241"><a class="footnote-ref" href="#fn:241" rel="footnote">241</a></sup></p>\r
-<p>Something<sup id="fnref:242"><a class="footnote-ref" href="#fn:242" rel="footnote">242</a></sup></p>\r
-<p>Something<sup id="fnref:243"><a class="footnote-ref" href="#fn:243" rel="footnote">243</a></sup></p>\r
-<p>Something<sup id="fnref:244"><a class="footnote-ref" href="#fn:244" rel="footnote">244</a></sup></p>\r
-<p>Something<sup id="fnref:245"><a class="footnote-ref" href="#fn:245" rel="footnote">245</a></sup></p>\r
-<p>Something<sup id="fnref:246"><a class="footnote-ref" href="#fn:246" rel="footnote">246</a></sup></p>\r
-<p>Something<sup id="fnref:247"><a class="footnote-ref" href="#fn:247" rel="footnote">247</a></sup></p>\r
-<p>Something<sup id="fnref:248"><a class="footnote-ref" href="#fn:248" rel="footnote">248</a></sup></p>\r
-<p>Something<sup id="fnref:249"><a class="footnote-ref" href="#fn:249" rel="footnote">249</a></sup></p>\r
-<p>Something<sup id="fnref:250"><a class="footnote-ref" href="#fn:250" rel="footnote">250</a></sup></p>\r
-<p>Something<sup id="fnref:251"><a class="footnote-ref" href="#fn:251" rel="footnote">251</a></sup></p>\r
-<p>Something<sup id="fnref:252"><a class="footnote-ref" href="#fn:252" rel="footnote">252</a></sup></p>\r
-<p>Something<sup id="fnref:253"><a class="footnote-ref" href="#fn:253" rel="footnote">253</a></sup></p>\r
-<p>Something<sup id="fnref:254"><a class="footnote-ref" href="#fn:254" rel="footnote">254</a></sup></p>\r
-<p>Something<sup id="fnref:255"><a class="footnote-ref" href="#fn:255" rel="footnote">255</a></sup></p>\r
-<p>Something<sup id="fnref:256"><a class="footnote-ref" href="#fn:256" rel="footnote">256</a></sup></p>\r
-<p>Something<sup id="fnref:257"><a class="footnote-ref" href="#fn:257" rel="footnote">257</a></sup></p>\r
-<p>Something<sup id="fnref:258"><a class="footnote-ref" href="#fn:258" rel="footnote">258</a></sup></p>\r
-<p>Something<sup id="fnref:259"><a class="footnote-ref" href="#fn:259" rel="footnote">259</a></sup></p>\r
-<p>Something<sup id="fnref:260"><a class="footnote-ref" href="#fn:260" rel="footnote">260</a></sup></p>\r
-<p>Something<sup id="fnref:261"><a class="footnote-ref" href="#fn:261" rel="footnote">261</a></sup></p>\r
-<p>Something<sup id="fnref:262"><a class="footnote-ref" href="#fn:262" rel="footnote">262</a></sup></p>\r
-<p>Something<sup id="fnref:263"><a class="footnote-ref" href="#fn:263" rel="footnote">263</a></sup></p>\r
-<p>Something<sup id="fnref:264"><a class="footnote-ref" href="#fn:264" rel="footnote">264</a></sup></p>\r
-<p>Something<sup id="fnref:265"><a class="footnote-ref" href="#fn:265" rel="footnote">265</a></sup></p>\r
-<p>Something<sup id="fnref:266"><a class="footnote-ref" href="#fn:266" rel="footnote">266</a></sup></p>\r
-<p>Something<sup id="fnref:267"><a class="footnote-ref" href="#fn:267" rel="footnote">267</a></sup></p>\r
-<p>Something<sup id="fnref:268"><a class="footnote-ref" href="#fn:268" rel="footnote">268</a></sup></p>\r
-<p>Something<sup id="fnref:269"><a class="footnote-ref" href="#fn:269" rel="footnote">269</a></sup></p>\r
-<p>Something<sup id="fnref:270"><a class="footnote-ref" href="#fn:270" rel="footnote">270</a></sup></p>\r
-<p>Something<sup id="fnref:271"><a class="footnote-ref" href="#fn:271" rel="footnote">271</a></sup></p>\r
-<p>Something<sup id="fnref:272"><a class="footnote-ref" href="#fn:272" rel="footnote">272</a></sup></p>\r
-<p>Something<sup id="fnref:273"><a class="footnote-ref" href="#fn:273" rel="footnote">273</a></sup></p>\r
-<p>Something<sup id="fnref:274"><a class="footnote-ref" href="#fn:274" rel="footnote">274</a></sup></p>\r
-<p>Something<sup id="fnref:275"><a class="footnote-ref" href="#fn:275" rel="footnote">275</a></sup></p>\r
-<p>Something<sup id="fnref:276"><a class="footnote-ref" href="#fn:276" rel="footnote">276</a></sup></p>\r
-<p>Something<sup id="fnref:277"><a class="footnote-ref" href="#fn:277" rel="footnote">277</a></sup></p>\r
-<p>Something<sup id="fnref:278"><a class="footnote-ref" href="#fn:278" rel="footnote">278</a></sup></p>\r
-<p>Something<sup id="fnref:279"><a class="footnote-ref" href="#fn:279" rel="footnote">279</a></sup></p>\r
-<p>Something<sup id="fnref:280"><a class="footnote-ref" href="#fn:280" rel="footnote">280</a></sup></p>\r
-<p>Something<sup id="fnref:281"><a class="footnote-ref" href="#fn:281" rel="footnote">281</a></sup></p>\r
-<p>Something<sup id="fnref:282"><a class="footnote-ref" href="#fn:282" rel="footnote">282</a></sup></p>\r
-<p>Something<sup id="fnref:283"><a class="footnote-ref" href="#fn:283" rel="footnote">283</a></sup></p>\r
-<p>Something<sup id="fnref:284"><a class="footnote-ref" href="#fn:284" rel="footnote">284</a></sup></p>\r
-<p>Something<sup id="fnref:285"><a class="footnote-ref" href="#fn:285" rel="footnote">285</a></sup></p>\r
-<p>Something<sup id="fnref:286"><a class="footnote-ref" href="#fn:286" rel="footnote">286</a></sup></p>\r
-<p>Something<sup id="fnref:287"><a class="footnote-ref" href="#fn:287" rel="footnote">287</a></sup></p>\r
-<p>Something<sup id="fnref:288"><a class="footnote-ref" href="#fn:288" rel="footnote">288</a></sup></p>\r
-<p>Something<sup id="fnref:289"><a class="footnote-ref" href="#fn:289" rel="footnote">289</a></sup></p>\r
-<p>Something<sup id="fnref:290"><a class="footnote-ref" href="#fn:290" rel="footnote">290</a></sup></p>\r
-<p>Something<sup id="fnref:291"><a class="footnote-ref" href="#fn:291" rel="footnote">291</a></sup></p>\r
-<p>Something<sup id="fnref:292"><a class="footnote-ref" href="#fn:292" rel="footnote">292</a></sup></p>\r
-<p>Something<sup id="fnref:293"><a class="footnote-ref" href="#fn:293" rel="footnote">293</a></sup></p>\r
-<p>Something<sup id="fnref:294"><a class="footnote-ref" href="#fn:294" rel="footnote">294</a></sup></p>\r
-<p>Something<sup id="fnref:295"><a class="footnote-ref" href="#fn:295" rel="footnote">295</a></sup></p>\r
-<p>Something<sup id="fnref:296"><a class="footnote-ref" href="#fn:296" rel="footnote">296</a></sup></p>\r
-<p>Something<sup id="fnref:297"><a class="footnote-ref" href="#fn:297" rel="footnote">297</a></sup></p>\r
-<p>Something<sup id="fnref:298"><a class="footnote-ref" href="#fn:298" rel="footnote">298</a></sup></p>\r
-<p>Something<sup id="fnref:299"><a class="footnote-ref" href="#fn:299" rel="footnote">299</a></sup></p>\r
-<p>Something<sup id="fnref:300"><a class="footnote-ref" href="#fn:300" rel="footnote">300</a></sup></p>\r
-<p>Something<sup id="fnref:301"><a class="footnote-ref" href="#fn:301" rel="footnote">301</a></sup></p>\r
-<p>Something<sup id="fnref:302"><a class="footnote-ref" href="#fn:302" rel="footnote">302</a></sup></p>\r
-<p>Something<sup id="fnref:303"><a class="footnote-ref" href="#fn:303" rel="footnote">303</a></sup></p>\r
-<p>Something<sup id="fnref:304"><a class="footnote-ref" href="#fn:304" rel="footnote">304</a></sup></p>\r
-<p>Something<sup id="fnref:305"><a class="footnote-ref" href="#fn:305" rel="footnote">305</a></sup></p>\r
-<p>Something<sup id="fnref:306"><a class="footnote-ref" href="#fn:306" rel="footnote">306</a></sup></p>\r
-<p>Something<sup id="fnref:307"><a class="footnote-ref" href="#fn:307" rel="footnote">307</a></sup></p>\r
-<p>Something<sup id="fnref:308"><a class="footnote-ref" href="#fn:308" rel="footnote">308</a></sup></p>\r
-<p>Something<sup id="fnref:309"><a class="footnote-ref" href="#fn:309" rel="footnote">309</a></sup></p>\r
-<p>Something<sup id="fnref:310"><a class="footnote-ref" href="#fn:310" rel="footnote">310</a></sup></p>\r
-<p>Something<sup id="fnref:311"><a class="footnote-ref" href="#fn:311" rel="footnote">311</a></sup></p>\r
-<p>Something<sup id="fnref:312"><a class="footnote-ref" href="#fn:312" rel="footnote">312</a></sup></p>\r
-<p>Something<sup id="fnref:313"><a class="footnote-ref" href="#fn:313" rel="footnote">313</a></sup></p>\r
-<p>Something<sup id="fnref:314"><a class="footnote-ref" href="#fn:314" rel="footnote">314</a></sup></p>\r
-<p>Something<sup id="fnref:315"><a class="footnote-ref" href="#fn:315" rel="footnote">315</a></sup></p>\r
-<p>Something<sup id="fnref:316"><a class="footnote-ref" href="#fn:316" rel="footnote">316</a></sup></p>\r
-<p>Something<sup id="fnref:317"><a class="footnote-ref" href="#fn:317" rel="footnote">317</a></sup></p>\r
-<p>Something<sup id="fnref:318"><a class="footnote-ref" href="#fn:318" rel="footnote">318</a></sup></p>\r
-<p>Something<sup id="fnref:319"><a class="footnote-ref" href="#fn:319" rel="footnote">319</a></sup></p>\r
-<p>Something<sup id="fnref:320"><a class="footnote-ref" href="#fn:320" rel="footnote">320</a></sup></p>\r
-<p>Something<sup id="fnref:321"><a class="footnote-ref" href="#fn:321" rel="footnote">321</a></sup></p>\r
-<p>Something<sup id="fnref:322"><a class="footnote-ref" href="#fn:322" rel="footnote">322</a></sup></p>\r
-<p>Something<sup id="fnref:323"><a class="footnote-ref" href="#fn:323" rel="footnote">323</a></sup></p>\r
-<p>Something<sup id="fnref:324"><a class="footnote-ref" href="#fn:324" rel="footnote">324</a></sup></p>\r
-<p>Something<sup id="fnref:325"><a class="footnote-ref" href="#fn:325" rel="footnote">325</a></sup></p>\r
-<p>Something<sup id="fnref:326"><a class="footnote-ref" href="#fn:326" rel="footnote">326</a></sup></p>\r
-<p>Something<sup id="fnref:327"><a class="footnote-ref" href="#fn:327" rel="footnote">327</a></sup></p>\r
-<p>Something<sup id="fnref:328"><a class="footnote-ref" href="#fn:328" rel="footnote">328</a></sup></p>\r
-<p>Something<sup id="fnref:329"><a class="footnote-ref" href="#fn:329" rel="footnote">329</a></sup></p>\r
-<p>Something<sup id="fnref:330"><a class="footnote-ref" href="#fn:330" rel="footnote">330</a></sup></p>\r
-<p>Something<sup id="fnref:331"><a class="footnote-ref" href="#fn:331" rel="footnote">331</a></sup></p>\r
-<p>Something<sup id="fnref:332"><a class="footnote-ref" href="#fn:332" rel="footnote">332</a></sup></p>\r
-<p>Something<sup id="fnref:333"><a class="footnote-ref" href="#fn:333" rel="footnote">333</a></sup></p>\r
-<p>Something<sup id="fnref:334"><a class="footnote-ref" href="#fn:334" rel="footnote">334</a></sup></p>\r
-<p>Something<sup id="fnref:335"><a class="footnote-ref" href="#fn:335" rel="footnote">335</a></sup></p>\r
-<p>Something<sup id="fnref:336"><a class="footnote-ref" href="#fn:336" rel="footnote">336</a></sup></p>\r
-<p>Something<sup id="fnref:337"><a class="footnote-ref" href="#fn:337" rel="footnote">337</a></sup></p>\r
-<p>Something<sup id="fnref:338"><a class="footnote-ref" href="#fn:338" rel="footnote">338</a></sup></p>\r
-<p>Something<sup id="fnref:339"><a class="footnote-ref" href="#fn:339" rel="footnote">339</a></sup></p>\r
-<p>Something<sup id="fnref:340"><a class="footnote-ref" href="#fn:340" rel="footnote">340</a></sup></p>\r
-<p>Something<sup id="fnref:341"><a class="footnote-ref" href="#fn:341" rel="footnote">341</a></sup></p>\r
-<p>Something<sup id="fnref:342"><a class="footnote-ref" href="#fn:342" rel="footnote">342</a></sup></p>\r
-<p>Something<sup id="fnref:343"><a class="footnote-ref" href="#fn:343" rel="footnote">343</a></sup></p>\r
-<p>Something<sup id="fnref:344"><a class="footnote-ref" href="#fn:344" rel="footnote">344</a></sup></p>\r
-<p>Something<sup id="fnref:345"><a class="footnote-ref" href="#fn:345" rel="footnote">345</a></sup></p>\r
-<p>Something<sup id="fnref:346"><a class="footnote-ref" href="#fn:346" rel="footnote">346</a></sup></p>\r
-<p>Something<sup id="fnref:347"><a class="footnote-ref" href="#fn:347" rel="footnote">347</a></sup></p>\r
-<p>Something<sup id="fnref:348"><a class="footnote-ref" href="#fn:348" rel="footnote">348</a></sup></p>\r
-<p>Something<sup id="fnref:349"><a class="footnote-ref" href="#fn:349" rel="footnote">349</a></sup></p>\r
-<p>Something<sup id="fnref:350"><a class="footnote-ref" href="#fn:350" rel="footnote">350</a></sup></p>\r
-<p>Something<sup id="fnref:351"><a class="footnote-ref" href="#fn:351" rel="footnote">351</a></sup></p>\r
-<p>Something<sup id="fnref:352"><a class="footnote-ref" href="#fn:352" rel="footnote">352</a></sup></p>\r
-<p>Something<sup id="fnref:353"><a class="footnote-ref" href="#fn:353" rel="footnote">353</a></sup></p>\r
-<p>Something<sup id="fnref:354"><a class="footnote-ref" href="#fn:354" rel="footnote">354</a></sup></p>\r
-<p>Something<sup id="fnref:355"><a class="footnote-ref" href="#fn:355" rel="footnote">355</a></sup></p>\r
-<p>Something<sup id="fnref:356"><a class="footnote-ref" href="#fn:356" rel="footnote">356</a></sup></p>\r
-<p>Something<sup id="fnref:357"><a class="footnote-ref" href="#fn:357" rel="footnote">357</a></sup></p>\r
-<p>Something<sup id="fnref:358"><a class="footnote-ref" href="#fn:358" rel="footnote">358</a></sup></p>\r
-<p>Something<sup id="fnref:359"><a class="footnote-ref" href="#fn:359" rel="footnote">359</a></sup></p>\r
-<p>Something<sup id="fnref:360"><a class="footnote-ref" href="#fn:360" rel="footnote">360</a></sup></p>\r
-<p>Something<sup id="fnref:361"><a class="footnote-ref" href="#fn:361" rel="footnote">361</a></sup></p>\r
-<p>Something<sup id="fnref:362"><a class="footnote-ref" href="#fn:362" rel="footnote">362</a></sup></p>\r
-<p>Something<sup id="fnref:363"><a class="footnote-ref" href="#fn:363" rel="footnote">363</a></sup></p>\r
-<p>Something<sup id="fnref:364"><a class="footnote-ref" href="#fn:364" rel="footnote">364</a></sup></p>\r
-<p>Something<sup id="fnref:365"><a class="footnote-ref" href="#fn:365" rel="footnote">365</a></sup></p>\r
-<p>Something<sup id="fnref:366"><a class="footnote-ref" href="#fn:366" rel="footnote">366</a></sup></p>\r
-<p>Something<sup id="fnref:367"><a class="footnote-ref" href="#fn:367" rel="footnote">367</a></sup></p>\r
-<p>Something<sup id="fnref:368"><a class="footnote-ref" href="#fn:368" rel="footnote">368</a></sup></p>\r
-<p>Something<sup id="fnref:369"><a class="footnote-ref" href="#fn:369" rel="footnote">369</a></sup></p>\r
-<p>Something<sup id="fnref:370"><a class="footnote-ref" href="#fn:370" rel="footnote">370</a></sup></p>\r
-<p>Something<sup id="fnref:371"><a class="footnote-ref" href="#fn:371" rel="footnote">371</a></sup></p>\r
-<p>Something<sup id="fnref:372"><a class="footnote-ref" href="#fn:372" rel="footnote">372</a></sup></p>\r
-<p>Something<sup id="fnref:373"><a class="footnote-ref" href="#fn:373" rel="footnote">373</a></sup></p>\r
-<p>Something<sup id="fnref:374"><a class="footnote-ref" href="#fn:374" rel="footnote">374</a></sup></p>\r
-<p>Something<sup id="fnref:375"><a class="footnote-ref" href="#fn:375" rel="footnote">375</a></sup></p>\r
-<p>Something<sup id="fnref:376"><a class="footnote-ref" href="#fn:376" rel="footnote">376</a></sup></p>\r
-<p>Something<sup id="fnref:377"><a class="footnote-ref" href="#fn:377" rel="footnote">377</a></sup></p>\r
-<p>Something<sup id="fnref:378"><a class="footnote-ref" href="#fn:378" rel="footnote">378</a></sup></p>\r
-<p>Something<sup id="fnref:379"><a class="footnote-ref" href="#fn:379" rel="footnote">379</a></sup></p>\r
-<p>Something<sup id="fnref:380"><a class="footnote-ref" href="#fn:380" rel="footnote">380</a></sup></p>\r
-<p>Something<sup id="fnref:381"><a class="footnote-ref" href="#fn:381" rel="footnote">381</a></sup></p>\r
-<p>Something<sup id="fnref:382"><a class="footnote-ref" href="#fn:382" rel="footnote">382</a></sup></p>\r
-<p>Something<sup id="fnref:383"><a class="footnote-ref" href="#fn:383" rel="footnote">383</a></sup></p>\r
-<p>Something<sup id="fnref:384"><a class="footnote-ref" href="#fn:384" rel="footnote">384</a></sup></p>\r
-<p>Something<sup id="fnref:385"><a class="footnote-ref" href="#fn:385" rel="footnote">385</a></sup></p>\r
-<p>Something<sup id="fnref:386"><a class="footnote-ref" href="#fn:386" rel="footnote">386</a></sup></p>\r
-<p>Something<sup id="fnref:387"><a class="footnote-ref" href="#fn:387" rel="footnote">387</a></sup></p>\r
-<p>Something<sup id="fnref:388"><a class="footnote-ref" href="#fn:388" rel="footnote">388</a></sup></p>\r
-<p>Something<sup id="fnref:389"><a class="footnote-ref" href="#fn:389" rel="footnote">389</a></sup></p>\r
-<p>Something<sup id="fnref:390"><a class="footnote-ref" href="#fn:390" rel="footnote">390</a></sup></p>\r
-<p>Something<sup id="fnref:391"><a class="footnote-ref" href="#fn:391" rel="footnote">391</a></sup></p>\r
-<p>Something<sup id="fnref:392"><a class="footnote-ref" href="#fn:392" rel="footnote">392</a></sup></p>\r
-<p>Something<sup id="fnref:393"><a class="footnote-ref" href="#fn:393" rel="footnote">393</a></sup></p>\r
-<p>Something<sup id="fnref:394"><a class="footnote-ref" href="#fn:394" rel="footnote">394</a></sup></p>\r
-<p>Something<sup id="fnref:395"><a class="footnote-ref" href="#fn:395" rel="footnote">395</a></sup></p>\r
-<p>Something<sup id="fnref:396"><a class="footnote-ref" href="#fn:396" rel="footnote">396</a></sup></p>\r
-<p>Something<sup id="fnref:397"><a class="footnote-ref" href="#fn:397" rel="footnote">397</a></sup></p>\r
-<p>Something<sup id="fnref:398"><a class="footnote-ref" href="#fn:398" rel="footnote">398</a></sup></p>\r
-<p>Something<sup id="fnref:399"><a class="footnote-ref" href="#fn:399" rel="footnote">399</a></sup></p>\r
-<p>Something<sup id="fnref:400"><a class="footnote-ref" href="#fn:400" rel="footnote">400</a></sup></p>\r
-<p>Something<sup id="fnref:401"><a class="footnote-ref" href="#fn:401" rel="footnote">401</a></sup></p>\r
-<p>Something<sup id="fnref:402"><a class="footnote-ref" href="#fn:402" rel="footnote">402</a></sup></p>\r
-<p>Something<sup id="fnref:403"><a class="footnote-ref" href="#fn:403" rel="footnote">403</a></sup></p>\r
-<p>Something<sup id="fnref:404"><a class="footnote-ref" href="#fn:404" rel="footnote">404</a></sup></p>\r
-<p>Something<sup id="fnref:405"><a class="footnote-ref" href="#fn:405" rel="footnote">405</a></sup></p>\r
-<p>Something<sup id="fnref:406"><a class="footnote-ref" href="#fn:406" rel="footnote">406</a></sup></p>\r
-<p>Something<sup id="fnref:407"><a class="footnote-ref" href="#fn:407" rel="footnote">407</a></sup></p>\r
-<p>Something<sup id="fnref:408"><a class="footnote-ref" href="#fn:408" rel="footnote">408</a></sup></p>\r
-<p>Something<sup id="fnref:409"><a class="footnote-ref" href="#fn:409" rel="footnote">409</a></sup></p>\r
-<p>Something<sup id="fnref:410"><a class="footnote-ref" href="#fn:410" rel="footnote">410</a></sup></p>\r
-<p>Something<sup id="fnref:411"><a class="footnote-ref" href="#fn:411" rel="footnote">411</a></sup></p>\r
-<p>Something<sup id="fnref:412"><a class="footnote-ref" href="#fn:412" rel="footnote">412</a></sup></p>\r
-<p>Something<sup id="fnref:413"><a class="footnote-ref" href="#fn:413" rel="footnote">413</a></sup></p>\r
-<p>Something<sup id="fnref:414"><a class="footnote-ref" href="#fn:414" rel="footnote">414</a></sup></p>\r
-<p>Something<sup id="fnref:415"><a class="footnote-ref" href="#fn:415" rel="footnote">415</a></sup></p>\r
-<p>Something<sup id="fnref:416"><a class="footnote-ref" href="#fn:416" rel="footnote">416</a></sup></p>\r
-<p>Something<sup id="fnref:417"><a class="footnote-ref" href="#fn:417" rel="footnote">417</a></sup></p>\r
-<p>Something<sup id="fnref:418"><a class="footnote-ref" href="#fn:418" rel="footnote">418</a></sup></p>\r
-<p>Something<sup id="fnref:419"><a class="footnote-ref" href="#fn:419" rel="footnote">419</a></sup></p>\r
-<p>Something<sup id="fnref:420"><a class="footnote-ref" href="#fn:420" rel="footnote">420</a></sup></p>\r
-<p>Something<sup id="fnref:421"><a class="footnote-ref" href="#fn:421" rel="footnote">421</a></sup></p>\r
-<p>Something<sup id="fnref:422"><a class="footnote-ref" href="#fn:422" rel="footnote">422</a></sup></p>\r
-<p>Something<sup id="fnref:423"><a class="footnote-ref" href="#fn:423" rel="footnote">423</a></sup></p>\r
-<p>Something<sup id="fnref:424"><a class="footnote-ref" href="#fn:424" rel="footnote">424</a></sup></p>\r
-<p>Something<sup id="fnref:425"><a class="footnote-ref" href="#fn:425" rel="footnote">425</a></sup></p>\r
-<p>Something<sup id="fnref:426"><a class="footnote-ref" href="#fn:426" rel="footnote">426</a></sup></p>\r
-<p>Something<sup id="fnref:427"><a class="footnote-ref" href="#fn:427" rel="footnote">427</a></sup></p>\r
-<p>Something<sup id="fnref:428"><a class="footnote-ref" href="#fn:428" rel="footnote">428</a></sup></p>\r
-<p>Something<sup id="fnref:429"><a class="footnote-ref" href="#fn:429" rel="footnote">429</a></sup></p>\r
-<p>Something<sup id="fnref:430"><a class="footnote-ref" href="#fn:430" rel="footnote">430</a></sup></p>\r
-<p>Something<sup id="fnref:431"><a class="footnote-ref" href="#fn:431" rel="footnote">431</a></sup></p>\r
-<p>Something<sup id="fnref:432"><a class="footnote-ref" href="#fn:432" rel="footnote">432</a></sup></p>\r
-<p>Something<sup id="fnref:433"><a class="footnote-ref" href="#fn:433" rel="footnote">433</a></sup></p>\r
-<p>Something<sup id="fnref:434"><a class="footnote-ref" href="#fn:434" rel="footnote">434</a></sup></p>\r
-<p>Something<sup id="fnref:435"><a class="footnote-ref" href="#fn:435" rel="footnote">435</a></sup></p>\r
-<p>Something<sup id="fnref:436"><a class="footnote-ref" href="#fn:436" rel="footnote">436</a></sup></p>\r
-<p>Something<sup id="fnref:437"><a class="footnote-ref" href="#fn:437" rel="footnote">437</a></sup></p>\r
-<p>Something<sup id="fnref:438"><a class="footnote-ref" href="#fn:438" rel="footnote">438</a></sup></p>\r
-<p>Something<sup id="fnref:439"><a class="footnote-ref" href="#fn:439" rel="footnote">439</a></sup></p>\r
-<p>Something<sup id="fnref:440"><a class="footnote-ref" href="#fn:440" rel="footnote">440</a></sup></p>\r
-<p>Something<sup id="fnref:441"><a class="footnote-ref" href="#fn:441" rel="footnote">441</a></sup></p>\r
-<p>Something<sup id="fnref:442"><a class="footnote-ref" href="#fn:442" rel="footnote">442</a></sup></p>\r
-<p>Something<sup id="fnref:443"><a class="footnote-ref" href="#fn:443" rel="footnote">443</a></sup></p>\r
-<p>Something<sup id="fnref:444"><a class="footnote-ref" href="#fn:444" rel="footnote">444</a></sup></p>\r
-<p>Something<sup id="fnref:445"><a class="footnote-ref" href="#fn:445" rel="footnote">445</a></sup></p>\r
-<p>Something<sup id="fnref:446"><a class="footnote-ref" href="#fn:446" rel="footnote">446</a></sup></p>\r
-<p>Something<sup id="fnref:447"><a class="footnote-ref" href="#fn:447" rel="footnote">447</a></sup></p>\r
-<p>Something<sup id="fnref:448"><a class="footnote-ref" href="#fn:448" rel="footnote">448</a></sup></p>\r
-<p>Something<sup id="fnref:449"><a class="footnote-ref" href="#fn:449" rel="footnote">449</a></sup></p>\r
-<p>Something<sup id="fnref:450"><a class="footnote-ref" href="#fn:450" rel="footnote">450</a></sup></p>\r
-<p>Something<sup id="fnref:451"><a class="footnote-ref" href="#fn:451" rel="footnote">451</a></sup></p>\r
-<p>Something<sup id="fnref:452"><a class="footnote-ref" href="#fn:452" rel="footnote">452</a></sup></p>\r
-<p>Something<sup id="fnref:453"><a class="footnote-ref" href="#fn:453" rel="footnote">453</a></sup></p>\r
-<p>Something<sup id="fnref:454"><a class="footnote-ref" href="#fn:454" rel="footnote">454</a></sup></p>\r
-<p>Something<sup id="fnref:455"><a class="footnote-ref" href="#fn:455" rel="footnote">455</a></sup></p>\r
-<p>Something<sup id="fnref:456"><a class="footnote-ref" href="#fn:456" rel="footnote">456</a></sup></p>\r
-<p>Something<sup id="fnref:457"><a class="footnote-ref" href="#fn:457" rel="footnote">457</a></sup></p>\r
-<p>Something<sup id="fnref:458"><a class="footnote-ref" href="#fn:458" rel="footnote">458</a></sup></p>\r
-<p>Something<sup id="fnref:459"><a class="footnote-ref" href="#fn:459" rel="footnote">459</a></sup></p>\r
-<p>Something<sup id="fnref:460"><a class="footnote-ref" href="#fn:460" rel="footnote">460</a></sup></p>\r
-<p>Something<sup id="fnref:461"><a class="footnote-ref" href="#fn:461" rel="footnote">461</a></sup></p>\r
-<p>Something<sup id="fnref:462"><a class="footnote-ref" href="#fn:462" rel="footnote">462</a></sup></p>\r
-<p>Something<sup id="fnref:463"><a class="footnote-ref" href="#fn:463" rel="footnote">463</a></sup></p>\r
-<p>Something<sup id="fnref:464"><a class="footnote-ref" href="#fn:464" rel="footnote">464</a></sup></p>\r
-<p>Something<sup id="fnref:465"><a class="footnote-ref" href="#fn:465" rel="footnote">465</a></sup></p>\r
-<p>Something<sup id="fnref:466"><a class="footnote-ref" href="#fn:466" rel="footnote">466</a></sup></p>\r
-<p>Something<sup id="fnref:467"><a class="footnote-ref" href="#fn:467" rel="footnote">467</a></sup></p>\r
-<p>Something<sup id="fnref:468"><a class="footnote-ref" href="#fn:468" rel="footnote">468</a></sup></p>\r
-<p>Something<sup id="fnref:469"><a class="footnote-ref" href="#fn:469" rel="footnote">469</a></sup></p>\r
-<p>Something<sup id="fnref:470"><a class="footnote-ref" href="#fn:470" rel="footnote">470</a></sup></p>\r
-<p>Something<sup id="fnref:471"><a class="footnote-ref" href="#fn:471" rel="footnote">471</a></sup></p>\r
-<p>Something<sup id="fnref:472"><a class="footnote-ref" href="#fn:472" rel="footnote">472</a></sup></p>\r
-<p>Something<sup id="fnref:473"><a class="footnote-ref" href="#fn:473" rel="footnote">473</a></sup></p>\r
-<p>Something<sup id="fnref:474"><a class="footnote-ref" href="#fn:474" rel="footnote">474</a></sup></p>\r
-<p>Something<sup id="fnref:475"><a class="footnote-ref" href="#fn:475" rel="footnote">475</a></sup></p>\r
-<p>Something<sup id="fnref:476"><a class="footnote-ref" href="#fn:476" rel="footnote">476</a></sup></p>\r
-<p>Something<sup id="fnref:477"><a class="footnote-ref" href="#fn:477" rel="footnote">477</a></sup></p>\r
-<p>Something<sup id="fnref:478"><a class="footnote-ref" href="#fn:478" rel="footnote">478</a></sup></p>\r
-<p>Something<sup id="fnref:479"><a class="footnote-ref" href="#fn:479" rel="footnote">479</a></sup></p>\r
-<p>Something<sup id="fnref:480"><a class="footnote-ref" href="#fn:480" rel="footnote">480</a></sup></p>\r
-<p>Something<sup id="fnref:481"><a class="footnote-ref" href="#fn:481" rel="footnote">481</a></sup></p>\r
-<p>Something<sup id="fnref:482"><a class="footnote-ref" href="#fn:482" rel="footnote">482</a></sup></p>\r
-<p>Something<sup id="fnref:483"><a class="footnote-ref" href="#fn:483" rel="footnote">483</a></sup></p>\r
-<p>Something<sup id="fnref:484"><a class="footnote-ref" href="#fn:484" rel="footnote">484</a></sup></p>\r
-<p>Something<sup id="fnref:485"><a class="footnote-ref" href="#fn:485" rel="footnote">485</a></sup></p>\r
-<p>Something<sup id="fnref:486"><a class="footnote-ref" href="#fn:486" rel="footnote">486</a></sup></p>\r
-<p>Something<sup id="fnref:487"><a class="footnote-ref" href="#fn:487" rel="footnote">487</a></sup></p>\r
-<p>Something<sup id="fnref:488"><a class="footnote-ref" href="#fn:488" rel="footnote">488</a></sup></p>\r
-<p>Something<sup id="fnref:489"><a class="footnote-ref" href="#fn:489" rel="footnote">489</a></sup></p>\r
-<p>Something<sup id="fnref:490"><a class="footnote-ref" href="#fn:490" rel="footnote">490</a></sup></p>\r
-<p>Something<sup id="fnref:491"><a class="footnote-ref" href="#fn:491" rel="footnote">491</a></sup></p>\r
-<p>Something<sup id="fnref:492"><a class="footnote-ref" href="#fn:492" rel="footnote">492</a></sup></p>\r
-<p>Something<sup id="fnref:493"><a class="footnote-ref" href="#fn:493" rel="footnote">493</a></sup></p>\r
-<p>Something<sup id="fnref:494"><a class="footnote-ref" href="#fn:494" rel="footnote">494</a></sup></p>\r
-<p>Something<sup id="fnref:495"><a class="footnote-ref" href="#fn:495" rel="footnote">495</a></sup></p>\r
-<p>Something<sup id="fnref:496"><a class="footnote-ref" href="#fn:496" rel="footnote">496</a></sup></p>\r
-<p>Something<sup id="fnref:497"><a class="footnote-ref" href="#fn:497" rel="footnote">497</a></sup></p>\r
-<p>Something<sup id="fnref:498"><a class="footnote-ref" href="#fn:498" rel="footnote">498</a></sup></p>\r
-<p>Something<sup id="fnref:499"><a class="footnote-ref" href="#fn:499" rel="footnote">499</a></sup></p>\r
-<p>Something<sup id="fnref:500"><a class="footnote-ref" href="#fn:500" rel="footnote">500</a></sup></p>\r
-<p>Something<sup id="fnref:501"><a class="footnote-ref" href="#fn:501" rel="footnote">501</a></sup></p>\r
-<p>Something<sup id="fnref:502"><a class="footnote-ref" href="#fn:502" rel="footnote">502</a></sup></p>\r
-<p>Something<sup id="fnref:503"><a class="footnote-ref" href="#fn:503" rel="footnote">503</a></sup></p>\r
-<p>Something<sup id="fnref:504"><a class="footnote-ref" href="#fn:504" rel="footnote">504</a></sup></p>\r
-<p>Something<sup id="fnref:505"><a class="footnote-ref" href="#fn:505" rel="footnote">505</a></sup></p>\r
-<p>Something<sup id="fnref:506"><a class="footnote-ref" href="#fn:506" rel="footnote">506</a></sup></p>\r
-<p>Something<sup id="fnref:507"><a class="footnote-ref" href="#fn:507" rel="footnote">507</a></sup></p>\r
-<p>Something<sup id="fnref:508"><a class="footnote-ref" href="#fn:508" rel="footnote">508</a></sup></p>\r
-<p>Something<sup id="fnref:509"><a class="footnote-ref" href="#fn:509" rel="footnote">509</a></sup></p>\r
-<p>Something<sup id="fnref:510"><a class="footnote-ref" href="#fn:510" rel="footnote">510</a></sup></p>\r
-<p>Something<sup id="fnref:511"><a class="footnote-ref" href="#fn:511" rel="footnote">511</a></sup></p>\r
-<p>Something<sup id="fnref:512"><a class="footnote-ref" href="#fn:512" rel="footnote">512</a></sup></p>\r
-<p>Something<sup id="fnref:513"><a class="footnote-ref" href="#fn:513" rel="footnote">513</a></sup></p>\r
-<p>Something<sup id="fnref:514"><a class="footnote-ref" href="#fn:514" rel="footnote">514</a></sup></p>\r
-<p>Something<sup id="fnref:515"><a class="footnote-ref" href="#fn:515" rel="footnote">515</a></sup></p>\r
-<p>Something<sup id="fnref:516"><a class="footnote-ref" href="#fn:516" rel="footnote">516</a></sup></p>\r
-<p>Something<sup id="fnref:517"><a class="footnote-ref" href="#fn:517" rel="footnote">517</a></sup></p>\r
-<p>Something<sup id="fnref:518"><a class="footnote-ref" href="#fn:518" rel="footnote">518</a></sup></p>\r
-<p>Something<sup id="fnref:519"><a class="footnote-ref" href="#fn:519" rel="footnote">519</a></sup></p>\r
-<p>Something<sup id="fnref:520"><a class="footnote-ref" href="#fn:520" rel="footnote">520</a></sup></p>\r
-<p>Something<sup id="fnref:521"><a class="footnote-ref" href="#fn:521" rel="footnote">521</a></sup></p>\r
-<p>Something<sup id="fnref:522"><a class="footnote-ref" href="#fn:522" rel="footnote">522</a></sup></p>\r
-<p>Something<sup id="fnref:523"><a class="footnote-ref" href="#fn:523" rel="footnote">523</a></sup></p>\r
-<p>Something<sup id="fnref:524"><a class="footnote-ref" href="#fn:524" rel="footnote">524</a></sup></p>\r
-<p>Something<sup id="fnref:525"><a class="footnote-ref" href="#fn:525" rel="footnote">525</a></sup></p>\r
-<p>Something<sup id="fnref:526"><a class="footnote-ref" href="#fn:526" rel="footnote">526</a></sup></p>\r
-<p>Something<sup id="fnref:527"><a class="footnote-ref" href="#fn:527" rel="footnote">527</a></sup></p>\r
-<p>Something<sup id="fnref:528"><a class="footnote-ref" href="#fn:528" rel="footnote">528</a></sup></p>\r
-<p>Something<sup id="fnref:529"><a class="footnote-ref" href="#fn:529" rel="footnote">529</a></sup></p>\r
-<p>Something<sup id="fnref:530"><a class="footnote-ref" href="#fn:530" rel="footnote">530</a></sup></p>\r
-<p>Something<sup id="fnref:531"><a class="footnote-ref" href="#fn:531" rel="footnote">531</a></sup></p>\r
-<p>Something<sup id="fnref:532"><a class="footnote-ref" href="#fn:532" rel="footnote">532</a></sup></p>\r
-<p>Something<sup id="fnref:533"><a class="footnote-ref" href="#fn:533" rel="footnote">533</a></sup></p>\r
-<p>Something<sup id="fnref:534"><a class="footnote-ref" href="#fn:534" rel="footnote">534</a></sup></p>\r
-<p>Something<sup id="fnref:535"><a class="footnote-ref" href="#fn:535" rel="footnote">535</a></sup></p>\r
-<p>Something<sup id="fnref:536"><a class="footnote-ref" href="#fn:536" rel="footnote">536</a></sup></p>\r
-<p>Something<sup id="fnref:537"><a class="footnote-ref" href="#fn:537" rel="footnote">537</a></sup></p>\r
-<p>Something<sup id="fnref:538"><a class="footnote-ref" href="#fn:538" rel="footnote">538</a></sup></p>\r
-<p>Something<sup id="fnref:539"><a class="footnote-ref" href="#fn:539" rel="footnote">539</a></sup></p>\r
-<p>Something<sup id="fnref:540"><a class="footnote-ref" href="#fn:540" rel="footnote">540</a></sup></p>\r
-<p>Something<sup id="fnref:541"><a class="footnote-ref" href="#fn:541" rel="footnote">541</a></sup></p>\r
-<p>Something<sup id="fnref:542"><a class="footnote-ref" href="#fn:542" rel="footnote">542</a></sup></p>\r
-<p>Something<sup id="fnref:543"><a class="footnote-ref" href="#fn:543" rel="footnote">543</a></sup></p>\r
-<p>Something<sup id="fnref:544"><a class="footnote-ref" href="#fn:544" rel="footnote">544</a></sup></p>\r
-<p>Something<sup id="fnref:545"><a class="footnote-ref" href="#fn:545" rel="footnote">545</a></sup></p>\r
-<p>Something<sup id="fnref:546"><a class="footnote-ref" href="#fn:546" rel="footnote">546</a></sup></p>\r
-<p>Something<sup id="fnref:547"><a class="footnote-ref" href="#fn:547" rel="footnote">547</a></sup></p>\r
-<p>Something<sup id="fnref:548"><a class="footnote-ref" href="#fn:548" rel="footnote">548</a></sup></p>\r
-<p>Something<sup id="fnref:549"><a class="footnote-ref" href="#fn:549" rel="footnote">549</a></sup></p>\r
-<p>Something<sup id="fnref:550"><a class="footnote-ref" href="#fn:550" rel="footnote">550</a></sup></p>\r
-<p>Something<sup id="fnref:551"><a class="footnote-ref" href="#fn:551" rel="footnote">551</a></sup></p>\r
-<p>Something<sup id="fnref:552"><a class="footnote-ref" href="#fn:552" rel="footnote">552</a></sup></p>\r
-<p>Something<sup id="fnref:553"><a class="footnote-ref" href="#fn:553" rel="footnote">553</a></sup></p>\r
-<p>Something<sup id="fnref:554"><a class="footnote-ref" href="#fn:554" rel="footnote">554</a></sup></p>\r
-<p>Something<sup id="fnref:555"><a class="footnote-ref" href="#fn:555" rel="footnote">555</a></sup></p>\r
-<p>Something<sup id="fnref:556"><a class="footnote-ref" href="#fn:556" rel="footnote">556</a></sup></p>\r
-<p>Something<sup id="fnref:557"><a class="footnote-ref" href="#fn:557" rel="footnote">557</a></sup></p>\r
-<p>Something<sup id="fnref:558"><a class="footnote-ref" href="#fn:558" rel="footnote">558</a></sup></p>\r
-<p>Something<sup id="fnref:559"><a class="footnote-ref" href="#fn:559" rel="footnote">559</a></sup></p>\r
-<p>Something<sup id="fnref:560"><a class="footnote-ref" href="#fn:560" rel="footnote">560</a></sup></p>\r
-<p>Something<sup id="fnref:561"><a class="footnote-ref" href="#fn:561" rel="footnote">561</a></sup></p>\r
-<p>Something<sup id="fnref:562"><a class="footnote-ref" href="#fn:562" rel="footnote">562</a></sup></p>\r
-<p>Something<sup id="fnref:563"><a class="footnote-ref" href="#fn:563" rel="footnote">563</a></sup></p>\r
-<p>Something<sup id="fnref:564"><a class="footnote-ref" href="#fn:564" rel="footnote">564</a></sup></p>\r
-<p>Something<sup id="fnref:565"><a class="footnote-ref" href="#fn:565" rel="footnote">565</a></sup></p>\r
-<p>Something<sup id="fnref:566"><a class="footnote-ref" href="#fn:566" rel="footnote">566</a></sup></p>\r
-<p>Something<sup id="fnref:567"><a class="footnote-ref" href="#fn:567" rel="footnote">567</a></sup></p>\r
-<p>Something<sup id="fnref:568"><a class="footnote-ref" href="#fn:568" rel="footnote">568</a></sup></p>\r
-<p>Something<sup id="fnref:569"><a class="footnote-ref" href="#fn:569" rel="footnote">569</a></sup></p>\r
-<p>Something<sup id="fnref:570"><a class="footnote-ref" href="#fn:570" rel="footnote">570</a></sup></p>\r
-<p>Something<sup id="fnref:571"><a class="footnote-ref" href="#fn:571" rel="footnote">571</a></sup></p>\r
-<p>Something<sup id="fnref:572"><a class="footnote-ref" href="#fn:572" rel="footnote">572</a></sup></p>\r
-<p>Something<sup id="fnref:573"><a class="footnote-ref" href="#fn:573" rel="footnote">573</a></sup></p>\r
-<p>Something<sup id="fnref:574"><a class="footnote-ref" href="#fn:574" rel="footnote">574</a></sup></p>\r
-<p>Something<sup id="fnref:575"><a class="footnote-ref" href="#fn:575" rel="footnote">575</a></sup></p>\r
-<p>Something<sup id="fnref:576"><a class="footnote-ref" href="#fn:576" rel="footnote">576</a></sup></p>\r
-<p>Something<sup id="fnref:577"><a class="footnote-ref" href="#fn:577" rel="footnote">577</a></sup></p>\r
-<p>Something<sup id="fnref:578"><a class="footnote-ref" href="#fn:578" rel="footnote">578</a></sup></p>\r
-<p>Something<sup id="fnref:579"><a class="footnote-ref" href="#fn:579" rel="footnote">579</a></sup></p>\r
-<p>Something<sup id="fnref:580"><a class="footnote-ref" href="#fn:580" rel="footnote">580</a></sup></p>\r
-<p>Something<sup id="fnref:581"><a class="footnote-ref" href="#fn:581" rel="footnote">581</a></sup></p>\r
-<p>Something<sup id="fnref:582"><a class="footnote-ref" href="#fn:582" rel="footnote">582</a></sup></p>\r
-<p>Something<sup id="fnref:583"><a class="footnote-ref" href="#fn:583" rel="footnote">583</a></sup></p>\r
-<p>Something<sup id="fnref:584"><a class="footnote-ref" href="#fn:584" rel="footnote">584</a></sup></p>\r
-<p>Something<sup id="fnref:585"><a class="footnote-ref" href="#fn:585" rel="footnote">585</a></sup></p>\r
-<p>Something<sup id="fnref:586"><a class="footnote-ref" href="#fn:586" rel="footnote">586</a></sup></p>\r
-<p>Something<sup id="fnref:587"><a class="footnote-ref" href="#fn:587" rel="footnote">587</a></sup></p>\r
-<p>Something<sup id="fnref:588"><a class="footnote-ref" href="#fn:588" rel="footnote">588</a></sup></p>\r
-<p>Something<sup id="fnref:589"><a class="footnote-ref" href="#fn:589" rel="footnote">589</a></sup></p>\r
-<p>Something<sup id="fnref:590"><a class="footnote-ref" href="#fn:590" rel="footnote">590</a></sup></p>\r
-<p>Something<sup id="fnref:591"><a class="footnote-ref" href="#fn:591" rel="footnote">591</a></sup></p>\r
-<p>Something<sup id="fnref:592"><a class="footnote-ref" href="#fn:592" rel="footnote">592</a></sup></p>\r
-<p>Something<sup id="fnref:593"><a class="footnote-ref" href="#fn:593" rel="footnote">593</a></sup></p>\r
-<p>Something<sup id="fnref:594"><a class="footnote-ref" href="#fn:594" rel="footnote">594</a></sup></p>\r
-<p>Something<sup id="fnref:595"><a class="footnote-ref" href="#fn:595" rel="footnote">595</a></sup></p>\r
-<p>Something<sup id="fnref:596"><a class="footnote-ref" href="#fn:596" rel="footnote">596</a></sup></p>\r
-<p>Something<sup id="fnref:597"><a class="footnote-ref" href="#fn:597" rel="footnote">597</a></sup></p>\r
-<p>Something<sup id="fnref:598"><a class="footnote-ref" href="#fn:598" rel="footnote">598</a></sup></p>\r
-<p>Something<sup id="fnref:599"><a class="footnote-ref" href="#fn:599" rel="footnote">599</a></sup></p>\r
-<p>Something<sup id="fnref:600"><a class="footnote-ref" href="#fn:600" rel="footnote">600</a></sup></p>\r
-<p>Something<sup id="fnref:601"><a class="footnote-ref" href="#fn:601" rel="footnote">601</a></sup></p>\r
-<p>Something<sup id="fnref:602"><a class="footnote-ref" href="#fn:602" rel="footnote">602</a></sup></p>\r
-<p>Something<sup id="fnref:603"><a class="footnote-ref" href="#fn:603" rel="footnote">603</a></sup></p>\r
-<p>Something<sup id="fnref:604"><a class="footnote-ref" href="#fn:604" rel="footnote">604</a></sup></p>\r
-<p>Something<sup id="fnref:605"><a class="footnote-ref" href="#fn:605" rel="footnote">605</a></sup></p>\r
-<p>Something<sup id="fnref:606"><a class="footnote-ref" href="#fn:606" rel="footnote">606</a></sup></p>\r
-<p>Something<sup id="fnref:607"><a class="footnote-ref" href="#fn:607" rel="footnote">607</a></sup></p>\r
-<p>Something<sup id="fnref:608"><a class="footnote-ref" href="#fn:608" rel="footnote">608</a></sup></p>\r
-<p>Something<sup id="fnref:609"><a class="footnote-ref" href="#fn:609" rel="footnote">609</a></sup></p>\r
-<p>Something<sup id="fnref:610"><a class="footnote-ref" href="#fn:610" rel="footnote">610</a></sup></p>\r
-<p>Something<sup id="fnref:611"><a class="footnote-ref" href="#fn:611" rel="footnote">611</a></sup></p>\r
-<p>Something<sup id="fnref:612"><a class="footnote-ref" href="#fn:612" rel="footnote">612</a></sup></p>\r
-<p>Something<sup id="fnref:613"><a class="footnote-ref" href="#fn:613" rel="footnote">613</a></sup></p>\r
-<p>Something<sup id="fnref:614"><a class="footnote-ref" href="#fn:614" rel="footnote">614</a></sup></p>\r
-<p>Something<sup id="fnref:615"><a class="footnote-ref" href="#fn:615" rel="footnote">615</a></sup></p>\r
-<p>Something<sup id="fnref:616"><a class="footnote-ref" href="#fn:616" rel="footnote">616</a></sup></p>\r
-<p>Something<sup id="fnref:617"><a class="footnote-ref" href="#fn:617" rel="footnote">617</a></sup></p>\r
-<p>Something<sup id="fnref:618"><a class="footnote-ref" href="#fn:618" rel="footnote">618</a></sup></p>\r
-<p>Something<sup id="fnref:619"><a class="footnote-ref" href="#fn:619" rel="footnote">619</a></sup></p>\r
-<p>Something<sup id="fnref:620"><a class="footnote-ref" href="#fn:620" rel="footnote">620</a></sup></p>\r
-<p>Something<sup id="fnref:621"><a class="footnote-ref" href="#fn:621" rel="footnote">621</a></sup></p>\r
-<p>Something<sup id="fnref:622"><a class="footnote-ref" href="#fn:622" rel="footnote">622</a></sup></p>\r
-<p>Something<sup id="fnref:623"><a class="footnote-ref" href="#fn:623" rel="footnote">623</a></sup></p>\r
-<p>Something<sup id="fnref:624"><a class="footnote-ref" href="#fn:624" rel="footnote">624</a></sup></p>\r
-<p>Something<sup id="fnref:625"><a class="footnote-ref" href="#fn:625" rel="footnote">625</a></sup></p>\r
-<p>Something<sup id="fnref:626"><a class="footnote-ref" href="#fn:626" rel="footnote">626</a></sup></p>\r
-<p>Something<sup id="fnref:627"><a class="footnote-ref" href="#fn:627" rel="footnote">627</a></sup></p>\r
-<p>Something<sup id="fnref:628"><a class="footnote-ref" href="#fn:628" rel="footnote">628</a></sup></p>\r
-<p>Something<sup id="fnref:629"><a class="footnote-ref" href="#fn:629" rel="footnote">629</a></sup></p>\r
-<p>Something<sup id="fnref:630"><a class="footnote-ref" href="#fn:630" rel="footnote">630</a></sup></p>\r
-<p>Something<sup id="fnref:631"><a class="footnote-ref" href="#fn:631" rel="footnote">631</a></sup></p>\r
-<p>Something<sup id="fnref:632"><a class="footnote-ref" href="#fn:632" rel="footnote">632</a></sup></p>\r
-<p>Something<sup id="fnref:633"><a class="footnote-ref" href="#fn:633" rel="footnote">633</a></sup></p>\r
-<p>Something<sup id="fnref:634"><a class="footnote-ref" href="#fn:634" rel="footnote">634</a></sup></p>\r
-<p>Something<sup id="fnref:635"><a class="footnote-ref" href="#fn:635" rel="footnote">635</a></sup></p>\r
-<p>Something<sup id="fnref:636"><a class="footnote-ref" href="#fn:636" rel="footnote">636</a></sup></p>\r
-<p>Something<sup id="fnref:637"><a class="footnote-ref" href="#fn:637" rel="footnote">637</a></sup></p>\r
-<p>Something<sup id="fnref:638"><a class="footnote-ref" href="#fn:638" rel="footnote">638</a></sup></p>\r
-<p>Something<sup id="fnref:639"><a class="footnote-ref" href="#fn:639" rel="footnote">639</a></sup></p>\r
-<p>Something<sup id="fnref:640"><a class="footnote-ref" href="#fn:640" rel="footnote">640</a></sup></p>\r
-<p>Something<sup id="fnref:641"><a class="footnote-ref" href="#fn:641" rel="footnote">641</a></sup></p>\r
-<p>Something<sup id="fnref:642"><a class="footnote-ref" href="#fn:642" rel="footnote">642</a></sup></p>\r
-<p>Something<sup id="fnref:643"><a class="footnote-ref" href="#fn:643" rel="footnote">643</a></sup></p>\r
-<p>Something<sup id="fnref:644"><a class="footnote-ref" href="#fn:644" rel="footnote">644</a></sup></p>\r
-<p>Something<sup id="fnref:645"><a class="footnote-ref" href="#fn:645" rel="footnote">645</a></sup></p>\r
-<p>Something<sup id="fnref:646"><a class="footnote-ref" href="#fn:646" rel="footnote">646</a></sup></p>\r
-<p>Something<sup id="fnref:647"><a class="footnote-ref" href="#fn:647" rel="footnote">647</a></sup></p>\r
-<p>Something<sup id="fnref:648"><a class="footnote-ref" href="#fn:648" rel="footnote">648</a></sup></p>\r
-<p>Something<sup id="fnref:649"><a class="footnote-ref" href="#fn:649" rel="footnote">649</a></sup></p>\r
-<p>Something<sup id="fnref:650"><a class="footnote-ref" href="#fn:650" rel="footnote">650</a></sup></p>\r
-<p>Something<sup id="fnref:651"><a class="footnote-ref" href="#fn:651" rel="footnote">651</a></sup></p>\r
-<p>Something<sup id="fnref:652"><a class="footnote-ref" href="#fn:652" rel="footnote">652</a></sup></p>\r
-<p>Something<sup id="fnref:653"><a class="footnote-ref" href="#fn:653" rel="footnote">653</a></sup></p>\r
-<p>Something<sup id="fnref:654"><a class="footnote-ref" href="#fn:654" rel="footnote">654</a></sup></p>\r
-<p>Something<sup id="fnref:655"><a class="footnote-ref" href="#fn:655" rel="footnote">655</a></sup></p>\r
-<p>Something<sup id="fnref:656"><a class="footnote-ref" href="#fn:656" rel="footnote">656</a></sup></p>\r
-<p>Something<sup id="fnref:657"><a class="footnote-ref" href="#fn:657" rel="footnote">657</a></sup></p>\r
-<p>Something<sup id="fnref:658"><a class="footnote-ref" href="#fn:658" rel="footnote">658</a></sup></p>\r
-<p>Something<sup id="fnref:659"><a class="footnote-ref" href="#fn:659" rel="footnote">659</a></sup></p>\r
-<p>Something<sup id="fnref:660"><a class="footnote-ref" href="#fn:660" rel="footnote">660</a></sup></p>\r
-<p>Something<sup id="fnref:661"><a class="footnote-ref" href="#fn:661" rel="footnote">661</a></sup></p>\r
-<p>Something<sup id="fnref:662"><a class="footnote-ref" href="#fn:662" rel="footnote">662</a></sup></p>\r
-<p>Something<sup id="fnref:663"><a class="footnote-ref" href="#fn:663" rel="footnote">663</a></sup></p>\r
-<p>Something<sup id="fnref:664"><a class="footnote-ref" href="#fn:664" rel="footnote">664</a></sup></p>\r
-<p>Something<sup id="fnref:665"><a class="footnote-ref" href="#fn:665" rel="footnote">665</a></sup></p>\r
-<p>Something<sup id="fnref:666"><a class="footnote-ref" href="#fn:666" rel="footnote">666</a></sup></p>\r
-<p>Something<sup id="fnref:667"><a class="footnote-ref" href="#fn:667" rel="footnote">667</a></sup></p>\r
-<p>Something<sup id="fnref:668"><a class="footnote-ref" href="#fn:668" rel="footnote">668</a></sup></p>\r
-<p>Something<sup id="fnref:669"><a class="footnote-ref" href="#fn:669" rel="footnote">669</a></sup></p>\r
-<p>Something<sup id="fnref:670"><a class="footnote-ref" href="#fn:670" rel="footnote">670</a></sup></p>\r
-<p>Something<sup id="fnref:671"><a class="footnote-ref" href="#fn:671" rel="footnote">671</a></sup></p>\r
-<p>Something<sup id="fnref:672"><a class="footnote-ref" href="#fn:672" rel="footnote">672</a></sup></p>\r
-<p>Something<sup id="fnref:673"><a class="footnote-ref" href="#fn:673" rel="footnote">673</a></sup></p>\r
-<p>Something<sup id="fnref:674"><a class="footnote-ref" href="#fn:674" rel="footnote">674</a></sup></p>\r
-<p>Something<sup id="fnref:675"><a class="footnote-ref" href="#fn:675" rel="footnote">675</a></sup></p>\r
-<p>Something<sup id="fnref:676"><a class="footnote-ref" href="#fn:676" rel="footnote">676</a></sup></p>\r
-<p>Something<sup id="fnref:677"><a class="footnote-ref" href="#fn:677" rel="footnote">677</a></sup></p>\r
-<p>Something<sup id="fnref:678"><a class="footnote-ref" href="#fn:678" rel="footnote">678</a></sup></p>\r
-<p>Something<sup id="fnref:679"><a class="footnote-ref" href="#fn:679" rel="footnote">679</a></sup></p>\r
-<p>Something<sup id="fnref:680"><a class="footnote-ref" href="#fn:680" rel="footnote">680</a></sup></p>\r
-<p>Something<sup id="fnref:681"><a class="footnote-ref" href="#fn:681" rel="footnote">681</a></sup></p>\r
-<p>Something<sup id="fnref:682"><a class="footnote-ref" href="#fn:682" rel="footnote">682</a></sup></p>\r
-<p>Something<sup id="fnref:683"><a class="footnote-ref" href="#fn:683" rel="footnote">683</a></sup></p>\r
-<p>Something<sup id="fnref:684"><a class="footnote-ref" href="#fn:684" rel="footnote">684</a></sup></p>\r
-<p>Something<sup id="fnref:685"><a class="footnote-ref" href="#fn:685" rel="footnote">685</a></sup></p>\r
-<p>Something<sup id="fnref:686"><a class="footnote-ref" href="#fn:686" rel="footnote">686</a></sup></p>\r
-<p>Something<sup id="fnref:687"><a class="footnote-ref" href="#fn:687" rel="footnote">687</a></sup></p>\r
-<p>Something<sup id="fnref:688"><a class="footnote-ref" href="#fn:688" rel="footnote">688</a></sup></p>\r
-<p>Something<sup id="fnref:689"><a class="footnote-ref" href="#fn:689" rel="footnote">689</a></sup></p>\r
-<p>Something<sup id="fnref:690"><a class="footnote-ref" href="#fn:690" rel="footnote">690</a></sup></p>\r
-<p>Something<sup id="fnref:691"><a class="footnote-ref" href="#fn:691" rel="footnote">691</a></sup></p>\r
-<p>Something<sup id="fnref:692"><a class="footnote-ref" href="#fn:692" rel="footnote">692</a></sup></p>\r
-<p>Something<sup id="fnref:693"><a class="footnote-ref" href="#fn:693" rel="footnote">693</a></sup></p>\r
-<p>Something<sup id="fnref:694"><a class="footnote-ref" href="#fn:694" rel="footnote">694</a></sup></p>\r
-<p>Something<sup id="fnref:695"><a class="footnote-ref" href="#fn:695" rel="footnote">695</a></sup></p>\r
-<p>Something<sup id="fnref:696"><a class="footnote-ref" href="#fn:696" rel="footnote">696</a></sup></p>\r
-<p>Something<sup id="fnref:697"><a class="footnote-ref" href="#fn:697" rel="footnote">697</a></sup></p>\r
-<p>Something<sup id="fnref:698"><a class="footnote-ref" href="#fn:698" rel="footnote">698</a></sup></p>\r
-<p>Something<sup id="fnref:699"><a class="footnote-ref" href="#fn:699" rel="footnote">699</a></sup></p>\r
-<p>Something<sup id="fnref:700"><a class="footnote-ref" href="#fn:700" rel="footnote">700</a></sup></p>\r
-<p>Something<sup id="fnref:701"><a class="footnote-ref" href="#fn:701" rel="footnote">701</a></sup></p>\r
-<p>Something<sup id="fnref:702"><a class="footnote-ref" href="#fn:702" rel="footnote">702</a></sup></p>\r
-<p>Something<sup id="fnref:703"><a class="footnote-ref" href="#fn:703" rel="footnote">703</a></sup></p>\r
-<p>Something<sup id="fnref:704"><a class="footnote-ref" href="#fn:704" rel="footnote">704</a></sup></p>\r
-<p>Something<sup id="fnref:705"><a class="footnote-ref" href="#fn:705" rel="footnote">705</a></sup></p>\r
-<p>Something<sup id="fnref:706"><a class="footnote-ref" href="#fn:706" rel="footnote">706</a></sup></p>\r
-<p>Something<sup id="fnref:707"><a class="footnote-ref" href="#fn:707" rel="footnote">707</a></sup></p>\r
-<p>Something<sup id="fnref:708"><a class="footnote-ref" href="#fn:708" rel="footnote">708</a></sup></p>\r
-<p>Something<sup id="fnref:709"><a class="footnote-ref" href="#fn:709" rel="footnote">709</a></sup></p>\r
-<p>Something<sup id="fnref:710"><a class="footnote-ref" href="#fn:710" rel="footnote">710</a></sup></p>\r
-<p>Something<sup id="fnref:711"><a class="footnote-ref" href="#fn:711" rel="footnote">711</a></sup></p>\r
-<p>Something<sup id="fnref:712"><a class="footnote-ref" href="#fn:712" rel="footnote">712</a></sup></p>\r
-<p>Something<sup id="fnref:713"><a class="footnote-ref" href="#fn:713" rel="footnote">713</a></sup></p>\r
-<p>Something<sup id="fnref:714"><a class="footnote-ref" href="#fn:714" rel="footnote">714</a></sup></p>\r
-<p>Something<sup id="fnref:715"><a class="footnote-ref" href="#fn:715" rel="footnote">715</a></sup></p>\r
-<p>Something<sup id="fnref:716"><a class="footnote-ref" href="#fn:716" rel="footnote">716</a></sup></p>\r
-<p>Something<sup id="fnref:717"><a class="footnote-ref" href="#fn:717" rel="footnote">717</a></sup></p>\r
-<p>Something<sup id="fnref:718"><a class="footnote-ref" href="#fn:718" rel="footnote">718</a></sup></p>\r
-<p>Something<sup id="fnref:719"><a class="footnote-ref" href="#fn:719" rel="footnote">719</a></sup></p>\r
-<p>Something<sup id="fnref:720"><a class="footnote-ref" href="#fn:720" rel="footnote">720</a></sup></p>\r
-<p>Something<sup id="fnref:721"><a class="footnote-ref" href="#fn:721" rel="footnote">721</a></sup></p>\r
-<p>Something<sup id="fnref:722"><a class="footnote-ref" href="#fn:722" rel="footnote">722</a></sup></p>\r
-<p>Something<sup id="fnref:723"><a class="footnote-ref" href="#fn:723" rel="footnote">723</a></sup></p>\r
-<p>Something<sup id="fnref:724"><a class="footnote-ref" href="#fn:724" rel="footnote">724</a></sup></p>\r
-<p>Something<sup id="fnref:725"><a class="footnote-ref" href="#fn:725" rel="footnote">725</a></sup></p>\r
-<p>Something<sup id="fnref:726"><a class="footnote-ref" href="#fn:726" rel="footnote">726</a></sup></p>\r
-<p>Something<sup id="fnref:727"><a class="footnote-ref" href="#fn:727" rel="footnote">727</a></sup></p>\r
-<p>Something<sup id="fnref:728"><a class="footnote-ref" href="#fn:728" rel="footnote">728</a></sup></p>\r
-<p>Something<sup id="fnref:729"><a class="footnote-ref" href="#fn:729" rel="footnote">729</a></sup></p>\r
-<p>Something<sup id="fnref:730"><a class="footnote-ref" href="#fn:730" rel="footnote">730</a></sup></p>\r
-<p>Something<sup id="fnref:731"><a class="footnote-ref" href="#fn:731" rel="footnote">731</a></sup></p>\r
-<p>Something<sup id="fnref:732"><a class="footnote-ref" href="#fn:732" rel="footnote">732</a></sup></p>\r
-<p>Something<sup id="fnref:733"><a class="footnote-ref" href="#fn:733" rel="footnote">733</a></sup></p>\r
-<p>Something<sup id="fnref:734"><a class="footnote-ref" href="#fn:734" rel="footnote">734</a></sup></p>\r
-<p>Something<sup id="fnref:735"><a class="footnote-ref" href="#fn:735" rel="footnote">735</a></sup></p>\r
-<p>Something<sup id="fnref:736"><a class="footnote-ref" href="#fn:736" rel="footnote">736</a></sup></p>\r
-<p>Something<sup id="fnref:737"><a class="footnote-ref" href="#fn:737" rel="footnote">737</a></sup></p>\r
-<p>Something<sup id="fnref:738"><a class="footnote-ref" href="#fn:738" rel="footnote">738</a></sup></p>\r
-<p>Something<sup id="fnref:739"><a class="footnote-ref" href="#fn:739" rel="footnote">739</a></sup></p>\r
-<p>Something<sup id="fnref:740"><a class="footnote-ref" href="#fn:740" rel="footnote">740</a></sup></p>\r
-<p>Something<sup id="fnref:741"><a class="footnote-ref" href="#fn:741" rel="footnote">741</a></sup></p>\r
-<p>Something<sup id="fnref:742"><a class="footnote-ref" href="#fn:742" rel="footnote">742</a></sup></p>\r
-<p>Something<sup id="fnref:743"><a class="footnote-ref" href="#fn:743" rel="footnote">743</a></sup></p>\r
-<p>Something<sup id="fnref:744"><a class="footnote-ref" href="#fn:744" rel="footnote">744</a></sup></p>\r
-<p>Something<sup id="fnref:745"><a class="footnote-ref" href="#fn:745" rel="footnote">745</a></sup></p>\r
-<p>Something<sup id="fnref:746"><a class="footnote-ref" href="#fn:746" rel="footnote">746</a></sup></p>\r
-<p>Something<sup id="fnref:747"><a class="footnote-ref" href="#fn:747" rel="footnote">747</a></sup></p>\r
-<p>Something<sup id="fnref:748"><a class="footnote-ref" href="#fn:748" rel="footnote">748</a></sup></p>\r
-<p>Something<sup id="fnref:749"><a class="footnote-ref" href="#fn:749" rel="footnote">749</a></sup></p>\r
-<p>Something<sup id="fnref:750"><a class="footnote-ref" href="#fn:750" rel="footnote">750</a></sup></p>\r
-<p>Something<sup id="fnref:751"><a class="footnote-ref" href="#fn:751" rel="footnote">751</a></sup></p>\r
-<p>Something<sup id="fnref:752"><a class="footnote-ref" href="#fn:752" rel="footnote">752</a></sup></p>\r
-<p>Something<sup id="fnref:753"><a class="footnote-ref" href="#fn:753" rel="footnote">753</a></sup></p>\r
-<p>Something<sup id="fnref:754"><a class="footnote-ref" href="#fn:754" rel="footnote">754</a></sup></p>\r
-<p>Something<sup id="fnref:755"><a class="footnote-ref" href="#fn:755" rel="footnote">755</a></sup></p>\r
-<p>Something<sup id="fnref:756"><a class="footnote-ref" href="#fn:756" rel="footnote">756</a></sup></p>\r
-<p>Something<sup id="fnref:757"><a class="footnote-ref" href="#fn:757" rel="footnote">757</a></sup></p>\r
-<p>Something<sup id="fnref:758"><a class="footnote-ref" href="#fn:758" rel="footnote">758</a></sup></p>\r
-<p>Something<sup id="fnref:759"><a class="footnote-ref" href="#fn:759" rel="footnote">759</a></sup></p>\r
-<p>Something<sup id="fnref:760"><a class="footnote-ref" href="#fn:760" rel="footnote">760</a></sup></p>\r
-<p>Something<sup id="fnref:761"><a class="footnote-ref" href="#fn:761" rel="footnote">761</a></sup></p>\r
-<p>Something<sup id="fnref:762"><a class="footnote-ref" href="#fn:762" rel="footnote">762</a></sup></p>\r
-<p>Something<sup id="fnref:763"><a class="footnote-ref" href="#fn:763" rel="footnote">763</a></sup></p>\r
-<p>Something<sup id="fnref:764"><a class="footnote-ref" href="#fn:764" rel="footnote">764</a></sup></p>\r
-<p>Something<sup id="fnref:765"><a class="footnote-ref" href="#fn:765" rel="footnote">765</a></sup></p>\r
-<p>Something<sup id="fnref:766"><a class="footnote-ref" href="#fn:766" rel="footnote">766</a></sup></p>\r
-<p>Something<sup id="fnref:767"><a class="footnote-ref" href="#fn:767" rel="footnote">767</a></sup></p>\r
-<p>Something<sup id="fnref:768"><a class="footnote-ref" href="#fn:768" rel="footnote">768</a></sup></p>\r
-<p>Something<sup id="fnref:769"><a class="footnote-ref" href="#fn:769" rel="footnote">769</a></sup></p>\r
-<p>Something<sup id="fnref:770"><a class="footnote-ref" href="#fn:770" rel="footnote">770</a></sup></p>\r
-<p>Something<sup id="fnref:771"><a class="footnote-ref" href="#fn:771" rel="footnote">771</a></sup></p>\r
-<p>Something<sup id="fnref:772"><a class="footnote-ref" href="#fn:772" rel="footnote">772</a></sup></p>\r
-<p>Something<sup id="fnref:773"><a class="footnote-ref" href="#fn:773" rel="footnote">773</a></sup></p>\r
-<p>Something<sup id="fnref:774"><a class="footnote-ref" href="#fn:774" rel="footnote">774</a></sup></p>\r
-<p>Something<sup id="fnref:775"><a class="footnote-ref" href="#fn:775" rel="footnote">775</a></sup></p>\r
-<p>Something<sup id="fnref:776"><a class="footnote-ref" href="#fn:776" rel="footnote">776</a></sup></p>\r
-<p>Something<sup id="fnref:777"><a class="footnote-ref" href="#fn:777" rel="footnote">777</a></sup></p>\r
-<p>Something<sup id="fnref:778"><a class="footnote-ref" href="#fn:778" rel="footnote">778</a></sup></p>\r
-<p>Something<sup id="fnref:779"><a class="footnote-ref" href="#fn:779" rel="footnote">779</a></sup></p>\r
-<p>Something<sup id="fnref:780"><a class="footnote-ref" href="#fn:780" rel="footnote">780</a></sup></p>\r
-<p>Something<sup id="fnref:781"><a class="footnote-ref" href="#fn:781" rel="footnote">781</a></sup></p>\r
-<p>Something<sup id="fnref:782"><a class="footnote-ref" href="#fn:782" rel="footnote">782</a></sup></p>\r
-<p>Something<sup id="fnref:783"><a class="footnote-ref" href="#fn:783" rel="footnote">783</a></sup></p>\r
-<p>Something<sup id="fnref:784"><a class="footnote-ref" href="#fn:784" rel="footnote">784</a></sup></p>\r
-<p>Something<sup id="fnref:785"><a class="footnote-ref" href="#fn:785" rel="footnote">785</a></sup></p>\r
-<p>Something<sup id="fnref:786"><a class="footnote-ref" href="#fn:786" rel="footnote">786</a></sup></p>\r
-<p>Something<sup id="fnref:787"><a class="footnote-ref" href="#fn:787" rel="footnote">787</a></sup></p>\r
-<p>Something<sup id="fnref:788"><a class="footnote-ref" href="#fn:788" rel="footnote">788</a></sup></p>\r
-<p>Something<sup id="fnref:789"><a class="footnote-ref" href="#fn:789" rel="footnote">789</a></sup></p>\r
-<p>Something<sup id="fnref:790"><a class="footnote-ref" href="#fn:790" rel="footnote">790</a></sup></p>\r
-<p>Something<sup id="fnref:791"><a class="footnote-ref" href="#fn:791" rel="footnote">791</a></sup></p>\r
-<p>Something<sup id="fnref:792"><a class="footnote-ref" href="#fn:792" rel="footnote">792</a></sup></p>\r
-<p>Something<sup id="fnref:793"><a class="footnote-ref" href="#fn:793" rel="footnote">793</a></sup></p>\r
-<p>Something<sup id="fnref:794"><a class="footnote-ref" href="#fn:794" rel="footnote">794</a></sup></p>\r
-<p>Something<sup id="fnref:795"><a class="footnote-ref" href="#fn:795" rel="footnote">795</a></sup></p>\r
-<p>Something<sup id="fnref:796"><a class="footnote-ref" href="#fn:796" rel="footnote">796</a></sup></p>\r
-<p>Something<sup id="fnref:797"><a class="footnote-ref" href="#fn:797" rel="footnote">797</a></sup></p>\r
-<p>Something<sup id="fnref:798"><a class="footnote-ref" href="#fn:798" rel="footnote">798</a></sup></p>\r
-<p>Something<sup id="fnref:799"><a class="footnote-ref" href="#fn:799" rel="footnote">799</a></sup></p>\r
-<p>Something<sup id="fnref:800"><a class="footnote-ref" href="#fn:800" rel="footnote">800</a></sup></p>\r
-<p>Something<sup id="fnref:801"><a class="footnote-ref" href="#fn:801" rel="footnote">801</a></sup></p>\r
-<p>Something<sup id="fnref:802"><a class="footnote-ref" href="#fn:802" rel="footnote">802</a></sup></p>\r
-<p>Something<sup id="fnref:803"><a class="footnote-ref" href="#fn:803" rel="footnote">803</a></sup></p>\r
-<p>Something<sup id="fnref:804"><a class="footnote-ref" href="#fn:804" rel="footnote">804</a></sup></p>\r
-<p>Something<sup id="fnref:805"><a class="footnote-ref" href="#fn:805" rel="footnote">805</a></sup></p>\r
-<p>Something<sup id="fnref:806"><a class="footnote-ref" href="#fn:806" rel="footnote">806</a></sup></p>\r
-<p>Something<sup id="fnref:807"><a class="footnote-ref" href="#fn:807" rel="footnote">807</a></sup></p>\r
-<p>Something<sup id="fnref:808"><a class="footnote-ref" href="#fn:808" rel="footnote">808</a></sup></p>\r
-<p>Something<sup id="fnref:809"><a class="footnote-ref" href="#fn:809" rel="footnote">809</a></sup></p>\r
-<p>Something<sup id="fnref:810"><a class="footnote-ref" href="#fn:810" rel="footnote">810</a></sup></p>\r
-<p>Something<sup id="fnref:811"><a class="footnote-ref" href="#fn:811" rel="footnote">811</a></sup></p>\r
-<p>Something<sup id="fnref:812"><a class="footnote-ref" href="#fn:812" rel="footnote">812</a></sup></p>\r
-<p>Something<sup id="fnref:813"><a class="footnote-ref" href="#fn:813" rel="footnote">813</a></sup></p>\r
-<p>Something<sup id="fnref:814"><a class="footnote-ref" href="#fn:814" rel="footnote">814</a></sup></p>\r
-<p>Something<sup id="fnref:815"><a class="footnote-ref" href="#fn:815" rel="footnote">815</a></sup></p>\r
-<p>Something<sup id="fnref:816"><a class="footnote-ref" href="#fn:816" rel="footnote">816</a></sup></p>\r
-<p>Something<sup id="fnref:817"><a class="footnote-ref" href="#fn:817" rel="footnote">817</a></sup></p>\r
-<p>Something<sup id="fnref:818"><a class="footnote-ref" href="#fn:818" rel="footnote">818</a></sup></p>\r
-<p>Something<sup id="fnref:819"><a class="footnote-ref" href="#fn:819" rel="footnote">819</a></sup></p>\r
-<p>Something<sup id="fnref:820"><a class="footnote-ref" href="#fn:820" rel="footnote">820</a></sup></p>\r
-<p>Something<sup id="fnref:821"><a class="footnote-ref" href="#fn:821" rel="footnote">821</a></sup></p>\r
-<p>Something<sup id="fnref:822"><a class="footnote-ref" href="#fn:822" rel="footnote">822</a></sup></p>\r
-<p>Something<sup id="fnref:823"><a class="footnote-ref" href="#fn:823" rel="footnote">823</a></sup></p>\r
-<p>Something<sup id="fnref:824"><a class="footnote-ref" href="#fn:824" rel="footnote">824</a></sup></p>\r
-<p>Something<sup id="fnref:825"><a class="footnote-ref" href="#fn:825" rel="footnote">825</a></sup></p>\r
-<p>Something<sup id="fnref:826"><a class="footnote-ref" href="#fn:826" rel="footnote">826</a></sup></p>\r
-<p>Something<sup id="fnref:827"><a class="footnote-ref" href="#fn:827" rel="footnote">827</a></sup></p>\r
-<p>Something<sup id="fnref:828"><a class="footnote-ref" href="#fn:828" rel="footnote">828</a></sup></p>\r
-<p>Something<sup id="fnref:829"><a class="footnote-ref" href="#fn:829" rel="footnote">829</a></sup></p>\r
-<p>Something<sup id="fnref:830"><a class="footnote-ref" href="#fn:830" rel="footnote">830</a></sup></p>\r
-<p>Something<sup id="fnref:831"><a class="footnote-ref" href="#fn:831" rel="footnote">831</a></sup></p>\r
-<p>Something<sup id="fnref:832"><a class="footnote-ref" href="#fn:832" rel="footnote">832</a></sup></p>\r
-<p>Something<sup id="fnref:833"><a class="footnote-ref" href="#fn:833" rel="footnote">833</a></sup></p>\r
-<p>Something<sup id="fnref:834"><a class="footnote-ref" href="#fn:834" rel="footnote">834</a></sup></p>\r
-<p>Something<sup id="fnref:835"><a class="footnote-ref" href="#fn:835" rel="footnote">835</a></sup></p>\r
-<p>Something<sup id="fnref:836"><a class="footnote-ref" href="#fn:836" rel="footnote">836</a></sup></p>\r
-<p>Something<sup id="fnref:837"><a class="footnote-ref" href="#fn:837" rel="footnote">837</a></sup></p>\r
-<p>Something<sup id="fnref:838"><a class="footnote-ref" href="#fn:838" rel="footnote">838</a></sup></p>\r
-<p>Something<sup id="fnref:839"><a class="footnote-ref" href="#fn:839" rel="footnote">839</a></sup></p>\r
-<p>Something<sup id="fnref:840"><a class="footnote-ref" href="#fn:840" rel="footnote">840</a></sup></p>\r
-<p>Something<sup id="fnref:841"><a class="footnote-ref" href="#fn:841" rel="footnote">841</a></sup></p>\r
-<p>Something<sup id="fnref:842"><a class="footnote-ref" href="#fn:842" rel="footnote">842</a></sup></p>\r
-<p>Something<sup id="fnref:843"><a class="footnote-ref" href="#fn:843" rel="footnote">843</a></sup></p>\r
-<p>Something<sup id="fnref:844"><a class="footnote-ref" href="#fn:844" rel="footnote">844</a></sup></p>\r
-<p>Something<sup id="fnref:845"><a class="footnote-ref" href="#fn:845" rel="footnote">845</a></sup></p>\r
-<p>Something<sup id="fnref:846"><a class="footnote-ref" href="#fn:846" rel="footnote">846</a></sup></p>\r
-<p>Something<sup id="fnref:847"><a class="footnote-ref" href="#fn:847" rel="footnote">847</a></sup></p>\r
-<p>Something<sup id="fnref:848"><a class="footnote-ref" href="#fn:848" rel="footnote">848</a></sup></p>\r
-<p>Something<sup id="fnref:849"><a class="footnote-ref" href="#fn:849" rel="footnote">849</a></sup></p>\r
-<p>Something<sup id="fnref:850"><a class="footnote-ref" href="#fn:850" rel="footnote">850</a></sup></p>\r
-<p>Something<sup id="fnref:851"><a class="footnote-ref" href="#fn:851" rel="footnote">851</a></sup></p>\r
-<p>Something<sup id="fnref:852"><a class="footnote-ref" href="#fn:852" rel="footnote">852</a></sup></p>\r
-<p>Something<sup id="fnref:853"><a class="footnote-ref" href="#fn:853" rel="footnote">853</a></sup></p>\r
-<p>Something<sup id="fnref:854"><a class="footnote-ref" href="#fn:854" rel="footnote">854</a></sup></p>\r
-<p>Something<sup id="fnref:855"><a class="footnote-ref" href="#fn:855" rel="footnote">855</a></sup></p>\r
-<p>Something<sup id="fnref:856"><a class="footnote-ref" href="#fn:856" rel="footnote">856</a></sup></p>\r
-<p>Something<sup id="fnref:857"><a class="footnote-ref" href="#fn:857" rel="footnote">857</a></sup></p>\r
-<p>Something<sup id="fnref:858"><a class="footnote-ref" href="#fn:858" rel="footnote">858</a></sup></p>\r
-<p>Something<sup id="fnref:859"><a class="footnote-ref" href="#fn:859" rel="footnote">859</a></sup></p>\r
-<p>Something<sup id="fnref:860"><a class="footnote-ref" href="#fn:860" rel="footnote">860</a></sup></p>\r
-<p>Something<sup id="fnref:861"><a class="footnote-ref" href="#fn:861" rel="footnote">861</a></sup></p>\r
-<p>Something<sup id="fnref:862"><a class="footnote-ref" href="#fn:862" rel="footnote">862</a></sup></p>\r
-<p>Something<sup id="fnref:863"><a class="footnote-ref" href="#fn:863" rel="footnote">863</a></sup></p>\r
-<p>Something<sup id="fnref:864"><a class="footnote-ref" href="#fn:864" rel="footnote">864</a></sup></p>\r
-<p>Something<sup id="fnref:865"><a class="footnote-ref" href="#fn:865" rel="footnote">865</a></sup></p>\r
-<p>Something<sup id="fnref:866"><a class="footnote-ref" href="#fn:866" rel="footnote">866</a></sup></p>\r
-<p>Something<sup id="fnref:867"><a class="footnote-ref" href="#fn:867" rel="footnote">867</a></sup></p>\r
-<p>Something<sup id="fnref:868"><a class="footnote-ref" href="#fn:868" rel="footnote">868</a></sup></p>\r
-<p>Something<sup id="fnref:869"><a class="footnote-ref" href="#fn:869" rel="footnote">869</a></sup></p>\r
-<p>Something<sup id="fnref:870"><a class="footnote-ref" href="#fn:870" rel="footnote">870</a></sup></p>\r
-<p>Something<sup id="fnref:871"><a class="footnote-ref" href="#fn:871" rel="footnote">871</a></sup></p>\r
-<p>Something<sup id="fnref:872"><a class="footnote-ref" href="#fn:872" rel="footnote">872</a></sup></p>\r
-<p>Something<sup id="fnref:873"><a class="footnote-ref" href="#fn:873" rel="footnote">873</a></sup></p>\r
-<p>Something<sup id="fnref:874"><a class="footnote-ref" href="#fn:874" rel="footnote">874</a></sup></p>\r
-<p>Something<sup id="fnref:875"><a class="footnote-ref" href="#fn:875" rel="footnote">875</a></sup></p>\r
-<p>Something<sup id="fnref:876"><a class="footnote-ref" href="#fn:876" rel="footnote">876</a></sup></p>\r
-<p>Something<sup id="fnref:877"><a class="footnote-ref" href="#fn:877" rel="footnote">877</a></sup></p>\r
-<p>Something<sup id="fnref:878"><a class="footnote-ref" href="#fn:878" rel="footnote">878</a></sup></p>\r
-<p>Something<sup id="fnref:879"><a class="footnote-ref" href="#fn:879" rel="footnote">879</a></sup></p>\r
-<p>Something<sup id="fnref:880"><a class="footnote-ref" href="#fn:880" rel="footnote">880</a></sup></p>\r
-<p>Something<sup id="fnref:881"><a class="footnote-ref" href="#fn:881" rel="footnote">881</a></sup></p>\r
-<p>Something<sup id="fnref:882"><a class="footnote-ref" href="#fn:882" rel="footnote">882</a></sup></p>\r
-<p>Something<sup id="fnref:883"><a class="footnote-ref" href="#fn:883" rel="footnote">883</a></sup></p>\r
-<p>Something<sup id="fnref:884"><a class="footnote-ref" href="#fn:884" rel="footnote">884</a></sup></p>\r
-<p>Something<sup id="fnref:885"><a class="footnote-ref" href="#fn:885" rel="footnote">885</a></sup></p>\r
-<p>Something<sup id="fnref:886"><a class="footnote-ref" href="#fn:886" rel="footnote">886</a></sup></p>\r
-<p>Something<sup id="fnref:887"><a class="footnote-ref" href="#fn:887" rel="footnote">887</a></sup></p>\r
-<p>Something<sup id="fnref:888"><a class="footnote-ref" href="#fn:888" rel="footnote">888</a></sup></p>\r
-<p>Something<sup id="fnref:889"><a class="footnote-ref" href="#fn:889" rel="footnote">889</a></sup></p>\r
-<p>Something<sup id="fnref:890"><a class="footnote-ref" href="#fn:890" rel="footnote">890</a></sup></p>\r
-<p>Something<sup id="fnref:891"><a class="footnote-ref" href="#fn:891" rel="footnote">891</a></sup></p>\r
-<p>Something<sup id="fnref:892"><a class="footnote-ref" href="#fn:892" rel="footnote">892</a></sup></p>\r
-<p>Something<sup id="fnref:893"><a class="footnote-ref" href="#fn:893" rel="footnote">893</a></sup></p>\r
-<p>Something<sup id="fnref:894"><a class="footnote-ref" href="#fn:894" rel="footnote">894</a></sup></p>\r
-<p>Something<sup id="fnref:895"><a class="footnote-ref" href="#fn:895" rel="footnote">895</a></sup></p>\r
-<p>Something<sup id="fnref:896"><a class="footnote-ref" href="#fn:896" rel="footnote">896</a></sup></p>\r
-<p>Something<sup id="fnref:897"><a class="footnote-ref" href="#fn:897" rel="footnote">897</a></sup></p>\r
-<p>Something<sup id="fnref:898"><a class="footnote-ref" href="#fn:898" rel="footnote">898</a></sup></p>\r
-<p>Something<sup id="fnref:899"><a class="footnote-ref" href="#fn:899" rel="footnote">899</a></sup></p>\r
-<p>Something<sup id="fnref:900"><a class="footnote-ref" href="#fn:900" rel="footnote">900</a></sup></p>\r
-<p>Something<sup id="fnref:901"><a class="footnote-ref" href="#fn:901" rel="footnote">901</a></sup></p>\r
-<p>Something<sup id="fnref:902"><a class="footnote-ref" href="#fn:902" rel="footnote">902</a></sup></p>\r
-<p>Something<sup id="fnref:903"><a class="footnote-ref" href="#fn:903" rel="footnote">903</a></sup></p>\r
-<p>Something<sup id="fnref:904"><a class="footnote-ref" href="#fn:904" rel="footnote">904</a></sup></p>\r
-<p>Something<sup id="fnref:905"><a class="footnote-ref" href="#fn:905" rel="footnote">905</a></sup></p>\r
-<p>Something<sup id="fnref:906"><a class="footnote-ref" href="#fn:906" rel="footnote">906</a></sup></p>\r
-<p>Something<sup id="fnref:907"><a class="footnote-ref" href="#fn:907" rel="footnote">907</a></sup></p>\r
-<p>Something<sup id="fnref:908"><a class="footnote-ref" href="#fn:908" rel="footnote">908</a></sup></p>\r
-<p>Something<sup id="fnref:909"><a class="footnote-ref" href="#fn:909" rel="footnote">909</a></sup></p>\r
-<p>Something<sup id="fnref:910"><a class="footnote-ref" href="#fn:910" rel="footnote">910</a></sup></p>\r
-<p>Something<sup id="fnref:911"><a class="footnote-ref" href="#fn:911" rel="footnote">911</a></sup></p>\r
-<p>Something<sup id="fnref:912"><a class="footnote-ref" href="#fn:912" rel="footnote">912</a></sup></p>\r
-<p>Something<sup id="fnref:913"><a class="footnote-ref" href="#fn:913" rel="footnote">913</a></sup></p>\r
-<p>Something<sup id="fnref:914"><a class="footnote-ref" href="#fn:914" rel="footnote">914</a></sup></p>\r
-<p>Something<sup id="fnref:915"><a class="footnote-ref" href="#fn:915" rel="footnote">915</a></sup></p>\r
-<p>Something<sup id="fnref:916"><a class="footnote-ref" href="#fn:916" rel="footnote">916</a></sup></p>\r
-<p>Something<sup id="fnref:917"><a class="footnote-ref" href="#fn:917" rel="footnote">917</a></sup></p>\r
-<p>Something<sup id="fnref:918"><a class="footnote-ref" href="#fn:918" rel="footnote">918</a></sup></p>\r
-<p>Something<sup id="fnref:919"><a class="footnote-ref" href="#fn:919" rel="footnote">919</a></sup></p>\r
-<p>Something<sup id="fnref:920"><a class="footnote-ref" href="#fn:920" rel="footnote">920</a></sup></p>\r
-<p>Something<sup id="fnref:921"><a class="footnote-ref" href="#fn:921" rel="footnote">921</a></sup></p>\r
-<p>Something<sup id="fnref:922"><a class="footnote-ref" href="#fn:922" rel="footnote">922</a></sup></p>\r
-<p>Something<sup id="fnref:923"><a class="footnote-ref" href="#fn:923" rel="footnote">923</a></sup></p>\r
-<p>Something<sup id="fnref:924"><a class="footnote-ref" href="#fn:924" rel="footnote">924</a></sup></p>\r
-<p>Something<sup id="fnref:925"><a class="footnote-ref" href="#fn:925" rel="footnote">925</a></sup></p>\r
-<p>Something<sup id="fnref:926"><a class="footnote-ref" href="#fn:926" rel="footnote">926</a></sup></p>\r
-<p>Something<sup id="fnref:927"><a class="footnote-ref" href="#fn:927" rel="footnote">927</a></sup></p>\r
-<p>Something<sup id="fnref:928"><a class="footnote-ref" href="#fn:928" rel="footnote">928</a></sup></p>\r
-<p>Something<sup id="fnref:929"><a class="footnote-ref" href="#fn:929" rel="footnote">929</a></sup></p>\r
-<p>Something<sup id="fnref:930"><a class="footnote-ref" href="#fn:930" rel="footnote">930</a></sup></p>\r
-<p>Something<sup id="fnref:931"><a class="footnote-ref" href="#fn:931" rel="footnote">931</a></sup></p>\r
-<p>Something<sup id="fnref:932"><a class="footnote-ref" href="#fn:932" rel="footnote">932</a></sup></p>\r
-<p>Something<sup id="fnref:933"><a class="footnote-ref" href="#fn:933" rel="footnote">933</a></sup></p>\r
-<p>Something<sup id="fnref:934"><a class="footnote-ref" href="#fn:934" rel="footnote">934</a></sup></p>\r
-<p>Something<sup id="fnref:935"><a class="footnote-ref" href="#fn:935" rel="footnote">935</a></sup></p>\r
-<p>Something<sup id="fnref:936"><a class="footnote-ref" href="#fn:936" rel="footnote">936</a></sup></p>\r
-<p>Something<sup id="fnref:937"><a class="footnote-ref" href="#fn:937" rel="footnote">937</a></sup></p>\r
-<p>Something<sup id="fnref:938"><a class="footnote-ref" href="#fn:938" rel="footnote">938</a></sup></p>\r
-<p>Something<sup id="fnref:939"><a class="footnote-ref" href="#fn:939" rel="footnote">939</a></sup></p>\r
-<p>Something<sup id="fnref:940"><a class="footnote-ref" href="#fn:940" rel="footnote">940</a></sup></p>\r
-<p>Something<sup id="fnref:941"><a class="footnote-ref" href="#fn:941" rel="footnote">941</a></sup></p>\r
-<p>Something<sup id="fnref:942"><a class="footnote-ref" href="#fn:942" rel="footnote">942</a></sup></p>\r
-<p>Something<sup id="fnref:943"><a class="footnote-ref" href="#fn:943" rel="footnote">943</a></sup></p>\r
-<p>Something<sup id="fnref:944"><a class="footnote-ref" href="#fn:944" rel="footnote">944</a></sup></p>\r
-<p>Something<sup id="fnref:945"><a class="footnote-ref" href="#fn:945" rel="footnote">945</a></sup></p>\r
-<p>Something<sup id="fnref:946"><a class="footnote-ref" href="#fn:946" rel="footnote">946</a></sup></p>\r
-<p>Something<sup id="fnref:947"><a class="footnote-ref" href="#fn:947" rel="footnote">947</a></sup></p>\r
-<p>Something<sup id="fnref:948"><a class="footnote-ref" href="#fn:948" rel="footnote">948</a></sup></p>\r
-<p>Something<sup id="fnref:949"><a class="footnote-ref" href="#fn:949" rel="footnote">949</a></sup></p>\r
-<p>Something<sup id="fnref:950"><a class="footnote-ref" href="#fn:950" rel="footnote">950</a></sup></p>\r
-<p>Something<sup id="fnref:951"><a class="footnote-ref" href="#fn:951" rel="footnote">951</a></sup></p>\r
-<p>Something<sup id="fnref:952"><a class="footnote-ref" href="#fn:952" rel="footnote">952</a></sup></p>\r
-<p>Something<sup id="fnref:953"><a class="footnote-ref" href="#fn:953" rel="footnote">953</a></sup></p>\r
-<p>Something<sup id="fnref:954"><a class="footnote-ref" href="#fn:954" rel="footnote">954</a></sup></p>\r
-<p>Something<sup id="fnref:955"><a class="footnote-ref" href="#fn:955" rel="footnote">955</a></sup></p>\r
-<p>Something<sup id="fnref:956"><a class="footnote-ref" href="#fn:956" rel="footnote">956</a></sup></p>\r
-<p>Something<sup id="fnref:957"><a class="footnote-ref" href="#fn:957" rel="footnote">957</a></sup></p>\r
-<p>Something<sup id="fnref:958"><a class="footnote-ref" href="#fn:958" rel="footnote">958</a></sup></p>\r
-<p>Something<sup id="fnref:959"><a class="footnote-ref" href="#fn:959" rel="footnote">959</a></sup></p>\r
-<p>Something<sup id="fnref:960"><a class="footnote-ref" href="#fn:960" rel="footnote">960</a></sup></p>\r
-<p>Something<sup id="fnref:961"><a class="footnote-ref" href="#fn:961" rel="footnote">961</a></sup></p>\r
-<p>Something<sup id="fnref:962"><a class="footnote-ref" href="#fn:962" rel="footnote">962</a></sup></p>\r
-<p>Something<sup id="fnref:963"><a class="footnote-ref" href="#fn:963" rel="footnote">963</a></sup></p>\r
-<p>Something<sup id="fnref:964"><a class="footnote-ref" href="#fn:964" rel="footnote">964</a></sup></p>\r
-<p>Something<sup id="fnref:965"><a class="footnote-ref" href="#fn:965" rel="footnote">965</a></sup></p>\r
-<p>Something<sup id="fnref:966"><a class="footnote-ref" href="#fn:966" rel="footnote">966</a></sup></p>\r
-<p>Something<sup id="fnref:967"><a class="footnote-ref" href="#fn:967" rel="footnote">967</a></sup></p>\r
-<p>Something<sup id="fnref:968"><a class="footnote-ref" href="#fn:968" rel="footnote">968</a></sup></p>\r
-<p>Something<sup id="fnref:969"><a class="footnote-ref" href="#fn:969" rel="footnote">969</a></sup></p>\r
-<p>Something<sup id="fnref:970"><a class="footnote-ref" href="#fn:970" rel="footnote">970</a></sup></p>\r
-<p>Something<sup id="fnref:971"><a class="footnote-ref" href="#fn:971" rel="footnote">971</a></sup></p>\r
-<p>Something<sup id="fnref:972"><a class="footnote-ref" href="#fn:972" rel="footnote">972</a></sup></p>\r
-<p>Something<sup id="fnref:973"><a class="footnote-ref" href="#fn:973" rel="footnote">973</a></sup></p>\r
-<p>Something<sup id="fnref:974"><a class="footnote-ref" href="#fn:974" rel="footnote">974</a></sup></p>\r
-<p>Something<sup id="fnref:975"><a class="footnote-ref" href="#fn:975" rel="footnote">975</a></sup></p>\r
-<p>Something<sup id="fnref:976"><a class="footnote-ref" href="#fn:976" rel="footnote">976</a></sup></p>\r
-<p>Something<sup id="fnref:977"><a class="footnote-ref" href="#fn:977" rel="footnote">977</a></sup></p>\r
-<p>Something<sup id="fnref:978"><a class="footnote-ref" href="#fn:978" rel="footnote">978</a></sup></p>\r
-<p>Something<sup id="fnref:979"><a class="footnote-ref" href="#fn:979" rel="footnote">979</a></sup></p>\r
-<p>Something<sup id="fnref:980"><a class="footnote-ref" href="#fn:980" rel="footnote">980</a></sup></p>\r
-<p>Something<sup id="fnref:981"><a class="footnote-ref" href="#fn:981" rel="footnote">981</a></sup></p>\r
-<p>Something<sup id="fnref:982"><a class="footnote-ref" href="#fn:982" rel="footnote">982</a></sup></p>\r
-<p>Something<sup id="fnref:983"><a class="footnote-ref" href="#fn:983" rel="footnote">983</a></sup></p>\r
-<p>Something<sup id="fnref:984"><a class="footnote-ref" href="#fn:984" rel="footnote">984</a></sup></p>\r
-<p>Something<sup id="fnref:985"><a class="footnote-ref" href="#fn:985" rel="footnote">985</a></sup></p>\r
-<p>Something<sup id="fnref:986"><a class="footnote-ref" href="#fn:986" rel="footnote">986</a></sup></p>\r
-<p>Something<sup id="fnref:987"><a class="footnote-ref" href="#fn:987" rel="footnote">987</a></sup></p>\r
-<p>Something<sup id="fnref:988"><a class="footnote-ref" href="#fn:988" rel="footnote">988</a></sup></p>\r
-<p>Something<sup id="fnref:989"><a class="footnote-ref" href="#fn:989" rel="footnote">989</a></sup></p>\r
-<p>Something<sup id="fnref:990"><a class="footnote-ref" href="#fn:990" rel="footnote">990</a></sup></p>\r
-<p>Something<sup id="fnref:991"><a class="footnote-ref" href="#fn:991" rel="footnote">991</a></sup></p>\r
-<p>Something<sup id="fnref:992"><a class="footnote-ref" href="#fn:992" rel="footnote">992</a></sup></p>\r
-<p>Something<sup id="fnref:993"><a class="footnote-ref" href="#fn:993" rel="footnote">993</a></sup></p>\r
-<p>Something<sup id="fnref:994"><a class="footnote-ref" href="#fn:994" rel="footnote">994</a></sup></p>\r
-<p>Something<sup id="fnref:995"><a class="footnote-ref" href="#fn:995" rel="footnote">995</a></sup></p>\r
-<p>Something<sup id="fnref:996"><a class="footnote-ref" href="#fn:996" rel="footnote">996</a></sup></p>\r
-<p>Something<sup id="fnref:997"><a class="footnote-ref" href="#fn:997" rel="footnote">997</a></sup></p>\r
-<p>Something<sup id="fnref:998"><a class="footnote-ref" href="#fn:998" rel="footnote">998</a></sup></p>\r
-<p>Something<sup id="fnref:999"><a class="footnote-ref" href="#fn:999" rel="footnote">999</a></sup></p>\r
-<p>Something<sup id="fnref:1000"><a class="footnote-ref" href="#fn:1000" rel="footnote">1000</a></sup></p>\r
-<p>Something<sup id="fnref:1001"><a class="footnote-ref" href="#fn:1001" rel="footnote">1001</a></sup></p>\r
-<p>Something<sup id="fnref:1002"><a class="footnote-ref" href="#fn:1002" rel="footnote">1002</a></sup></p>\r
-<p>Something<sup id="fnref:1003"><a class="footnote-ref" href="#fn:1003" rel="footnote">1003</a></sup></p>\r
-<p>Something<sup id="fnref:1004"><a class="footnote-ref" href="#fn:1004" rel="footnote">1004</a></sup></p>\r
-<p>Something<sup id="fnref:1005"><a class="footnote-ref" href="#fn:1005" rel="footnote">1005</a></sup></p>\r
-<p>Something<sup id="fnref:1006"><a class="footnote-ref" href="#fn:1006" rel="footnote">1006</a></sup></p>\r
-<p>Something<sup id="fnref:1007"><a class="footnote-ref" href="#fn:1007" rel="footnote">1007</a></sup></p>\r
-<p>Something<sup id="fnref:1008"><a class="footnote-ref" href="#fn:1008" rel="footnote">1008</a></sup></p>\r
-<p>Something<sup id="fnref:1009"><a class="footnote-ref" href="#fn:1009" rel="footnote">1009</a></sup></p>\r
-<p>Something<sup id="fnref:1010"><a class="footnote-ref" href="#fn:1010" rel="footnote">1010</a></sup></p>\r
-<p>Something<sup id="fnref:1011"><a class="footnote-ref" href="#fn:1011" rel="footnote">1011</a></sup></p>\r
-<p>Something<sup id="fnref:1012"><a class="footnote-ref" href="#fn:1012" rel="footnote">1012</a></sup></p>\r
-<p>Something<sup id="fnref:1013"><a class="footnote-ref" href="#fn:1013" rel="footnote">1013</a></sup></p>\r
-<p>Something<sup id="fnref:1014"><a class="footnote-ref" href="#fn:1014" rel="footnote">1014</a></sup></p>\r
-<p>Something<sup id="fnref:1015"><a class="footnote-ref" href="#fn:1015" rel="footnote">1015</a></sup></p>\r
-<p>Something<sup id="fnref:1016"><a class="footnote-ref" href="#fn:1016" rel="footnote">1016</a></sup></p>\r
-<p>Something<sup id="fnref:1017"><a class="footnote-ref" href="#fn:1017" rel="footnote">1017</a></sup></p>\r
-<p>Something<sup id="fnref:1018"><a class="footnote-ref" href="#fn:1018" rel="footnote">1018</a></sup></p>\r
-<p>Something<sup id="fnref:1019"><a class="footnote-ref" href="#fn:1019" rel="footnote">1019</a></sup></p>\r
-<p>Something<sup id="fnref:1020"><a class="footnote-ref" href="#fn:1020" rel="footnote">1020</a></sup></p>\r
-<p>Something<sup id="fnref:1021"><a class="footnote-ref" href="#fn:1021" rel="footnote">1021</a></sup></p>\r
-<p>Something<sup id="fnref:1022"><a class="footnote-ref" href="#fn:1022" rel="footnote">1022</a></sup></p>\r
-<p>Something<sup id="fnref:1023"><a class="footnote-ref" href="#fn:1023" rel="footnote">1023</a></sup></p>\r
-<p>Something<sup id="fnref:1024"><a class="footnote-ref" href="#fn:1024" rel="footnote">1024</a></sup></p>\r
-<p>Something<sup id="fnref:1025"><a class="footnote-ref" href="#fn:1025" rel="footnote">1025</a></sup></p>\r
-<p>Something<sup id="fnref:1026"><a class="footnote-ref" href="#fn:1026" rel="footnote">1026</a></sup></p>\r
-<p>Something<sup id="fnref:1027"><a class="footnote-ref" href="#fn:1027" rel="footnote">1027</a></sup></p>\r
-<p>Something<sup id="fnref:1028"><a class="footnote-ref" href="#fn:1028" rel="footnote">1028</a></sup></p>\r
-<p>Something<sup id="fnref:1029"><a class="footnote-ref" href="#fn:1029" rel="footnote">1029</a></sup></p>\r
-<p>Something<sup id="fnref:1030"><a class="footnote-ref" href="#fn:1030" rel="footnote">1030</a></sup></p>\r
-<p>Something<sup id="fnref:1031"><a class="footnote-ref" href="#fn:1031" rel="footnote">1031</a></sup></p>\r
-<p>Something<sup id="fnref:1032"><a class="footnote-ref" href="#fn:1032" rel="footnote">1032</a></sup></p>\r
-<p>Something<sup id="fnref:1033"><a class="footnote-ref" href="#fn:1033" rel="footnote">1033</a></sup></p>\r
-<p>Something<sup id="fnref:1034"><a class="footnote-ref" href="#fn:1034" rel="footnote">1034</a></sup></p>\r
-<p>Something<sup id="fnref:1035"><a class="footnote-ref" href="#fn:1035" rel="footnote">1035</a></sup></p>\r
-<p>Something<sup id="fnref:1036"><a class="footnote-ref" href="#fn:1036" rel="footnote">1036</a></sup></p>\r
-<p>Something<sup id="fnref:1037"><a class="footnote-ref" href="#fn:1037" rel="footnote">1037</a></sup></p>\r
-<p>Something<sup id="fnref:1038"><a class="footnote-ref" href="#fn:1038" rel="footnote">1038</a></sup></p>\r
-<p>Something<sup id="fnref:1039"><a class="footnote-ref" href="#fn:1039" rel="footnote">1039</a></sup></p>\r
-<p>Something<sup id="fnref:1040"><a class="footnote-ref" href="#fn:1040" rel="footnote">1040</a></sup></p>\r
-<p>Something<sup id="fnref:1041"><a class="footnote-ref" href="#fn:1041" rel="footnote">1041</a></sup></p>\r
-<p>Something<sup id="fnref:1042"><a class="footnote-ref" href="#fn:1042" rel="footnote">1042</a></sup></p>\r
-<p>Something<sup id="fnref:1043"><a class="footnote-ref" href="#fn:1043" rel="footnote">1043</a></sup></p>\r
-<p>Something<sup id="fnref:1044"><a class="footnote-ref" href="#fn:1044" rel="footnote">1044</a></sup></p>\r
-<p>Something<sup id="fnref:1045"><a class="footnote-ref" href="#fn:1045" rel="footnote">1045</a></sup></p>\r
-<p>Something<sup id="fnref:1046"><a class="footnote-ref" href="#fn:1046" rel="footnote">1046</a></sup></p>\r
-<p>Something<sup id="fnref:1047"><a class="footnote-ref" href="#fn:1047" rel="footnote">1047</a></sup></p>\r
-<p>Something<sup id="fnref:1048"><a class="footnote-ref" href="#fn:1048" rel="footnote">1048</a></sup></p>\r
-<p>Something<sup id="fnref:1049"><a class="footnote-ref" href="#fn:1049" rel="footnote">1049</a></sup></p>\r
-<p>Something<sup id="fnref:1050"><a class="footnote-ref" href="#fn:1050" rel="footnote">1050</a></sup></p>\r
-<p>Something<sup id="fnref:1051"><a class="footnote-ref" href="#fn:1051" rel="footnote">1051</a></sup></p>\r
-<p>Something<sup id="fnref:1052"><a class="footnote-ref" href="#fn:1052" rel="footnote">1052</a></sup></p>\r
-<p>Something<sup id="fnref:1053"><a class="footnote-ref" href="#fn:1053" rel="footnote">1053</a></sup></p>\r
-<p>Something<sup id="fnref:1054"><a class="footnote-ref" href="#fn:1054" rel="footnote">1054</a></sup></p>\r
-<p>Something<sup id="fnref:1055"><a class="footnote-ref" href="#fn:1055" rel="footnote">1055</a></sup></p>\r
-<p>Something<sup id="fnref:1056"><a class="footnote-ref" href="#fn:1056" rel="footnote">1056</a></sup></p>\r
-<p>Something<sup id="fnref:1057"><a class="footnote-ref" href="#fn:1057" rel="footnote">1057</a></sup></p>\r
-<p>Something<sup id="fnref:1058"><a class="footnote-ref" href="#fn:1058" rel="footnote">1058</a></sup></p>\r
-<p>Something<sup id="fnref:1059"><a class="footnote-ref" href="#fn:1059" rel="footnote">1059</a></sup></p>\r
-<p>Something<sup id="fnref:1060"><a class="footnote-ref" href="#fn:1060" rel="footnote">1060</a></sup></p>\r
-<p>Something<sup id="fnref:1061"><a class="footnote-ref" href="#fn:1061" rel="footnote">1061</a></sup></p>\r
-<p>Something<sup id="fnref:1062"><a class="footnote-ref" href="#fn:1062" rel="footnote">1062</a></sup></p>\r
-<p>Something<sup id="fnref:1063"><a class="footnote-ref" href="#fn:1063" rel="footnote">1063</a></sup></p>\r
-<p>Something<sup id="fnref:1064"><a class="footnote-ref" href="#fn:1064" rel="footnote">1064</a></sup></p>\r
-<p>Something<sup id="fnref:1065"><a class="footnote-ref" href="#fn:1065" rel="footnote">1065</a></sup></p>\r
-<p>Something<sup id="fnref:1066"><a class="footnote-ref" href="#fn:1066" rel="footnote">1066</a></sup></p>\r
-<p>Something<sup id="fnref:1067"><a class="footnote-ref" href="#fn:1067" rel="footnote">1067</a></sup></p>\r
-<p>Something<sup id="fnref:1068"><a class="footnote-ref" href="#fn:1068" rel="footnote">1068</a></sup></p>\r
-<p>Something<sup id="fnref:1069"><a class="footnote-ref" href="#fn:1069" rel="footnote">1069</a></sup></p>\r
-<p>Something<sup id="fnref:1070"><a class="footnote-ref" href="#fn:1070" rel="footnote">1070</a></sup></p>\r
-<p>Something<sup id="fnref:1071"><a class="footnote-ref" href="#fn:1071" rel="footnote">1071</a></sup></p>\r
-<p>Something<sup id="fnref:1072"><a class="footnote-ref" href="#fn:1072" rel="footnote">1072</a></sup></p>\r
-<p>Something<sup id="fnref:1073"><a class="footnote-ref" href="#fn:1073" rel="footnote">1073</a></sup></p>\r
-<p>Something<sup id="fnref:1074"><a class="footnote-ref" href="#fn:1074" rel="footnote">1074</a></sup></p>\r
-<p>Something<sup id="fnref:1075"><a class="footnote-ref" href="#fn:1075" rel="footnote">1075</a></sup></p>\r
-<p>Something<sup id="fnref:1076"><a class="footnote-ref" href="#fn:1076" rel="footnote">1076</a></sup></p>\r
-<p>Something<sup id="fnref:1077"><a class="footnote-ref" href="#fn:1077" rel="footnote">1077</a></sup></p>\r
-<p>Something<sup id="fnref:1078"><a class="footnote-ref" href="#fn:1078" rel="footnote">1078</a></sup></p>\r
-<p>Something<sup id="fnref:1079"><a class="footnote-ref" href="#fn:1079" rel="footnote">1079</a></sup></p>\r
-<p>Something<sup id="fnref:1080"><a class="footnote-ref" href="#fn:1080" rel="footnote">1080</a></sup></p>\r
-<p>Something<sup id="fnref:1081"><a class="footnote-ref" href="#fn:1081" rel="footnote">1081</a></sup></p>\r
-<p>Something<sup id="fnref:1082"><a class="footnote-ref" href="#fn:1082" rel="footnote">1082</a></sup></p>\r
-<p>Something<sup id="fnref:1083"><a class="footnote-ref" href="#fn:1083" rel="footnote">1083</a></sup></p>\r
-<p>Something<sup id="fnref:1084"><a class="footnote-ref" href="#fn:1084" rel="footnote">1084</a></sup></p>\r
-<p>Something<sup id="fnref:1085"><a class="footnote-ref" href="#fn:1085" rel="footnote">1085</a></sup></p>\r
-<p>Something<sup id="fnref:1086"><a class="footnote-ref" href="#fn:1086" rel="footnote">1086</a></sup></p>\r
-<p>Something<sup id="fnref:1087"><a class="footnote-ref" href="#fn:1087" rel="footnote">1087</a></sup></p>\r
-<p>Something<sup id="fnref:1088"><a class="footnote-ref" href="#fn:1088" rel="footnote">1088</a></sup></p>\r
-<p>Something<sup id="fnref:1089"><a class="footnote-ref" href="#fn:1089" rel="footnote">1089</a></sup></p>\r
-<p>Something<sup id="fnref:1090"><a class="footnote-ref" href="#fn:1090" rel="footnote">1090</a></sup></p>\r
-<p>Something<sup id="fnref:1091"><a class="footnote-ref" href="#fn:1091" rel="footnote">1091</a></sup></p>\r
-<p>Something<sup id="fnref:1092"><a class="footnote-ref" href="#fn:1092" rel="footnote">1092</a></sup></p>\r
-<p>Something<sup id="fnref:1093"><a class="footnote-ref" href="#fn:1093" rel="footnote">1093</a></sup></p>\r
-<p>Something<sup id="fnref:1094"><a class="footnote-ref" href="#fn:1094" rel="footnote">1094</a></sup></p>\r
-<p>Something<sup id="fnref:1095"><a class="footnote-ref" href="#fn:1095" rel="footnote">1095</a></sup></p>\r
-<p>Something<sup id="fnref:1096"><a class="footnote-ref" href="#fn:1096" rel="footnote">1096</a></sup></p>\r
-<p>Something<sup id="fnref:1097"><a class="footnote-ref" href="#fn:1097" rel="footnote">1097</a></sup></p>\r
-<p>Something<sup id="fnref:1098"><a class="footnote-ref" href="#fn:1098" rel="footnote">1098</a></sup></p>\r
-<p>Something<sup id="fnref:1099"><a class="footnote-ref" href="#fn:1099" rel="footnote">1099</a></sup></p>\r
-<p>Something<sup id="fnref:1100"><a class="footnote-ref" href="#fn:1100" rel="footnote">1100</a></sup></p>\r
-<p>Something<sup id="fnref:1101"><a class="footnote-ref" href="#fn:1101" rel="footnote">1101</a></sup></p>\r
-<p>Something<sup id="fnref:1102"><a class="footnote-ref" href="#fn:1102" rel="footnote">1102</a></sup></p>\r
-<p>Something<sup id="fnref:1103"><a class="footnote-ref" href="#fn:1103" rel="footnote">1103</a></sup></p>\r
-<p>Something<sup id="fnref:1104"><a class="footnote-ref" href="#fn:1104" rel="footnote">1104</a></sup></p>\r
-<p>Something<sup id="fnref:1105"><a class="footnote-ref" href="#fn:1105" rel="footnote">1105</a></sup></p>\r
-<p>Something<sup id="fnref:1106"><a class="footnote-ref" href="#fn:1106" rel="footnote">1106</a></sup></p>\r
-<p>Something<sup id="fnref:1107"><a class="footnote-ref" href="#fn:1107" rel="footnote">1107</a></sup></p>\r
-<p>Something<sup id="fnref:1108"><a class="footnote-ref" href="#fn:1108" rel="footnote">1108</a></sup></p>\r
-<p>Something<sup id="fnref:1109"><a class="footnote-ref" href="#fn:1109" rel="footnote">1109</a></sup></p>\r
-<p>Something<sup id="fnref:1110"><a class="footnote-ref" href="#fn:1110" rel="footnote">1110</a></sup></p>\r
-<p>Something<sup id="fnref:1111"><a class="footnote-ref" href="#fn:1111" rel="footnote">1111</a></sup></p>\r
-<p>Something<sup id="fnref:1112"><a class="footnote-ref" href="#fn:1112" rel="footnote">1112</a></sup></p>\r
-<p>Something<sup id="fnref:1113"><a class="footnote-ref" href="#fn:1113" rel="footnote">1113</a></sup></p>\r
-<p>Something<sup id="fnref:1114"><a class="footnote-ref" href="#fn:1114" rel="footnote">1114</a></sup></p>\r
-<p>Something<sup id="fnref:1115"><a class="footnote-ref" href="#fn:1115" rel="footnote">1115</a></sup></p>\r
-<p>Something<sup id="fnref:1116"><a class="footnote-ref" href="#fn:1116" rel="footnote">1116</a></sup></p>\r
-<p>Something<sup id="fnref:1117"><a class="footnote-ref" href="#fn:1117" rel="footnote">1117</a></sup></p>\r
-<p>Something<sup id="fnref:1118"><a class="footnote-ref" href="#fn:1118" rel="footnote">1118</a></sup></p>\r
-<p>Something<sup id="fnref:1119"><a class="footnote-ref" href="#fn:1119" rel="footnote">1119</a></sup></p>\r
-<p>Something<sup id="fnref:1120"><a class="footnote-ref" href="#fn:1120" rel="footnote">1120</a></sup></p>\r
-<p>Something<sup id="fnref:1121"><a class="footnote-ref" href="#fn:1121" rel="footnote">1121</a></sup></p>\r
-<p>Something<sup id="fnref:1122"><a class="footnote-ref" href="#fn:1122" rel="footnote">1122</a></sup></p>\r
-<p>Something<sup id="fnref:1123"><a class="footnote-ref" href="#fn:1123" rel="footnote">1123</a></sup></p>\r
-<p>Something<sup id="fnref:1124"><a class="footnote-ref" href="#fn:1124" rel="footnote">1124</a></sup></p>\r
-<p>Something<sup id="fnref:1125"><a class="footnote-ref" href="#fn:1125" rel="footnote">1125</a></sup></p>\r
-<p>Something<sup id="fnref:1126"><a class="footnote-ref" href="#fn:1126" rel="footnote">1126</a></sup></p>\r
-<p>Something<sup id="fnref:1127"><a class="footnote-ref" href="#fn:1127" rel="footnote">1127</a></sup></p>\r
-<p>Something<sup id="fnref:1128"><a class="footnote-ref" href="#fn:1128" rel="footnote">1128</a></sup></p>\r
-<p>Something<sup id="fnref:1129"><a class="footnote-ref" href="#fn:1129" rel="footnote">1129</a></sup></p>\r
-<p>Something<sup id="fnref:1130"><a class="footnote-ref" href="#fn:1130" rel="footnote">1130</a></sup></p>\r
-<p>Something<sup id="fnref:1131"><a class="footnote-ref" href="#fn:1131" rel="footnote">1131</a></sup></p>\r
-<p>Something<sup id="fnref:1132"><a class="footnote-ref" href="#fn:1132" rel="footnote">1132</a></sup></p>\r
-<p>Something<sup id="fnref:1133"><a class="footnote-ref" href="#fn:1133" rel="footnote">1133</a></sup></p>\r
-<p>Something<sup id="fnref:1134"><a class="footnote-ref" href="#fn:1134" rel="footnote">1134</a></sup></p>\r
-<p>Something<sup id="fnref:1135"><a class="footnote-ref" href="#fn:1135" rel="footnote">1135</a></sup></p>\r
-<p>Something<sup id="fnref:1136"><a class="footnote-ref" href="#fn:1136" rel="footnote">1136</a></sup></p>\r
-<p>Something<sup id="fnref:1137"><a class="footnote-ref" href="#fn:1137" rel="footnote">1137</a></sup></p>\r
-<p>Something<sup id="fnref:1138"><a class="footnote-ref" href="#fn:1138" rel="footnote">1138</a></sup></p>\r
-<p>Something<sup id="fnref:1139"><a class="footnote-ref" href="#fn:1139" rel="footnote">1139</a></sup></p>\r
-<p>Something<sup id="fnref:1140"><a class="footnote-ref" href="#fn:1140" rel="footnote">1140</a></sup></p>\r
-<p>Something<sup id="fnref:1141"><a class="footnote-ref" href="#fn:1141" rel="footnote">1141</a></sup></p>\r
-<p>Something<sup id="fnref:1142"><a class="footnote-ref" href="#fn:1142" rel="footnote">1142</a></sup></p>\r
-<p>Something<sup id="fnref:1143"><a class="footnote-ref" href="#fn:1143" rel="footnote">1143</a></sup></p>\r
-<p>Something<sup id="fnref:1144"><a class="footnote-ref" href="#fn:1144" rel="footnote">1144</a></sup></p>\r
-<p>Something<sup id="fnref:1145"><a class="footnote-ref" href="#fn:1145" rel="footnote">1145</a></sup></p>\r
-<p>Something<sup id="fnref:1146"><a class="footnote-ref" href="#fn:1146" rel="footnote">1146</a></sup></p>\r
-<p>Something<sup id="fnref:1147"><a class="footnote-ref" href="#fn:1147" rel="footnote">1147</a></sup></p>\r
-<p>Something<sup id="fnref:1148"><a class="footnote-ref" href="#fn:1148" rel="footnote">1148</a></sup></p>\r
-<p>Something<sup id="fnref:1149"><a class="footnote-ref" href="#fn:1149" rel="footnote">1149</a></sup></p>\r
-<p>Something<sup id="fnref:1150"><a class="footnote-ref" href="#fn:1150" rel="footnote">1150</a></sup></p>\r
-<p>Something<sup id="fnref:1151"><a class="footnote-ref" href="#fn:1151" rel="footnote">1151</a></sup></p>\r
-<p>Something<sup id="fnref:1152"><a class="footnote-ref" href="#fn:1152" rel="footnote">1152</a></sup></p>\r
-<p>Something<sup id="fnref:1153"><a class="footnote-ref" href="#fn:1153" rel="footnote">1153</a></sup></p>\r
-<p>Something<sup id="fnref:1154"><a class="footnote-ref" href="#fn:1154" rel="footnote">1154</a></sup></p>\r
-<p>Something<sup id="fnref:1155"><a class="footnote-ref" href="#fn:1155" rel="footnote">1155</a></sup></p>\r
-<p>Something<sup id="fnref:1156"><a class="footnote-ref" href="#fn:1156" rel="footnote">1156</a></sup></p>\r
-<p>Something<sup id="fnref:1157"><a class="footnote-ref" href="#fn:1157" rel="footnote">1157</a></sup></p>\r
-<p>Something<sup id="fnref:1158"><a class="footnote-ref" href="#fn:1158" rel="footnote">1158</a></sup></p>\r
-<p>Something<sup id="fnref:1159"><a class="footnote-ref" href="#fn:1159" rel="footnote">1159</a></sup></p>\r
-<p>Something<sup id="fnref:1160"><a class="footnote-ref" href="#fn:1160" rel="footnote">1160</a></sup></p>\r
-<p>Something<sup id="fnref:1161"><a class="footnote-ref" href="#fn:1161" rel="footnote">1161</a></sup></p>\r
-<p>Something<sup id="fnref:1162"><a class="footnote-ref" href="#fn:1162" rel="footnote">1162</a></sup></p>\r
-<p>Something<sup id="fnref:1163"><a class="footnote-ref" href="#fn:1163" rel="footnote">1163</a></sup></p>\r
-<p>Something<sup id="fnref:1164"><a class="footnote-ref" href="#fn:1164" rel="footnote">1164</a></sup></p>\r
-<p>Something<sup id="fnref:1165"><a class="footnote-ref" href="#fn:1165" rel="footnote">1165</a></sup></p>\r
-<p>Something<sup id="fnref:1166"><a class="footnote-ref" href="#fn:1166" rel="footnote">1166</a></sup></p>\r
-<p>Something<sup id="fnref:1167"><a class="footnote-ref" href="#fn:1167" rel="footnote">1167</a></sup></p>\r
-<p>Something<sup id="fnref:1168"><a class="footnote-ref" href="#fn:1168" rel="footnote">1168</a></sup></p>\r
-<p>Something<sup id="fnref:1169"><a class="footnote-ref" href="#fn:1169" rel="footnote">1169</a></sup></p>\r
-<p>Something<sup id="fnref:1170"><a class="footnote-ref" href="#fn:1170" rel="footnote">1170</a></sup></p>\r
-<p>Something<sup id="fnref:1171"><a class="footnote-ref" href="#fn:1171" rel="footnote">1171</a></sup></p>\r
-<p>Something<sup id="fnref:1172"><a class="footnote-ref" href="#fn:1172" rel="footnote">1172</a></sup></p>\r
-<p>Something<sup id="fnref:1173"><a class="footnote-ref" href="#fn:1173" rel="footnote">1173</a></sup></p>\r
-<p>Something<sup id="fnref:1174"><a class="footnote-ref" href="#fn:1174" rel="footnote">1174</a></sup></p>\r
-<p>Something<sup id="fnref:1175"><a class="footnote-ref" href="#fn:1175" rel="footnote">1175</a></sup></p>\r
-<p>Something<sup id="fnref:1176"><a class="footnote-ref" href="#fn:1176" rel="footnote">1176</a></sup></p>\r
-<p>Something<sup id="fnref:1177"><a class="footnote-ref" href="#fn:1177" rel="footnote">1177</a></sup></p>\r
-<p>Something<sup id="fnref:1178"><a class="footnote-ref" href="#fn:1178" rel="footnote">1178</a></sup></p>\r
-<p>Something<sup id="fnref:1179"><a class="footnote-ref" href="#fn:1179" rel="footnote">1179</a></sup></p>\r
-<p>Something<sup id="fnref:1180"><a class="footnote-ref" href="#fn:1180" rel="footnote">1180</a></sup></p>\r
-<p>Something<sup id="fnref:1181"><a class="footnote-ref" href="#fn:1181" rel="footnote">1181</a></sup></p>\r
-<p>Something<sup id="fnref:1182"><a class="footnote-ref" href="#fn:1182" rel="footnote">1182</a></sup></p>\r
-<p>Something<sup id="fnref:1183"><a class="footnote-ref" href="#fn:1183" rel="footnote">1183</a></sup></p>\r
-<p>Something<sup id="fnref:1184"><a class="footnote-ref" href="#fn:1184" rel="footnote">1184</a></sup></p>\r
-<p>Something<sup id="fnref:1185"><a class="footnote-ref" href="#fn:1185" rel="footnote">1185</a></sup></p>\r
-<p>Something<sup id="fnref:1186"><a class="footnote-ref" href="#fn:1186" rel="footnote">1186</a></sup></p>\r
-<p>Something<sup id="fnref:1187"><a class="footnote-ref" href="#fn:1187" rel="footnote">1187</a></sup></p>\r
-<p>Something<sup id="fnref:1188"><a class="footnote-ref" href="#fn:1188" rel="footnote">1188</a></sup></p>\r
-<p>Something<sup id="fnref:1189"><a class="footnote-ref" href="#fn:1189" rel="footnote">1189</a></sup></p>\r
-<p>Something<sup id="fnref:1190"><a class="footnote-ref" href="#fn:1190" rel="footnote">1190</a></sup></p>\r
-<p>Something<sup id="fnref:1191"><a class="footnote-ref" href="#fn:1191" rel="footnote">1191</a></sup></p>\r
-<p>Something<sup id="fnref:1192"><a class="footnote-ref" href="#fn:1192" rel="footnote">1192</a></sup></p>\r
-<p>Something<sup id="fnref:1193"><a class="footnote-ref" href="#fn:1193" rel="footnote">1193</a></sup></p>\r
-<p>Something<sup id="fnref:1194"><a class="footnote-ref" href="#fn:1194" rel="footnote">1194</a></sup></p>\r
-<p>Something<sup id="fnref:1195"><a class="footnote-ref" href="#fn:1195" rel="footnote">1195</a></sup></p>\r
-<p>Something<sup id="fnref:1196"><a class="footnote-ref" href="#fn:1196" rel="footnote">1196</a></sup></p>\r
-<p>Something<sup id="fnref:1197"><a class="footnote-ref" href="#fn:1197" rel="footnote">1197</a></sup></p>\r
-<p>Something<sup id="fnref:1198"><a class="footnote-ref" href="#fn:1198" rel="footnote">1198</a></sup></p>\r
-<p>Something<sup id="fnref:1199"><a class="footnote-ref" href="#fn:1199" rel="footnote">1199</a></sup></p>\r
-<div class="footnote">\r
-<hr />\r
-<ol>\r
-<li id="fn:1">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:2">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:3">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:4">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:4" rev="footnote" title="Jump back to footnote 4 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:5">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:5" rev="footnote" title="Jump back to footnote 5 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:6">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:6" rev="footnote" title="Jump back to footnote 6 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:7">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:7" rev="footnote" title="Jump back to footnote 7 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:8">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:8" rev="footnote" title="Jump back to footnote 8 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:9">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:9" rev="footnote" title="Jump back to footnote 9 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:10">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:10" rev="footnote" title="Jump back to footnote 10 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:11">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:11" rev="footnote" title="Jump back to footnote 11 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:12">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:12" rev="footnote" title="Jump back to footnote 12 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:13">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:13" rev="footnote" title="Jump back to footnote 13 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:14">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:14" rev="footnote" title="Jump back to footnote 14 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:15">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:15" rev="footnote" title="Jump back to footnote 15 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:16">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:16" rev="footnote" title="Jump back to footnote 16 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:17">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:17" rev="footnote" title="Jump back to footnote 17 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:18">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:18" rev="footnote" title="Jump back to footnote 18 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:19">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:19" rev="footnote" title="Jump back to footnote 19 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:20">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:20" rev="footnote" title="Jump back to footnote 20 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:21">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:21" rev="footnote" title="Jump back to footnote 21 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:22">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:22" rev="footnote" title="Jump back to footnote 22 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:23">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:23" rev="footnote" title="Jump back to footnote 23 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:24">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:24" rev="footnote" title="Jump back to footnote 24 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:25">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:25" rev="footnote" title="Jump back to footnote 25 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:26">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:26" rev="footnote" title="Jump back to footnote 26 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:27">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:27" rev="footnote" title="Jump back to footnote 27 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:28">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:28" rev="footnote" title="Jump back to footnote 28 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:29">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:29" rev="footnote" title="Jump back to footnote 29 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:30">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:30" rev="footnote" title="Jump back to footnote 30 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:31">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:31" rev="footnote" title="Jump back to footnote 31 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:32">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:32" rev="footnote" title="Jump back to footnote 32 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:33">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:33" rev="footnote" title="Jump back to footnote 33 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:34">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:34" rev="footnote" title="Jump back to footnote 34 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:35">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:35" rev="footnote" title="Jump back to footnote 35 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:36">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:36" rev="footnote" title="Jump back to footnote 36 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:37">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:37" rev="footnote" title="Jump back to footnote 37 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:38">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:38" rev="footnote" title="Jump back to footnote 38 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:39">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:39" rev="footnote" title="Jump back to footnote 39 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:40">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:40" rev="footnote" title="Jump back to footnote 40 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:41">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:41" rev="footnote" title="Jump back to footnote 41 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:42">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:42" rev="footnote" title="Jump back to footnote 42 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:43">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:43" rev="footnote" title="Jump back to footnote 43 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:44">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:44" rev="footnote" title="Jump back to footnote 44 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:45">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:45" rev="footnote" title="Jump back to footnote 45 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:46">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:46" rev="footnote" title="Jump back to footnote 46 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:47">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:47" rev="footnote" title="Jump back to footnote 47 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:48">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:48" rev="footnote" title="Jump back to footnote 48 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:49">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:49" rev="footnote" title="Jump back to footnote 49 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:50">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:50" rev="footnote" title="Jump back to footnote 50 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:51">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:51" rev="footnote" title="Jump back to footnote 51 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:52">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:52" rev="footnote" title="Jump back to footnote 52 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:53">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:53" rev="footnote" title="Jump back to footnote 53 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:54">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:54" rev="footnote" title="Jump back to footnote 54 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:55">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:55" rev="footnote" title="Jump back to footnote 55 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:56">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:56" rev="footnote" title="Jump back to footnote 56 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:57">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:57" rev="footnote" title="Jump back to footnote 57 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:58">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:58" rev="footnote" title="Jump back to footnote 58 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:59">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:59" rev="footnote" title="Jump back to footnote 59 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:60">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:60" rev="footnote" title="Jump back to footnote 60 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:61">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:61" rev="footnote" title="Jump back to footnote 61 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:62">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:62" rev="footnote" title="Jump back to footnote 62 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:63">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:63" rev="footnote" title="Jump back to footnote 63 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:64">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:64" rev="footnote" title="Jump back to footnote 64 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:65">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:65" rev="footnote" title="Jump back to footnote 65 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:66">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:66" rev="footnote" title="Jump back to footnote 66 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:67">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:67" rev="footnote" title="Jump back to footnote 67 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:68">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:68" rev="footnote" title="Jump back to footnote 68 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:69">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:69" rev="footnote" title="Jump back to footnote 69 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:70">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:70" rev="footnote" title="Jump back to footnote 70 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:71">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:71" rev="footnote" title="Jump back to footnote 71 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:72">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:72" rev="footnote" title="Jump back to footnote 72 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:73">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:73" rev="footnote" title="Jump back to footnote 73 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:74">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:74" rev="footnote" title="Jump back to footnote 74 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:75">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:75" rev="footnote" title="Jump back to footnote 75 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:76">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:76" rev="footnote" title="Jump back to footnote 76 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:77">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:77" rev="footnote" title="Jump back to footnote 77 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:78">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:78" rev="footnote" title="Jump back to footnote 78 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:79">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:79" rev="footnote" title="Jump back to footnote 79 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:80">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:80" rev="footnote" title="Jump back to footnote 80 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:81">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:81" rev="footnote" title="Jump back to footnote 81 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:82">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:82" rev="footnote" title="Jump back to footnote 82 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:83">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:83" rev="footnote" title="Jump back to footnote 83 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:84">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:84" rev="footnote" title="Jump back to footnote 84 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:85">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:85" rev="footnote" title="Jump back to footnote 85 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:86">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:86" rev="footnote" title="Jump back to footnote 86 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:87">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:87" rev="footnote" title="Jump back to footnote 87 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:88">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:88" rev="footnote" title="Jump back to footnote 88 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:89">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:89" rev="footnote" title="Jump back to footnote 89 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:90">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:90" rev="footnote" title="Jump back to footnote 90 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:91">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:91" rev="footnote" title="Jump back to footnote 91 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:92">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:92" rev="footnote" title="Jump back to footnote 92 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:93">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:93" rev="footnote" title="Jump back to footnote 93 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:94">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:94" rev="footnote" title="Jump back to footnote 94 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:95">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:95" rev="footnote" title="Jump back to footnote 95 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:96">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:96" rev="footnote" title="Jump back to footnote 96 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:97">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:97" rev="footnote" title="Jump back to footnote 97 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:98">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:98" rev="footnote" title="Jump back to footnote 98 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:99">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:99" rev="footnote" title="Jump back to footnote 99 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:100">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:100" rev="footnote" title="Jump back to footnote 100 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:101">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:101" rev="footnote" title="Jump back to footnote 101 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:102">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:102" rev="footnote" title="Jump back to footnote 102 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:103">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:103" rev="footnote" title="Jump back to footnote 103 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:104">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:104" rev="footnote" title="Jump back to footnote 104 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:105">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:105" rev="footnote" title="Jump back to footnote 105 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:106">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:106" rev="footnote" title="Jump back to footnote 106 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:107">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:107" rev="footnote" title="Jump back to footnote 107 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:108">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:108" rev="footnote" title="Jump back to footnote 108 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:109">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:109" rev="footnote" title="Jump back to footnote 109 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:110">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:110" rev="footnote" title="Jump back to footnote 110 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:111">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:111" rev="footnote" title="Jump back to footnote 111 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:112">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:112" rev="footnote" title="Jump back to footnote 112 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:113">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:113" rev="footnote" title="Jump back to footnote 113 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:114">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:114" rev="footnote" title="Jump back to footnote 114 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:115">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:115" rev="footnote" title="Jump back to footnote 115 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:116">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:116" rev="footnote" title="Jump back to footnote 116 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:117">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:117" rev="footnote" title="Jump back to footnote 117 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:118">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:118" rev="footnote" title="Jump back to footnote 118 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:119">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:119" rev="footnote" title="Jump back to footnote 119 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:120">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:120" rev="footnote" title="Jump back to footnote 120 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:121">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:121" rev="footnote" title="Jump back to footnote 121 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:122">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:122" rev="footnote" title="Jump back to footnote 122 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:123">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:123" rev="footnote" title="Jump back to footnote 123 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:124">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:124" rev="footnote" title="Jump back to footnote 124 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:125">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:125" rev="footnote" title="Jump back to footnote 125 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:126">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:126" rev="footnote" title="Jump back to footnote 126 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:127">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:127" rev="footnote" title="Jump back to footnote 127 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:128">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:128" rev="footnote" title="Jump back to footnote 128 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:129">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:129" rev="footnote" title="Jump back to footnote 129 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:130">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:130" rev="footnote" title="Jump back to footnote 130 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:131">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:131" rev="footnote" title="Jump back to footnote 131 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:132">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:132" rev="footnote" title="Jump back to footnote 132 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:133">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:133" rev="footnote" title="Jump back to footnote 133 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:134">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:134" rev="footnote" title="Jump back to footnote 134 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:135">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:135" rev="footnote" title="Jump back to footnote 135 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:136">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:136" rev="footnote" title="Jump back to footnote 136 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:137">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:137" rev="footnote" title="Jump back to footnote 137 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:138">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:138" rev="footnote" title="Jump back to footnote 138 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:139">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:139" rev="footnote" title="Jump back to footnote 139 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:140">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:140" rev="footnote" title="Jump back to footnote 140 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:141">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:141" rev="footnote" title="Jump back to footnote 141 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:142">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:142" rev="footnote" title="Jump back to footnote 142 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:143">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:143" rev="footnote" title="Jump back to footnote 143 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:144">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:144" rev="footnote" title="Jump back to footnote 144 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:145">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:145" rev="footnote" title="Jump back to footnote 145 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:146">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:146" rev="footnote" title="Jump back to footnote 146 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:147">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:147" rev="footnote" title="Jump back to footnote 147 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:148">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:148" rev="footnote" title="Jump back to footnote 148 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:149">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:149" rev="footnote" title="Jump back to footnote 149 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:150">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:150" rev="footnote" title="Jump back to footnote 150 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:151">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:151" rev="footnote" title="Jump back to footnote 151 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:152">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:152" rev="footnote" title="Jump back to footnote 152 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:153">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:153" rev="footnote" title="Jump back to footnote 153 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:154">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:154" rev="footnote" title="Jump back to footnote 154 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:155">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:155" rev="footnote" title="Jump back to footnote 155 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:156">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:156" rev="footnote" title="Jump back to footnote 156 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:157">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:157" rev="footnote" title="Jump back to footnote 157 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:158">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:158" rev="footnote" title="Jump back to footnote 158 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:159">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:159" rev="footnote" title="Jump back to footnote 159 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:160">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:160" rev="footnote" title="Jump back to footnote 160 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:161">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:161" rev="footnote" title="Jump back to footnote 161 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:162">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:162" rev="footnote" title="Jump back to footnote 162 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:163">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:163" rev="footnote" title="Jump back to footnote 163 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:164">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:164" rev="footnote" title="Jump back to footnote 164 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:165">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:165" rev="footnote" title="Jump back to footnote 165 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:166">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:166" rev="footnote" title="Jump back to footnote 166 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:167">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:167" rev="footnote" title="Jump back to footnote 167 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:168">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:168" rev="footnote" title="Jump back to footnote 168 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:169">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:169" rev="footnote" title="Jump back to footnote 169 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:170">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:170" rev="footnote" title="Jump back to footnote 170 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:171">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:171" rev="footnote" title="Jump back to footnote 171 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:172">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:172" rev="footnote" title="Jump back to footnote 172 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:173">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:173" rev="footnote" title="Jump back to footnote 173 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:174">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:174" rev="footnote" title="Jump back to footnote 174 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:175">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:175" rev="footnote" title="Jump back to footnote 175 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:176">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:176" rev="footnote" title="Jump back to footnote 176 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:177">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:177" rev="footnote" title="Jump back to footnote 177 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:178">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:178" rev="footnote" title="Jump back to footnote 178 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:179">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:179" rev="footnote" title="Jump back to footnote 179 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:180">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:180" rev="footnote" title="Jump back to footnote 180 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:181">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:181" rev="footnote" title="Jump back to footnote 181 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:182">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:182" rev="footnote" title="Jump back to footnote 182 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:183">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:183" rev="footnote" title="Jump back to footnote 183 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:184">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:184" rev="footnote" title="Jump back to footnote 184 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:185">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:185" rev="footnote" title="Jump back to footnote 185 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:186">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:186" rev="footnote" title="Jump back to footnote 186 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:187">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:187" rev="footnote" title="Jump back to footnote 187 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:188">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:188" rev="footnote" title="Jump back to footnote 188 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:189">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:189" rev="footnote" title="Jump back to footnote 189 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:190">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:190" rev="footnote" title="Jump back to footnote 190 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:191">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:191" rev="footnote" title="Jump back to footnote 191 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:192">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:192" rev="footnote" title="Jump back to footnote 192 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:193">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:193" rev="footnote" title="Jump back to footnote 193 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:194">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:194" rev="footnote" title="Jump back to footnote 194 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:195">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:195" rev="footnote" title="Jump back to footnote 195 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:196">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:196" rev="footnote" title="Jump back to footnote 196 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:197">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:197" rev="footnote" title="Jump back to footnote 197 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:198">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:198" rev="footnote" title="Jump back to footnote 198 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:199">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:199" rev="footnote" title="Jump back to footnote 199 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:200">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:200" rev="footnote" title="Jump back to footnote 200 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:201">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:201" rev="footnote" title="Jump back to footnote 201 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:202">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:202" rev="footnote" title="Jump back to footnote 202 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:203">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:203" rev="footnote" title="Jump back to footnote 203 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:204">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:204" rev="footnote" title="Jump back to footnote 204 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:205">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:205" rev="footnote" title="Jump back to footnote 205 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:206">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:206" rev="footnote" title="Jump back to footnote 206 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:207">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:207" rev="footnote" title="Jump back to footnote 207 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:208">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:208" rev="footnote" title="Jump back to footnote 208 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:209">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:209" rev="footnote" title="Jump back to footnote 209 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:210">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:210" rev="footnote" title="Jump back to footnote 210 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:211">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:211" rev="footnote" title="Jump back to footnote 211 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:212">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:212" rev="footnote" title="Jump back to footnote 212 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:213">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:213" rev="footnote" title="Jump back to footnote 213 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:214">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:214" rev="footnote" title="Jump back to footnote 214 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:215">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:215" rev="footnote" title="Jump back to footnote 215 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:216">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:216" rev="footnote" title="Jump back to footnote 216 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:217">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:217" rev="footnote" title="Jump back to footnote 217 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:218">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:218" rev="footnote" title="Jump back to footnote 218 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:219">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:219" rev="footnote" title="Jump back to footnote 219 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:220">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:220" rev="footnote" title="Jump back to footnote 220 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:221">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:221" rev="footnote" title="Jump back to footnote 221 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:222">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:222" rev="footnote" title="Jump back to footnote 222 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:223">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:223" rev="footnote" title="Jump back to footnote 223 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:224">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:224" rev="footnote" title="Jump back to footnote 224 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:225">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:225" rev="footnote" title="Jump back to footnote 225 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:226">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:226" rev="footnote" title="Jump back to footnote 226 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:227">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:227" rev="footnote" title="Jump back to footnote 227 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:228">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:228" rev="footnote" title="Jump back to footnote 228 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:229">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:229" rev="footnote" title="Jump back to footnote 229 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:230">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:230" rev="footnote" title="Jump back to footnote 230 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:231">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:231" rev="footnote" title="Jump back to footnote 231 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:232">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:232" rev="footnote" title="Jump back to footnote 232 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:233">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:233" rev="footnote" title="Jump back to footnote 233 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:234">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:234" rev="footnote" title="Jump back to footnote 234 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:235">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:235" rev="footnote" title="Jump back to footnote 235 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:236">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:236" rev="footnote" title="Jump back to footnote 236 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:237">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:237" rev="footnote" title="Jump back to footnote 237 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:238">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:238" rev="footnote" title="Jump back to footnote 238 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:239">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:239" rev="footnote" title="Jump back to footnote 239 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:240">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:240" rev="footnote" title="Jump back to footnote 240 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:241">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:241" rev="footnote" title="Jump back to footnote 241 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:242">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:242" rev="footnote" title="Jump back to footnote 242 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:243">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:243" rev="footnote" title="Jump back to footnote 243 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:244">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:244" rev="footnote" title="Jump back to footnote 244 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:245">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:245" rev="footnote" title="Jump back to footnote 245 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:246">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:246" rev="footnote" title="Jump back to footnote 246 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:247">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:247" rev="footnote" title="Jump back to footnote 247 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:248">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:248" rev="footnote" title="Jump back to footnote 248 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:249">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:249" rev="footnote" title="Jump back to footnote 249 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:250">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:250" rev="footnote" title="Jump back to footnote 250 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:251">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:251" rev="footnote" title="Jump back to footnote 251 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:252">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:252" rev="footnote" title="Jump back to footnote 252 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:253">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:253" rev="footnote" title="Jump back to footnote 253 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:254">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:254" rev="footnote" title="Jump back to footnote 254 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:255">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:255" rev="footnote" title="Jump back to footnote 255 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:256">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:256" rev="footnote" title="Jump back to footnote 256 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:257">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:257" rev="footnote" title="Jump back to footnote 257 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:258">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:258" rev="footnote" title="Jump back to footnote 258 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:259">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:259" rev="footnote" title="Jump back to footnote 259 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:260">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:260" rev="footnote" title="Jump back to footnote 260 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:261">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:261" rev="footnote" title="Jump back to footnote 261 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:262">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:262" rev="footnote" title="Jump back to footnote 262 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:263">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:263" rev="footnote" title="Jump back to footnote 263 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:264">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:264" rev="footnote" title="Jump back to footnote 264 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:265">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:265" rev="footnote" title="Jump back to footnote 265 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:266">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:266" rev="footnote" title="Jump back to footnote 266 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:267">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:267" rev="footnote" title="Jump back to footnote 267 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:268">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:268" rev="footnote" title="Jump back to footnote 268 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:269">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:269" rev="footnote" title="Jump back to footnote 269 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:270">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:270" rev="footnote" title="Jump back to footnote 270 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:271">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:271" rev="footnote" title="Jump back to footnote 271 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:272">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:272" rev="footnote" title="Jump back to footnote 272 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:273">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:273" rev="footnote" title="Jump back to footnote 273 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:274">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:274" rev="footnote" title="Jump back to footnote 274 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:275">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:275" rev="footnote" title="Jump back to footnote 275 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:276">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:276" rev="footnote" title="Jump back to footnote 276 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:277">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:277" rev="footnote" title="Jump back to footnote 277 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:278">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:278" rev="footnote" title="Jump back to footnote 278 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:279">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:279" rev="footnote" title="Jump back to footnote 279 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:280">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:280" rev="footnote" title="Jump back to footnote 280 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:281">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:281" rev="footnote" title="Jump back to footnote 281 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:282">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:282" rev="footnote" title="Jump back to footnote 282 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:283">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:283" rev="footnote" title="Jump back to footnote 283 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:284">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:284" rev="footnote" title="Jump back to footnote 284 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:285">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:285" rev="footnote" title="Jump back to footnote 285 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:286">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:286" rev="footnote" title="Jump back to footnote 286 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:287">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:287" rev="footnote" title="Jump back to footnote 287 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:288">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:288" rev="footnote" title="Jump back to footnote 288 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:289">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:289" rev="footnote" title="Jump back to footnote 289 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:290">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:290" rev="footnote" title="Jump back to footnote 290 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:291">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:291" rev="footnote" title="Jump back to footnote 291 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:292">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:292" rev="footnote" title="Jump back to footnote 292 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:293">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:293" rev="footnote" title="Jump back to footnote 293 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:294">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:294" rev="footnote" title="Jump back to footnote 294 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:295">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:295" rev="footnote" title="Jump back to footnote 295 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:296">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:296" rev="footnote" title="Jump back to footnote 296 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:297">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:297" rev="footnote" title="Jump back to footnote 297 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:298">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:298" rev="footnote" title="Jump back to footnote 298 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:299">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:299" rev="footnote" title="Jump back to footnote 299 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:300">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:300" rev="footnote" title="Jump back to footnote 300 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:301">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:301" rev="footnote" title="Jump back to footnote 301 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:302">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:302" rev="footnote" title="Jump back to footnote 302 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:303">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:303" rev="footnote" title="Jump back to footnote 303 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:304">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:304" rev="footnote" title="Jump back to footnote 304 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:305">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:305" rev="footnote" title="Jump back to footnote 305 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:306">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:306" rev="footnote" title="Jump back to footnote 306 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:307">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:307" rev="footnote" title="Jump back to footnote 307 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:308">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:308" rev="footnote" title="Jump back to footnote 308 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:309">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:309" rev="footnote" title="Jump back to footnote 309 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:310">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:310" rev="footnote" title="Jump back to footnote 310 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:311">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:311" rev="footnote" title="Jump back to footnote 311 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:312">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:312" rev="footnote" title="Jump back to footnote 312 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:313">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:313" rev="footnote" title="Jump back to footnote 313 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:314">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:314" rev="footnote" title="Jump back to footnote 314 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:315">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:315" rev="footnote" title="Jump back to footnote 315 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:316">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:316" rev="footnote" title="Jump back to footnote 316 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:317">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:317" rev="footnote" title="Jump back to footnote 317 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:318">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:318" rev="footnote" title="Jump back to footnote 318 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:319">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:319" rev="footnote" title="Jump back to footnote 319 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:320">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:320" rev="footnote" title="Jump back to footnote 320 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:321">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:321" rev="footnote" title="Jump back to footnote 321 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:322">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:322" rev="footnote" title="Jump back to footnote 322 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:323">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:323" rev="footnote" title="Jump back to footnote 323 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:324">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:324" rev="footnote" title="Jump back to footnote 324 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:325">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:325" rev="footnote" title="Jump back to footnote 325 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:326">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:326" rev="footnote" title="Jump back to footnote 326 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:327">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:327" rev="footnote" title="Jump back to footnote 327 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:328">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:328" rev="footnote" title="Jump back to footnote 328 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:329">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:329" rev="footnote" title="Jump back to footnote 329 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:330">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:330" rev="footnote" title="Jump back to footnote 330 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:331">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:331" rev="footnote" title="Jump back to footnote 331 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:332">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:332" rev="footnote" title="Jump back to footnote 332 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:333">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:333" rev="footnote" title="Jump back to footnote 333 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:334">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:334" rev="footnote" title="Jump back to footnote 334 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:335">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:335" rev="footnote" title="Jump back to footnote 335 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:336">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:336" rev="footnote" title="Jump back to footnote 336 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:337">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:337" rev="footnote" title="Jump back to footnote 337 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:338">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:338" rev="footnote" title="Jump back to footnote 338 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:339">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:339" rev="footnote" title="Jump back to footnote 339 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:340">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:340" rev="footnote" title="Jump back to footnote 340 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:341">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:341" rev="footnote" title="Jump back to footnote 341 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:342">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:342" rev="footnote" title="Jump back to footnote 342 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:343">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:343" rev="footnote" title="Jump back to footnote 343 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:344">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:344" rev="footnote" title="Jump back to footnote 344 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:345">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:345" rev="footnote" title="Jump back to footnote 345 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:346">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:346" rev="footnote" title="Jump back to footnote 346 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:347">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:347" rev="footnote" title="Jump back to footnote 347 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:348">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:348" rev="footnote" title="Jump back to footnote 348 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:349">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:349" rev="footnote" title="Jump back to footnote 349 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:350">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:350" rev="footnote" title="Jump back to footnote 350 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:351">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:351" rev="footnote" title="Jump back to footnote 351 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:352">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:352" rev="footnote" title="Jump back to footnote 352 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:353">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:353" rev="footnote" title="Jump back to footnote 353 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:354">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:354" rev="footnote" title="Jump back to footnote 354 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:355">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:355" rev="footnote" title="Jump back to footnote 355 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:356">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:356" rev="footnote" title="Jump back to footnote 356 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:357">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:357" rev="footnote" title="Jump back to footnote 357 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:358">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:358" rev="footnote" title="Jump back to footnote 358 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:359">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:359" rev="footnote" title="Jump back to footnote 359 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:360">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:360" rev="footnote" title="Jump back to footnote 360 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:361">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:361" rev="footnote" title="Jump back to footnote 361 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:362">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:362" rev="footnote" title="Jump back to footnote 362 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:363">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:363" rev="footnote" title="Jump back to footnote 363 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:364">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:364" rev="footnote" title="Jump back to footnote 364 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:365">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:365" rev="footnote" title="Jump back to footnote 365 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:366">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:366" rev="footnote" title="Jump back to footnote 366 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:367">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:367" rev="footnote" title="Jump back to footnote 367 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:368">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:368" rev="footnote" title="Jump back to footnote 368 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:369">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:369" rev="footnote" title="Jump back to footnote 369 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:370">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:370" rev="footnote" title="Jump back to footnote 370 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:371">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:371" rev="footnote" title="Jump back to footnote 371 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:372">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:372" rev="footnote" title="Jump back to footnote 372 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:373">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:373" rev="footnote" title="Jump back to footnote 373 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:374">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:374" rev="footnote" title="Jump back to footnote 374 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:375">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:375" rev="footnote" title="Jump back to footnote 375 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:376">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:376" rev="footnote" title="Jump back to footnote 376 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:377">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:377" rev="footnote" title="Jump back to footnote 377 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:378">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:378" rev="footnote" title="Jump back to footnote 378 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:379">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:379" rev="footnote" title="Jump back to footnote 379 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:380">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:380" rev="footnote" title="Jump back to footnote 380 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:381">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:381" rev="footnote" title="Jump back to footnote 381 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:382">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:382" rev="footnote" title="Jump back to footnote 382 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:383">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:383" rev="footnote" title="Jump back to footnote 383 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:384">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:384" rev="footnote" title="Jump back to footnote 384 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:385">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:385" rev="footnote" title="Jump back to footnote 385 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:386">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:386" rev="footnote" title="Jump back to footnote 386 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:387">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:387" rev="footnote" title="Jump back to footnote 387 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:388">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:388" rev="footnote" title="Jump back to footnote 388 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:389">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:389" rev="footnote" title="Jump back to footnote 389 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:390">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:390" rev="footnote" title="Jump back to footnote 390 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:391">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:391" rev="footnote" title="Jump back to footnote 391 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:392">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:392" rev="footnote" title="Jump back to footnote 392 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:393">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:393" rev="footnote" title="Jump back to footnote 393 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:394">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:394" rev="footnote" title="Jump back to footnote 394 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:395">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:395" rev="footnote" title="Jump back to footnote 395 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:396">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:396" rev="footnote" title="Jump back to footnote 396 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:397">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:397" rev="footnote" title="Jump back to footnote 397 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:398">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:398" rev="footnote" title="Jump back to footnote 398 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:399">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:399" rev="footnote" title="Jump back to footnote 399 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:400">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:400" rev="footnote" title="Jump back to footnote 400 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:401">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:401" rev="footnote" title="Jump back to footnote 401 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:402">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:402" rev="footnote" title="Jump back to footnote 402 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:403">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:403" rev="footnote" title="Jump back to footnote 403 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:404">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:404" rev="footnote" title="Jump back to footnote 404 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:405">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:405" rev="footnote" title="Jump back to footnote 405 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:406">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:406" rev="footnote" title="Jump back to footnote 406 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:407">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:407" rev="footnote" title="Jump back to footnote 407 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:408">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:408" rev="footnote" title="Jump back to footnote 408 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:409">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:409" rev="footnote" title="Jump back to footnote 409 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:410">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:410" rev="footnote" title="Jump back to footnote 410 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:411">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:411" rev="footnote" title="Jump back to footnote 411 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:412">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:412" rev="footnote" title="Jump back to footnote 412 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:413">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:413" rev="footnote" title="Jump back to footnote 413 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:414">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:414" rev="footnote" title="Jump back to footnote 414 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:415">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:415" rev="footnote" title="Jump back to footnote 415 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:416">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:416" rev="footnote" title="Jump back to footnote 416 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:417">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:417" rev="footnote" title="Jump back to footnote 417 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:418">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:418" rev="footnote" title="Jump back to footnote 418 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:419">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:419" rev="footnote" title="Jump back to footnote 419 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:420">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:420" rev="footnote" title="Jump back to footnote 420 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:421">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:421" rev="footnote" title="Jump back to footnote 421 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:422">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:422" rev="footnote" title="Jump back to footnote 422 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:423">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:423" rev="footnote" title="Jump back to footnote 423 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:424">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:424" rev="footnote" title="Jump back to footnote 424 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:425">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:425" rev="footnote" title="Jump back to footnote 425 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:426">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:426" rev="footnote" title="Jump back to footnote 426 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:427">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:427" rev="footnote" title="Jump back to footnote 427 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:428">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:428" rev="footnote" title="Jump back to footnote 428 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:429">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:429" rev="footnote" title="Jump back to footnote 429 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:430">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:430" rev="footnote" title="Jump back to footnote 430 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:431">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:431" rev="footnote" title="Jump back to footnote 431 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:432">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:432" rev="footnote" title="Jump back to footnote 432 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:433">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:433" rev="footnote" title="Jump back to footnote 433 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:434">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:434" rev="footnote" title="Jump back to footnote 434 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:435">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:435" rev="footnote" title="Jump back to footnote 435 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:436">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:436" rev="footnote" title="Jump back to footnote 436 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:437">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:437" rev="footnote" title="Jump back to footnote 437 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:438">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:438" rev="footnote" title="Jump back to footnote 438 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:439">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:439" rev="footnote" title="Jump back to footnote 439 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:440">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:440" rev="footnote" title="Jump back to footnote 440 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:441">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:441" rev="footnote" title="Jump back to footnote 441 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:442">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:442" rev="footnote" title="Jump back to footnote 442 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:443">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:443" rev="footnote" title="Jump back to footnote 443 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:444">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:444" rev="footnote" title="Jump back to footnote 444 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:445">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:445" rev="footnote" title="Jump back to footnote 445 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:446">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:446" rev="footnote" title="Jump back to footnote 446 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:447">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:447" rev="footnote" title="Jump back to footnote 447 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:448">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:448" rev="footnote" title="Jump back to footnote 448 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:449">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:449" rev="footnote" title="Jump back to footnote 449 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:450">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:450" rev="footnote" title="Jump back to footnote 450 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:451">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:451" rev="footnote" title="Jump back to footnote 451 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:452">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:452" rev="footnote" title="Jump back to footnote 452 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:453">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:453" rev="footnote" title="Jump back to footnote 453 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:454">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:454" rev="footnote" title="Jump back to footnote 454 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:455">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:455" rev="footnote" title="Jump back to footnote 455 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:456">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:456" rev="footnote" title="Jump back to footnote 456 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:457">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:457" rev="footnote" title="Jump back to footnote 457 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:458">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:458" rev="footnote" title="Jump back to footnote 458 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:459">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:459" rev="footnote" title="Jump back to footnote 459 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:460">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:460" rev="footnote" title="Jump back to footnote 460 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:461">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:461" rev="footnote" title="Jump back to footnote 461 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:462">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:462" rev="footnote" title="Jump back to footnote 462 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:463">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:463" rev="footnote" title="Jump back to footnote 463 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:464">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:464" rev="footnote" title="Jump back to footnote 464 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:465">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:465" rev="footnote" title="Jump back to footnote 465 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:466">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:466" rev="footnote" title="Jump back to footnote 466 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:467">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:467" rev="footnote" title="Jump back to footnote 467 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:468">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:468" rev="footnote" title="Jump back to footnote 468 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:469">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:469" rev="footnote" title="Jump back to footnote 469 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:470">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:470" rev="footnote" title="Jump back to footnote 470 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:471">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:471" rev="footnote" title="Jump back to footnote 471 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:472">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:472" rev="footnote" title="Jump back to footnote 472 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:473">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:473" rev="footnote" title="Jump back to footnote 473 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:474">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:474" rev="footnote" title="Jump back to footnote 474 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:475">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:475" rev="footnote" title="Jump back to footnote 475 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:476">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:476" rev="footnote" title="Jump back to footnote 476 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:477">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:477" rev="footnote" title="Jump back to footnote 477 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:478">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:478" rev="footnote" title="Jump back to footnote 478 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:479">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:479" rev="footnote" title="Jump back to footnote 479 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:480">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:480" rev="footnote" title="Jump back to footnote 480 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:481">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:481" rev="footnote" title="Jump back to footnote 481 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:482">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:482" rev="footnote" title="Jump back to footnote 482 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:483">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:483" rev="footnote" title="Jump back to footnote 483 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:484">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:484" rev="footnote" title="Jump back to footnote 484 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:485">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:485" rev="footnote" title="Jump back to footnote 485 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:486">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:486" rev="footnote" title="Jump back to footnote 486 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:487">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:487" rev="footnote" title="Jump back to footnote 487 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:488">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:488" rev="footnote" title="Jump back to footnote 488 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:489">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:489" rev="footnote" title="Jump back to footnote 489 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:490">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:490" rev="footnote" title="Jump back to footnote 490 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:491">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:491" rev="footnote" title="Jump back to footnote 491 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:492">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:492" rev="footnote" title="Jump back to footnote 492 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:493">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:493" rev="footnote" title="Jump back to footnote 493 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:494">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:494" rev="footnote" title="Jump back to footnote 494 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:495">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:495" rev="footnote" title="Jump back to footnote 495 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:496">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:496" rev="footnote" title="Jump back to footnote 496 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:497">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:497" rev="footnote" title="Jump back to footnote 497 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:498">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:498" rev="footnote" title="Jump back to footnote 498 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:499">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:499" rev="footnote" title="Jump back to footnote 499 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:500">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:500" rev="footnote" title="Jump back to footnote 500 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:501">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:501" rev="footnote" title="Jump back to footnote 501 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:502">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:502" rev="footnote" title="Jump back to footnote 502 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:503">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:503" rev="footnote" title="Jump back to footnote 503 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:504">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:504" rev="footnote" title="Jump back to footnote 504 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:505">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:505" rev="footnote" title="Jump back to footnote 505 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:506">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:506" rev="footnote" title="Jump back to footnote 506 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:507">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:507" rev="footnote" title="Jump back to footnote 507 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:508">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:508" rev="footnote" title="Jump back to footnote 508 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:509">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:509" rev="footnote" title="Jump back to footnote 509 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:510">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:510" rev="footnote" title="Jump back to footnote 510 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:511">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:511" rev="footnote" title="Jump back to footnote 511 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:512">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:512" rev="footnote" title="Jump back to footnote 512 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:513">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:513" rev="footnote" title="Jump back to footnote 513 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:514">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:514" rev="footnote" title="Jump back to footnote 514 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:515">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:515" rev="footnote" title="Jump back to footnote 515 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:516">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:516" rev="footnote" title="Jump back to footnote 516 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:517">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:517" rev="footnote" title="Jump back to footnote 517 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:518">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:518" rev="footnote" title="Jump back to footnote 518 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:519">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:519" rev="footnote" title="Jump back to footnote 519 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:520">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:520" rev="footnote" title="Jump back to footnote 520 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:521">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:521" rev="footnote" title="Jump back to footnote 521 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:522">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:522" rev="footnote" title="Jump back to footnote 522 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:523">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:523" rev="footnote" title="Jump back to footnote 523 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:524">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:524" rev="footnote" title="Jump back to footnote 524 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:525">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:525" rev="footnote" title="Jump back to footnote 525 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:526">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:526" rev="footnote" title="Jump back to footnote 526 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:527">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:527" rev="footnote" title="Jump back to footnote 527 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:528">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:528" rev="footnote" title="Jump back to footnote 528 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:529">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:529" rev="footnote" title="Jump back to footnote 529 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:530">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:530" rev="footnote" title="Jump back to footnote 530 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:531">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:531" rev="footnote" title="Jump back to footnote 531 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:532">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:532" rev="footnote" title="Jump back to footnote 532 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:533">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:533" rev="footnote" title="Jump back to footnote 533 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:534">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:534" rev="footnote" title="Jump back to footnote 534 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:535">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:535" rev="footnote" title="Jump back to footnote 535 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:536">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:536" rev="footnote" title="Jump back to footnote 536 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:537">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:537" rev="footnote" title="Jump back to footnote 537 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:538">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:538" rev="footnote" title="Jump back to footnote 538 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:539">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:539" rev="footnote" title="Jump back to footnote 539 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:540">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:540" rev="footnote" title="Jump back to footnote 540 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:541">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:541" rev="footnote" title="Jump back to footnote 541 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:542">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:542" rev="footnote" title="Jump back to footnote 542 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:543">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:543" rev="footnote" title="Jump back to footnote 543 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:544">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:544" rev="footnote" title="Jump back to footnote 544 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:545">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:545" rev="footnote" title="Jump back to footnote 545 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:546">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:546" rev="footnote" title="Jump back to footnote 546 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:547">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:547" rev="footnote" title="Jump back to footnote 547 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:548">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:548" rev="footnote" title="Jump back to footnote 548 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:549">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:549" rev="footnote" title="Jump back to footnote 549 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:550">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:550" rev="footnote" title="Jump back to footnote 550 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:551">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:551" rev="footnote" title="Jump back to footnote 551 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:552">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:552" rev="footnote" title="Jump back to footnote 552 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:553">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:553" rev="footnote" title="Jump back to footnote 553 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:554">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:554" rev="footnote" title="Jump back to footnote 554 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:555">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:555" rev="footnote" title="Jump back to footnote 555 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:556">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:556" rev="footnote" title="Jump back to footnote 556 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:557">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:557" rev="footnote" title="Jump back to footnote 557 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:558">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:558" rev="footnote" title="Jump back to footnote 558 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:559">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:559" rev="footnote" title="Jump back to footnote 559 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:560">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:560" rev="footnote" title="Jump back to footnote 560 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:561">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:561" rev="footnote" title="Jump back to footnote 561 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:562">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:562" rev="footnote" title="Jump back to footnote 562 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:563">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:563" rev="footnote" title="Jump back to footnote 563 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:564">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:564" rev="footnote" title="Jump back to footnote 564 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:565">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:565" rev="footnote" title="Jump back to footnote 565 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:566">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:566" rev="footnote" title="Jump back to footnote 566 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:567">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:567" rev="footnote" title="Jump back to footnote 567 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:568">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:568" rev="footnote" title="Jump back to footnote 568 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:569">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:569" rev="footnote" title="Jump back to footnote 569 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:570">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:570" rev="footnote" title="Jump back to footnote 570 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:571">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:571" rev="footnote" title="Jump back to footnote 571 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:572">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:572" rev="footnote" title="Jump back to footnote 572 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:573">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:573" rev="footnote" title="Jump back to footnote 573 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:574">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:574" rev="footnote" title="Jump back to footnote 574 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:575">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:575" rev="footnote" title="Jump back to footnote 575 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:576">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:576" rev="footnote" title="Jump back to footnote 576 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:577">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:577" rev="footnote" title="Jump back to footnote 577 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:578">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:578" rev="footnote" title="Jump back to footnote 578 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:579">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:579" rev="footnote" title="Jump back to footnote 579 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:580">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:580" rev="footnote" title="Jump back to footnote 580 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:581">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:581" rev="footnote" title="Jump back to footnote 581 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:582">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:582" rev="footnote" title="Jump back to footnote 582 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:583">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:583" rev="footnote" title="Jump back to footnote 583 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:584">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:584" rev="footnote" title="Jump back to footnote 584 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:585">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:585" rev="footnote" title="Jump back to footnote 585 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:586">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:586" rev="footnote" title="Jump back to footnote 586 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:587">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:587" rev="footnote" title="Jump back to footnote 587 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:588">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:588" rev="footnote" title="Jump back to footnote 588 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:589">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:589" rev="footnote" title="Jump back to footnote 589 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:590">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:590" rev="footnote" title="Jump back to footnote 590 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:591">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:591" rev="footnote" title="Jump back to footnote 591 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:592">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:592" rev="footnote" title="Jump back to footnote 592 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:593">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:593" rev="footnote" title="Jump back to footnote 593 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:594">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:594" rev="footnote" title="Jump back to footnote 594 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:595">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:595" rev="footnote" title="Jump back to footnote 595 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:596">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:596" rev="footnote" title="Jump back to footnote 596 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:597">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:597" rev="footnote" title="Jump back to footnote 597 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:598">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:598" rev="footnote" title="Jump back to footnote 598 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:599">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:599" rev="footnote" title="Jump back to footnote 599 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:600">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:600" rev="footnote" title="Jump back to footnote 600 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:601">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:601" rev="footnote" title="Jump back to footnote 601 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:602">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:602" rev="footnote" title="Jump back to footnote 602 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:603">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:603" rev="footnote" title="Jump back to footnote 603 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:604">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:604" rev="footnote" title="Jump back to footnote 604 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:605">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:605" rev="footnote" title="Jump back to footnote 605 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:606">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:606" rev="footnote" title="Jump back to footnote 606 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:607">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:607" rev="footnote" title="Jump back to footnote 607 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:608">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:608" rev="footnote" title="Jump back to footnote 608 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:609">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:609" rev="footnote" title="Jump back to footnote 609 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:610">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:610" rev="footnote" title="Jump back to footnote 610 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:611">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:611" rev="footnote" title="Jump back to footnote 611 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:612">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:612" rev="footnote" title="Jump back to footnote 612 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:613">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:613" rev="footnote" title="Jump back to footnote 613 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:614">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:614" rev="footnote" title="Jump back to footnote 614 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:615">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:615" rev="footnote" title="Jump back to footnote 615 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:616">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:616" rev="footnote" title="Jump back to footnote 616 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:617">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:617" rev="footnote" title="Jump back to footnote 617 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:618">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:618" rev="footnote" title="Jump back to footnote 618 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:619">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:619" rev="footnote" title="Jump back to footnote 619 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:620">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:620" rev="footnote" title="Jump back to footnote 620 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:621">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:621" rev="footnote" title="Jump back to footnote 621 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:622">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:622" rev="footnote" title="Jump back to footnote 622 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:623">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:623" rev="footnote" title="Jump back to footnote 623 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:624">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:624" rev="footnote" title="Jump back to footnote 624 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:625">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:625" rev="footnote" title="Jump back to footnote 625 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:626">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:626" rev="footnote" title="Jump back to footnote 626 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:627">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:627" rev="footnote" title="Jump back to footnote 627 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:628">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:628" rev="footnote" title="Jump back to footnote 628 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:629">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:629" rev="footnote" title="Jump back to footnote 629 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:630">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:630" rev="footnote" title="Jump back to footnote 630 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:631">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:631" rev="footnote" title="Jump back to footnote 631 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:632">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:632" rev="footnote" title="Jump back to footnote 632 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:633">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:633" rev="footnote" title="Jump back to footnote 633 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:634">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:634" rev="footnote" title="Jump back to footnote 634 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:635">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:635" rev="footnote" title="Jump back to footnote 635 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:636">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:636" rev="footnote" title="Jump back to footnote 636 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:637">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:637" rev="footnote" title="Jump back to footnote 637 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:638">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:638" rev="footnote" title="Jump back to footnote 638 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:639">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:639" rev="footnote" title="Jump back to footnote 639 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:640">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:640" rev="footnote" title="Jump back to footnote 640 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:641">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:641" rev="footnote" title="Jump back to footnote 641 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:642">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:642" rev="footnote" title="Jump back to footnote 642 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:643">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:643" rev="footnote" title="Jump back to footnote 643 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:644">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:644" rev="footnote" title="Jump back to footnote 644 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:645">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:645" rev="footnote" title="Jump back to footnote 645 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:646">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:646" rev="footnote" title="Jump back to footnote 646 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:647">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:647" rev="footnote" title="Jump back to footnote 647 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:648">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:648" rev="footnote" title="Jump back to footnote 648 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:649">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:649" rev="footnote" title="Jump back to footnote 649 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:650">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:650" rev="footnote" title="Jump back to footnote 650 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:651">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:651" rev="footnote" title="Jump back to footnote 651 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:652">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:652" rev="footnote" title="Jump back to footnote 652 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:653">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:653" rev="footnote" title="Jump back to footnote 653 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:654">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:654" rev="footnote" title="Jump back to footnote 654 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:655">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:655" rev="footnote" title="Jump back to footnote 655 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:656">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:656" rev="footnote" title="Jump back to footnote 656 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:657">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:657" rev="footnote" title="Jump back to footnote 657 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:658">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:658" rev="footnote" title="Jump back to footnote 658 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:659">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:659" rev="footnote" title="Jump back to footnote 659 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:660">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:660" rev="footnote" title="Jump back to footnote 660 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:661">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:661" rev="footnote" title="Jump back to footnote 661 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:662">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:662" rev="footnote" title="Jump back to footnote 662 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:663">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:663" rev="footnote" title="Jump back to footnote 663 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:664">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:664" rev="footnote" title="Jump back to footnote 664 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:665">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:665" rev="footnote" title="Jump back to footnote 665 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:666">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:666" rev="footnote" title="Jump back to footnote 666 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:667">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:667" rev="footnote" title="Jump back to footnote 667 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:668">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:668" rev="footnote" title="Jump back to footnote 668 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:669">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:669" rev="footnote" title="Jump back to footnote 669 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:670">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:670" rev="footnote" title="Jump back to footnote 670 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:671">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:671" rev="footnote" title="Jump back to footnote 671 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:672">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:672" rev="footnote" title="Jump back to footnote 672 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:673">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:673" rev="footnote" title="Jump back to footnote 673 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:674">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:674" rev="footnote" title="Jump back to footnote 674 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:675">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:675" rev="footnote" title="Jump back to footnote 675 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:676">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:676" rev="footnote" title="Jump back to footnote 676 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:677">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:677" rev="footnote" title="Jump back to footnote 677 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:678">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:678" rev="footnote" title="Jump back to footnote 678 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:679">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:679" rev="footnote" title="Jump back to footnote 679 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:680">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:680" rev="footnote" title="Jump back to footnote 680 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:681">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:681" rev="footnote" title="Jump back to footnote 681 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:682">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:682" rev="footnote" title="Jump back to footnote 682 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:683">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:683" rev="footnote" title="Jump back to footnote 683 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:684">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:684" rev="footnote" title="Jump back to footnote 684 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:685">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:685" rev="footnote" title="Jump back to footnote 685 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:686">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:686" rev="footnote" title="Jump back to footnote 686 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:687">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:687" rev="footnote" title="Jump back to footnote 687 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:688">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:688" rev="footnote" title="Jump back to footnote 688 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:689">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:689" rev="footnote" title="Jump back to footnote 689 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:690">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:690" rev="footnote" title="Jump back to footnote 690 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:691">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:691" rev="footnote" title="Jump back to footnote 691 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:692">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:692" rev="footnote" title="Jump back to footnote 692 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:693">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:693" rev="footnote" title="Jump back to footnote 693 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:694">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:694" rev="footnote" title="Jump back to footnote 694 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:695">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:695" rev="footnote" title="Jump back to footnote 695 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:696">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:696" rev="footnote" title="Jump back to footnote 696 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:697">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:697" rev="footnote" title="Jump back to footnote 697 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:698">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:698" rev="footnote" title="Jump back to footnote 698 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:699">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:699" rev="footnote" title="Jump back to footnote 699 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:700">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:700" rev="footnote" title="Jump back to footnote 700 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:701">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:701" rev="footnote" title="Jump back to footnote 701 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:702">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:702" rev="footnote" title="Jump back to footnote 702 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:703">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:703" rev="footnote" title="Jump back to footnote 703 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:704">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:704" rev="footnote" title="Jump back to footnote 704 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:705">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:705" rev="footnote" title="Jump back to footnote 705 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:706">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:706" rev="footnote" title="Jump back to footnote 706 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:707">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:707" rev="footnote" title="Jump back to footnote 707 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:708">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:708" rev="footnote" title="Jump back to footnote 708 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:709">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:709" rev="footnote" title="Jump back to footnote 709 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:710">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:710" rev="footnote" title="Jump back to footnote 710 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:711">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:711" rev="footnote" title="Jump back to footnote 711 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:712">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:712" rev="footnote" title="Jump back to footnote 712 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:713">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:713" rev="footnote" title="Jump back to footnote 713 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:714">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:714" rev="footnote" title="Jump back to footnote 714 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:715">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:715" rev="footnote" title="Jump back to footnote 715 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:716">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:716" rev="footnote" title="Jump back to footnote 716 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:717">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:717" rev="footnote" title="Jump back to footnote 717 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:718">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:718" rev="footnote" title="Jump back to footnote 718 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:719">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:719" rev="footnote" title="Jump back to footnote 719 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:720">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:720" rev="footnote" title="Jump back to footnote 720 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:721">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:721" rev="footnote" title="Jump back to footnote 721 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:722">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:722" rev="footnote" title="Jump back to footnote 722 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:723">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:723" rev="footnote" title="Jump back to footnote 723 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:724">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:724" rev="footnote" title="Jump back to footnote 724 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:725">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:725" rev="footnote" title="Jump back to footnote 725 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:726">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:726" rev="footnote" title="Jump back to footnote 726 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:727">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:727" rev="footnote" title="Jump back to footnote 727 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:728">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:728" rev="footnote" title="Jump back to footnote 728 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:729">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:729" rev="footnote" title="Jump back to footnote 729 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:730">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:730" rev="footnote" title="Jump back to footnote 730 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:731">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:731" rev="footnote" title="Jump back to footnote 731 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:732">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:732" rev="footnote" title="Jump back to footnote 732 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:733">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:733" rev="footnote" title="Jump back to footnote 733 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:734">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:734" rev="footnote" title="Jump back to footnote 734 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:735">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:735" rev="footnote" title="Jump back to footnote 735 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:736">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:736" rev="footnote" title="Jump back to footnote 736 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:737">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:737" rev="footnote" title="Jump back to footnote 737 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:738">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:738" rev="footnote" title="Jump back to footnote 738 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:739">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:739" rev="footnote" title="Jump back to footnote 739 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:740">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:740" rev="footnote" title="Jump back to footnote 740 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:741">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:741" rev="footnote" title="Jump back to footnote 741 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:742">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:742" rev="footnote" title="Jump back to footnote 742 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:743">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:743" rev="footnote" title="Jump back to footnote 743 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:744">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:744" rev="footnote" title="Jump back to footnote 744 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:745">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:745" rev="footnote" title="Jump back to footnote 745 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:746">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:746" rev="footnote" title="Jump back to footnote 746 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:747">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:747" rev="footnote" title="Jump back to footnote 747 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:748">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:748" rev="footnote" title="Jump back to footnote 748 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:749">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:749" rev="footnote" title="Jump back to footnote 749 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:750">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:750" rev="footnote" title="Jump back to footnote 750 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:751">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:751" rev="footnote" title="Jump back to footnote 751 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:752">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:752" rev="footnote" title="Jump back to footnote 752 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:753">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:753" rev="footnote" title="Jump back to footnote 753 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:754">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:754" rev="footnote" title="Jump back to footnote 754 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:755">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:755" rev="footnote" title="Jump back to footnote 755 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:756">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:756" rev="footnote" title="Jump back to footnote 756 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:757">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:757" rev="footnote" title="Jump back to footnote 757 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:758">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:758" rev="footnote" title="Jump back to footnote 758 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:759">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:759" rev="footnote" title="Jump back to footnote 759 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:760">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:760" rev="footnote" title="Jump back to footnote 760 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:761">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:761" rev="footnote" title="Jump back to footnote 761 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:762">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:762" rev="footnote" title="Jump back to footnote 762 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:763">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:763" rev="footnote" title="Jump back to footnote 763 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:764">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:764" rev="footnote" title="Jump back to footnote 764 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:765">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:765" rev="footnote" title="Jump back to footnote 765 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:766">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:766" rev="footnote" title="Jump back to footnote 766 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:767">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:767" rev="footnote" title="Jump back to footnote 767 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:768">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:768" rev="footnote" title="Jump back to footnote 768 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:769">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:769" rev="footnote" title="Jump back to footnote 769 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:770">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:770" rev="footnote" title="Jump back to footnote 770 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:771">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:771" rev="footnote" title="Jump back to footnote 771 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:772">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:772" rev="footnote" title="Jump back to footnote 772 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:773">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:773" rev="footnote" title="Jump back to footnote 773 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:774">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:774" rev="footnote" title="Jump back to footnote 774 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:775">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:775" rev="footnote" title="Jump back to footnote 775 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:776">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:776" rev="footnote" title="Jump back to footnote 776 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:777">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:777" rev="footnote" title="Jump back to footnote 777 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:778">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:778" rev="footnote" title="Jump back to footnote 778 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:779">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:779" rev="footnote" title="Jump back to footnote 779 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:780">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:780" rev="footnote" title="Jump back to footnote 780 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:781">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:781" rev="footnote" title="Jump back to footnote 781 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:782">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:782" rev="footnote" title="Jump back to footnote 782 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:783">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:783" rev="footnote" title="Jump back to footnote 783 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:784">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:784" rev="footnote" title="Jump back to footnote 784 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:785">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:785" rev="footnote" title="Jump back to footnote 785 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:786">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:786" rev="footnote" title="Jump back to footnote 786 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:787">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:787" rev="footnote" title="Jump back to footnote 787 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:788">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:788" rev="footnote" title="Jump back to footnote 788 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:789">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:789" rev="footnote" title="Jump back to footnote 789 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:790">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:790" rev="footnote" title="Jump back to footnote 790 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:791">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:791" rev="footnote" title="Jump back to footnote 791 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:792">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:792" rev="footnote" title="Jump back to footnote 792 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:793">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:793" rev="footnote" title="Jump back to footnote 793 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:794">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:794" rev="footnote" title="Jump back to footnote 794 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:795">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:795" rev="footnote" title="Jump back to footnote 795 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:796">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:796" rev="footnote" title="Jump back to footnote 796 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:797">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:797" rev="footnote" title="Jump back to footnote 797 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:798">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:798" rev="footnote" title="Jump back to footnote 798 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:799">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:799" rev="footnote" title="Jump back to footnote 799 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:800">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:800" rev="footnote" title="Jump back to footnote 800 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:801">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:801" rev="footnote" title="Jump back to footnote 801 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:802">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:802" rev="footnote" title="Jump back to footnote 802 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:803">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:803" rev="footnote" title="Jump back to footnote 803 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:804">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:804" rev="footnote" title="Jump back to footnote 804 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:805">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:805" rev="footnote" title="Jump back to footnote 805 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:806">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:806" rev="footnote" title="Jump back to footnote 806 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:807">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:807" rev="footnote" title="Jump back to footnote 807 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:808">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:808" rev="footnote" title="Jump back to footnote 808 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:809">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:809" rev="footnote" title="Jump back to footnote 809 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:810">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:810" rev="footnote" title="Jump back to footnote 810 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:811">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:811" rev="footnote" title="Jump back to footnote 811 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:812">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:812" rev="footnote" title="Jump back to footnote 812 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:813">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:813" rev="footnote" title="Jump back to footnote 813 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:814">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:814" rev="footnote" title="Jump back to footnote 814 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:815">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:815" rev="footnote" title="Jump back to footnote 815 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:816">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:816" rev="footnote" title="Jump back to footnote 816 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:817">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:817" rev="footnote" title="Jump back to footnote 817 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:818">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:818" rev="footnote" title="Jump back to footnote 818 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:819">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:819" rev="footnote" title="Jump back to footnote 819 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:820">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:820" rev="footnote" title="Jump back to footnote 820 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:821">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:821" rev="footnote" title="Jump back to footnote 821 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:822">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:822" rev="footnote" title="Jump back to footnote 822 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:823">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:823" rev="footnote" title="Jump back to footnote 823 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:824">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:824" rev="footnote" title="Jump back to footnote 824 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:825">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:825" rev="footnote" title="Jump back to footnote 825 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:826">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:826" rev="footnote" title="Jump back to footnote 826 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:827">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:827" rev="footnote" title="Jump back to footnote 827 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:828">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:828" rev="footnote" title="Jump back to footnote 828 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:829">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:829" rev="footnote" title="Jump back to footnote 829 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:830">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:830" rev="footnote" title="Jump back to footnote 830 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:831">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:831" rev="footnote" title="Jump back to footnote 831 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:832">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:832" rev="footnote" title="Jump back to footnote 832 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:833">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:833" rev="footnote" title="Jump back to footnote 833 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:834">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:834" rev="footnote" title="Jump back to footnote 834 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:835">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:835" rev="footnote" title="Jump back to footnote 835 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:836">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:836" rev="footnote" title="Jump back to footnote 836 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:837">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:837" rev="footnote" title="Jump back to footnote 837 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:838">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:838" rev="footnote" title="Jump back to footnote 838 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:839">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:839" rev="footnote" title="Jump back to footnote 839 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:840">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:840" rev="footnote" title="Jump back to footnote 840 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:841">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:841" rev="footnote" title="Jump back to footnote 841 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:842">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:842" rev="footnote" title="Jump back to footnote 842 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:843">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:843" rev="footnote" title="Jump back to footnote 843 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:844">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:844" rev="footnote" title="Jump back to footnote 844 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:845">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:845" rev="footnote" title="Jump back to footnote 845 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:846">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:846" rev="footnote" title="Jump back to footnote 846 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:847">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:847" rev="footnote" title="Jump back to footnote 847 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:848">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:848" rev="footnote" title="Jump back to footnote 848 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:849">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:849" rev="footnote" title="Jump back to footnote 849 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:850">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:850" rev="footnote" title="Jump back to footnote 850 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:851">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:851" rev="footnote" title="Jump back to footnote 851 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:852">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:852" rev="footnote" title="Jump back to footnote 852 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:853">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:853" rev="footnote" title="Jump back to footnote 853 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:854">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:854" rev="footnote" title="Jump back to footnote 854 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:855">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:855" rev="footnote" title="Jump back to footnote 855 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:856">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:856" rev="footnote" title="Jump back to footnote 856 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:857">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:857" rev="footnote" title="Jump back to footnote 857 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:858">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:858" rev="footnote" title="Jump back to footnote 858 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:859">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:859" rev="footnote" title="Jump back to footnote 859 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:860">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:860" rev="footnote" title="Jump back to footnote 860 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:861">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:861" rev="footnote" title="Jump back to footnote 861 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:862">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:862" rev="footnote" title="Jump back to footnote 862 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:863">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:863" rev="footnote" title="Jump back to footnote 863 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:864">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:864" rev="footnote" title="Jump back to footnote 864 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:865">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:865" rev="footnote" title="Jump back to footnote 865 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:866">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:866" rev="footnote" title="Jump back to footnote 866 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:867">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:867" rev="footnote" title="Jump back to footnote 867 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:868">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:868" rev="footnote" title="Jump back to footnote 868 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:869">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:869" rev="footnote" title="Jump back to footnote 869 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:870">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:870" rev="footnote" title="Jump back to footnote 870 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:871">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:871" rev="footnote" title="Jump back to footnote 871 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:872">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:872" rev="footnote" title="Jump back to footnote 872 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:873">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:873" rev="footnote" title="Jump back to footnote 873 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:874">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:874" rev="footnote" title="Jump back to footnote 874 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:875">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:875" rev="footnote" title="Jump back to footnote 875 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:876">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:876" rev="footnote" title="Jump back to footnote 876 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:877">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:877" rev="footnote" title="Jump back to footnote 877 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:878">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:878" rev="footnote" title="Jump back to footnote 878 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:879">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:879" rev="footnote" title="Jump back to footnote 879 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:880">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:880" rev="footnote" title="Jump back to footnote 880 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:881">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:881" rev="footnote" title="Jump back to footnote 881 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:882">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:882" rev="footnote" title="Jump back to footnote 882 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:883">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:883" rev="footnote" title="Jump back to footnote 883 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:884">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:884" rev="footnote" title="Jump back to footnote 884 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:885">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:885" rev="footnote" title="Jump back to footnote 885 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:886">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:886" rev="footnote" title="Jump back to footnote 886 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:887">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:887" rev="footnote" title="Jump back to footnote 887 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:888">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:888" rev="footnote" title="Jump back to footnote 888 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:889">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:889" rev="footnote" title="Jump back to footnote 889 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:890">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:890" rev="footnote" title="Jump back to footnote 890 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:891">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:891" rev="footnote" title="Jump back to footnote 891 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:892">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:892" rev="footnote" title="Jump back to footnote 892 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:893">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:893" rev="footnote" title="Jump back to footnote 893 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:894">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:894" rev="footnote" title="Jump back to footnote 894 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:895">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:895" rev="footnote" title="Jump back to footnote 895 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:896">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:896" rev="footnote" title="Jump back to footnote 896 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:897">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:897" rev="footnote" title="Jump back to footnote 897 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:898">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:898" rev="footnote" title="Jump back to footnote 898 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:899">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:899" rev="footnote" title="Jump back to footnote 899 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:900">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:900" rev="footnote" title="Jump back to footnote 900 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:901">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:901" rev="footnote" title="Jump back to footnote 901 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:902">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:902" rev="footnote" title="Jump back to footnote 902 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:903">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:903" rev="footnote" title="Jump back to footnote 903 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:904">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:904" rev="footnote" title="Jump back to footnote 904 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:905">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:905" rev="footnote" title="Jump back to footnote 905 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:906">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:906" rev="footnote" title="Jump back to footnote 906 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:907">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:907" rev="footnote" title="Jump back to footnote 907 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:908">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:908" rev="footnote" title="Jump back to footnote 908 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:909">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:909" rev="footnote" title="Jump back to footnote 909 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:910">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:910" rev="footnote" title="Jump back to footnote 910 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:911">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:911" rev="footnote" title="Jump back to footnote 911 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:912">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:912" rev="footnote" title="Jump back to footnote 912 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:913">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:913" rev="footnote" title="Jump back to footnote 913 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:914">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:914" rev="footnote" title="Jump back to footnote 914 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:915">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:915" rev="footnote" title="Jump back to footnote 915 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:916">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:916" rev="footnote" title="Jump back to footnote 916 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:917">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:917" rev="footnote" title="Jump back to footnote 917 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:918">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:918" rev="footnote" title="Jump back to footnote 918 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:919">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:919" rev="footnote" title="Jump back to footnote 919 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:920">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:920" rev="footnote" title="Jump back to footnote 920 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:921">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:921" rev="footnote" title="Jump back to footnote 921 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:922">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:922" rev="footnote" title="Jump back to footnote 922 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:923">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:923" rev="footnote" title="Jump back to footnote 923 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:924">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:924" rev="footnote" title="Jump back to footnote 924 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:925">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:925" rev="footnote" title="Jump back to footnote 925 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:926">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:926" rev="footnote" title="Jump back to footnote 926 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:927">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:927" rev="footnote" title="Jump back to footnote 927 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:928">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:928" rev="footnote" title="Jump back to footnote 928 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:929">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:929" rev="footnote" title="Jump back to footnote 929 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:930">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:930" rev="footnote" title="Jump back to footnote 930 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:931">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:931" rev="footnote" title="Jump back to footnote 931 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:932">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:932" rev="footnote" title="Jump back to footnote 932 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:933">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:933" rev="footnote" title="Jump back to footnote 933 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:934">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:934" rev="footnote" title="Jump back to footnote 934 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:935">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:935" rev="footnote" title="Jump back to footnote 935 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:936">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:936" rev="footnote" title="Jump back to footnote 936 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:937">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:937" rev="footnote" title="Jump back to footnote 937 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:938">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:938" rev="footnote" title="Jump back to footnote 938 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:939">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:939" rev="footnote" title="Jump back to footnote 939 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:940">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:940" rev="footnote" title="Jump back to footnote 940 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:941">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:941" rev="footnote" title="Jump back to footnote 941 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:942">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:942" rev="footnote" title="Jump back to footnote 942 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:943">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:943" rev="footnote" title="Jump back to footnote 943 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:944">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:944" rev="footnote" title="Jump back to footnote 944 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:945">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:945" rev="footnote" title="Jump back to footnote 945 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:946">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:946" rev="footnote" title="Jump back to footnote 946 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:947">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:947" rev="footnote" title="Jump back to footnote 947 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:948">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:948" rev="footnote" title="Jump back to footnote 948 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:949">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:949" rev="footnote" title="Jump back to footnote 949 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:950">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:950" rev="footnote" title="Jump back to footnote 950 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:951">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:951" rev="footnote" title="Jump back to footnote 951 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:952">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:952" rev="footnote" title="Jump back to footnote 952 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:953">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:953" rev="footnote" title="Jump back to footnote 953 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:954">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:954" rev="footnote" title="Jump back to footnote 954 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:955">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:955" rev="footnote" title="Jump back to footnote 955 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:956">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:956" rev="footnote" title="Jump back to footnote 956 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:957">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:957" rev="footnote" title="Jump back to footnote 957 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:958">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:958" rev="footnote" title="Jump back to footnote 958 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:959">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:959" rev="footnote" title="Jump back to footnote 959 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:960">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:960" rev="footnote" title="Jump back to footnote 960 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:961">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:961" rev="footnote" title="Jump back to footnote 961 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:962">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:962" rev="footnote" title="Jump back to footnote 962 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:963">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:963" rev="footnote" title="Jump back to footnote 963 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:964">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:964" rev="footnote" title="Jump back to footnote 964 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:965">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:965" rev="footnote" title="Jump back to footnote 965 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:966">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:966" rev="footnote" title="Jump back to footnote 966 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:967">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:967" rev="footnote" title="Jump back to footnote 967 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:968">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:968" rev="footnote" title="Jump back to footnote 968 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:969">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:969" rev="footnote" title="Jump back to footnote 969 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:970">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:970" rev="footnote" title="Jump back to footnote 970 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:971">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:971" rev="footnote" title="Jump back to footnote 971 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:972">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:972" rev="footnote" title="Jump back to footnote 972 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:973">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:973" rev="footnote" title="Jump back to footnote 973 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:974">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:974" rev="footnote" title="Jump back to footnote 974 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:975">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:975" rev="footnote" title="Jump back to footnote 975 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:976">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:976" rev="footnote" title="Jump back to footnote 976 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:977">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:977" rev="footnote" title="Jump back to footnote 977 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:978">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:978" rev="footnote" title="Jump back to footnote 978 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:979">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:979" rev="footnote" title="Jump back to footnote 979 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:980">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:980" rev="footnote" title="Jump back to footnote 980 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:981">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:981" rev="footnote" title="Jump back to footnote 981 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:982">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:982" rev="footnote" title="Jump back to footnote 982 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:983">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:983" rev="footnote" title="Jump back to footnote 983 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:984">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:984" rev="footnote" title="Jump back to footnote 984 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:985">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:985" rev="footnote" title="Jump back to footnote 985 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:986">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:986" rev="footnote" title="Jump back to footnote 986 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:987">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:987" rev="footnote" title="Jump back to footnote 987 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:988">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:988" rev="footnote" title="Jump back to footnote 988 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:989">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:989" rev="footnote" title="Jump back to footnote 989 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:990">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:990" rev="footnote" title="Jump back to footnote 990 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:991">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:991" rev="footnote" title="Jump back to footnote 991 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:992">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:992" rev="footnote" title="Jump back to footnote 992 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:993">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:993" rev="footnote" title="Jump back to footnote 993 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:994">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:994" rev="footnote" title="Jump back to footnote 994 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:995">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:995" rev="footnote" title="Jump back to footnote 995 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:996">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:996" rev="footnote" title="Jump back to footnote 996 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:997">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:997" rev="footnote" title="Jump back to footnote 997 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:998">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:998" rev="footnote" title="Jump back to footnote 998 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:999">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:999" rev="footnote" title="Jump back to footnote 999 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1000">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1000" rev="footnote" title="Jump back to footnote 1000 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1001">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1001" rev="footnote" title="Jump back to footnote 1001 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1002">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1002" rev="footnote" title="Jump back to footnote 1002 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1003">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1003" rev="footnote" title="Jump back to footnote 1003 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1004">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1004" rev="footnote" title="Jump back to footnote 1004 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1005">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1005" rev="footnote" title="Jump back to footnote 1005 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1006">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1006" rev="footnote" title="Jump back to footnote 1006 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1007">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1007" rev="footnote" title="Jump back to footnote 1007 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1008">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1008" rev="footnote" title="Jump back to footnote 1008 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1009">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1009" rev="footnote" title="Jump back to footnote 1009 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1010">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1010" rev="footnote" title="Jump back to footnote 1010 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1011">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1011" rev="footnote" title="Jump back to footnote 1011 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1012">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1012" rev="footnote" title="Jump back to footnote 1012 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1013">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1013" rev="footnote" title="Jump back to footnote 1013 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1014">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1014" rev="footnote" title="Jump back to footnote 1014 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1015">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1015" rev="footnote" title="Jump back to footnote 1015 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1016">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1016" rev="footnote" title="Jump back to footnote 1016 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1017">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1017" rev="footnote" title="Jump back to footnote 1017 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1018">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1018" rev="footnote" title="Jump back to footnote 1018 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1019">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1019" rev="footnote" title="Jump back to footnote 1019 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1020">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1020" rev="footnote" title="Jump back to footnote 1020 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1021">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1021" rev="footnote" title="Jump back to footnote 1021 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1022">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1022" rev="footnote" title="Jump back to footnote 1022 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1023">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1023" rev="footnote" title="Jump back to footnote 1023 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1024">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1024" rev="footnote" title="Jump back to footnote 1024 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1025">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1025" rev="footnote" title="Jump back to footnote 1025 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1026">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1026" rev="footnote" title="Jump back to footnote 1026 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1027">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1027" rev="footnote" title="Jump back to footnote 1027 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1028">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1028" rev="footnote" title="Jump back to footnote 1028 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1029">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1029" rev="footnote" title="Jump back to footnote 1029 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1030">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1030" rev="footnote" title="Jump back to footnote 1030 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1031">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1031" rev="footnote" title="Jump back to footnote 1031 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1032">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1032" rev="footnote" title="Jump back to footnote 1032 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1033">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1033" rev="footnote" title="Jump back to footnote 1033 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1034">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1034" rev="footnote" title="Jump back to footnote 1034 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1035">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1035" rev="footnote" title="Jump back to footnote 1035 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1036">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1036" rev="footnote" title="Jump back to footnote 1036 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1037">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1037" rev="footnote" title="Jump back to footnote 1037 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1038">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1038" rev="footnote" title="Jump back to footnote 1038 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1039">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1039" rev="footnote" title="Jump back to footnote 1039 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1040">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1040" rev="footnote" title="Jump back to footnote 1040 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1041">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1041" rev="footnote" title="Jump back to footnote 1041 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1042">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1042" rev="footnote" title="Jump back to footnote 1042 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1043">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1043" rev="footnote" title="Jump back to footnote 1043 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1044">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1044" rev="footnote" title="Jump back to footnote 1044 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1045">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1045" rev="footnote" title="Jump back to footnote 1045 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1046">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1046" rev="footnote" title="Jump back to footnote 1046 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1047">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1047" rev="footnote" title="Jump back to footnote 1047 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1048">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1048" rev="footnote" title="Jump back to footnote 1048 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1049">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1049" rev="footnote" title="Jump back to footnote 1049 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1050">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1050" rev="footnote" title="Jump back to footnote 1050 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1051">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1051" rev="footnote" title="Jump back to footnote 1051 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1052">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1052" rev="footnote" title="Jump back to footnote 1052 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1053">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1053" rev="footnote" title="Jump back to footnote 1053 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1054">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1054" rev="footnote" title="Jump back to footnote 1054 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1055">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1055" rev="footnote" title="Jump back to footnote 1055 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1056">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1056" rev="footnote" title="Jump back to footnote 1056 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1057">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1057" rev="footnote" title="Jump back to footnote 1057 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1058">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1058" rev="footnote" title="Jump back to footnote 1058 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1059">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1059" rev="footnote" title="Jump back to footnote 1059 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1060">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1060" rev="footnote" title="Jump back to footnote 1060 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1061">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1061" rev="footnote" title="Jump back to footnote 1061 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1062">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1062" rev="footnote" title="Jump back to footnote 1062 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1063">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1063" rev="footnote" title="Jump back to footnote 1063 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1064">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1064" rev="footnote" title="Jump back to footnote 1064 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1065">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1065" rev="footnote" title="Jump back to footnote 1065 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1066">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1066" rev="footnote" title="Jump back to footnote 1066 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1067">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1067" rev="footnote" title="Jump back to footnote 1067 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1068">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1068" rev="footnote" title="Jump back to footnote 1068 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1069">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1069" rev="footnote" title="Jump back to footnote 1069 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1070">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1070" rev="footnote" title="Jump back to footnote 1070 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1071">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1071" rev="footnote" title="Jump back to footnote 1071 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1072">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1072" rev="footnote" title="Jump back to footnote 1072 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1073">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1073" rev="footnote" title="Jump back to footnote 1073 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1074">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1074" rev="footnote" title="Jump back to footnote 1074 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1075">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1075" rev="footnote" title="Jump back to footnote 1075 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1076">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1076" rev="footnote" title="Jump back to footnote 1076 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1077">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1077" rev="footnote" title="Jump back to footnote 1077 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1078">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1078" rev="footnote" title="Jump back to footnote 1078 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1079">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1079" rev="footnote" title="Jump back to footnote 1079 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1080">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1080" rev="footnote" title="Jump back to footnote 1080 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1081">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1081" rev="footnote" title="Jump back to footnote 1081 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1082">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1082" rev="footnote" title="Jump back to footnote 1082 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1083">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1083" rev="footnote" title="Jump back to footnote 1083 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1084">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1084" rev="footnote" title="Jump back to footnote 1084 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1085">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1085" rev="footnote" title="Jump back to footnote 1085 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1086">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1086" rev="footnote" title="Jump back to footnote 1086 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1087">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1087" rev="footnote" title="Jump back to footnote 1087 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1088">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1088" rev="footnote" title="Jump back to footnote 1088 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1089">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1089" rev="footnote" title="Jump back to footnote 1089 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1090">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1090" rev="footnote" title="Jump back to footnote 1090 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1091">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1091" rev="footnote" title="Jump back to footnote 1091 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1092">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1092" rev="footnote" title="Jump back to footnote 1092 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1093">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1093" rev="footnote" title="Jump back to footnote 1093 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1094">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1094" rev="footnote" title="Jump back to footnote 1094 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1095">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1095" rev="footnote" title="Jump back to footnote 1095 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1096">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1096" rev="footnote" title="Jump back to footnote 1096 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1097">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1097" rev="footnote" title="Jump back to footnote 1097 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1098">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1098" rev="footnote" title="Jump back to footnote 1098 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1099">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1099" rev="footnote" title="Jump back to footnote 1099 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1100">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1100" rev="footnote" title="Jump back to footnote 1100 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1101">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1101" rev="footnote" title="Jump back to footnote 1101 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1102">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1102" rev="footnote" title="Jump back to footnote 1102 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1103">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1103" rev="footnote" title="Jump back to footnote 1103 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1104">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1104" rev="footnote" title="Jump back to footnote 1104 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1105">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1105" rev="footnote" title="Jump back to footnote 1105 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1106">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1106" rev="footnote" title="Jump back to footnote 1106 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1107">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1107" rev="footnote" title="Jump back to footnote 1107 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1108">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1108" rev="footnote" title="Jump back to footnote 1108 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1109">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1109" rev="footnote" title="Jump back to footnote 1109 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1110">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1110" rev="footnote" title="Jump back to footnote 1110 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1111">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1111" rev="footnote" title="Jump back to footnote 1111 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1112">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1112" rev="footnote" title="Jump back to footnote 1112 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1113">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1113" rev="footnote" title="Jump back to footnote 1113 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1114">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1114" rev="footnote" title="Jump back to footnote 1114 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1115">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1115" rev="footnote" title="Jump back to footnote 1115 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1116">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1116" rev="footnote" title="Jump back to footnote 1116 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1117">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1117" rev="footnote" title="Jump back to footnote 1117 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1118">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1118" rev="footnote" title="Jump back to footnote 1118 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1119">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1119" rev="footnote" title="Jump back to footnote 1119 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1120">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1120" rev="footnote" title="Jump back to footnote 1120 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1121">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1121" rev="footnote" title="Jump back to footnote 1121 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1122">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1122" rev="footnote" title="Jump back to footnote 1122 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1123">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1123" rev="footnote" title="Jump back to footnote 1123 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1124">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1124" rev="footnote" title="Jump back to footnote 1124 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1125">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1125" rev="footnote" title="Jump back to footnote 1125 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1126">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1126" rev="footnote" title="Jump back to footnote 1126 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1127">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1127" rev="footnote" title="Jump back to footnote 1127 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1128">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1128" rev="footnote" title="Jump back to footnote 1128 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1129">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1129" rev="footnote" title="Jump back to footnote 1129 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1130">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1130" rev="footnote" title="Jump back to footnote 1130 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1131">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1131" rev="footnote" title="Jump back to footnote 1131 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1132">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1132" rev="footnote" title="Jump back to footnote 1132 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1133">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1133" rev="footnote" title="Jump back to footnote 1133 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1134">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1134" rev="footnote" title="Jump back to footnote 1134 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1135">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1135" rev="footnote" title="Jump back to footnote 1135 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1136">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1136" rev="footnote" title="Jump back to footnote 1136 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1137">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1137" rev="footnote" title="Jump back to footnote 1137 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1138">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1138" rev="footnote" title="Jump back to footnote 1138 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1139">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1139" rev="footnote" title="Jump back to footnote 1139 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1140">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1140" rev="footnote" title="Jump back to footnote 1140 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1141">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1141" rev="footnote" title="Jump back to footnote 1141 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1142">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1142" rev="footnote" title="Jump back to footnote 1142 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1143">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1143" rev="footnote" title="Jump back to footnote 1143 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1144">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1144" rev="footnote" title="Jump back to footnote 1144 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1145">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1145" rev="footnote" title="Jump back to footnote 1145 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1146">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1146" rev="footnote" title="Jump back to footnote 1146 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1147">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1147" rev="footnote" title="Jump back to footnote 1147 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1148">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1148" rev="footnote" title="Jump back to footnote 1148 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1149">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1149" rev="footnote" title="Jump back to footnote 1149 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1150">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1150" rev="footnote" title="Jump back to footnote 1150 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1151">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1151" rev="footnote" title="Jump back to footnote 1151 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1152">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1152" rev="footnote" title="Jump back to footnote 1152 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1153">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1153" rev="footnote" title="Jump back to footnote 1153 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1154">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1154" rev="footnote" title="Jump back to footnote 1154 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1155">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1155" rev="footnote" title="Jump back to footnote 1155 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1156">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1156" rev="footnote" title="Jump back to footnote 1156 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1157">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1157" rev="footnote" title="Jump back to footnote 1157 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1158">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1158" rev="footnote" title="Jump back to footnote 1158 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1159">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1159" rev="footnote" title="Jump back to footnote 1159 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1160">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1160" rev="footnote" title="Jump back to footnote 1160 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1161">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1161" rev="footnote" title="Jump back to footnote 1161 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1162">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1162" rev="footnote" title="Jump back to footnote 1162 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1163">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1163" rev="footnote" title="Jump back to footnote 1163 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1164">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1164" rev="footnote" title="Jump back to footnote 1164 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1165">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1165" rev="footnote" title="Jump back to footnote 1165 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1166">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1166" rev="footnote" title="Jump back to footnote 1166 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1167">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1167" rev="footnote" title="Jump back to footnote 1167 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1168">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1168" rev="footnote" title="Jump back to footnote 1168 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1169">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1169" rev="footnote" title="Jump back to footnote 1169 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1170">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1170" rev="footnote" title="Jump back to footnote 1170 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1171">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1171" rev="footnote" title="Jump back to footnote 1171 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1172">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1172" rev="footnote" title="Jump back to footnote 1172 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1173">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1173" rev="footnote" title="Jump back to footnote 1173 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1174">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1174" rev="footnote" title="Jump back to footnote 1174 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1175">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1175" rev="footnote" title="Jump back to footnote 1175 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1176">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1176" rev="footnote" title="Jump back to footnote 1176 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1177">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1177" rev="footnote" title="Jump back to footnote 1177 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1178">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1178" rev="footnote" title="Jump back to footnote 1178 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1179">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1179" rev="footnote" title="Jump back to footnote 1179 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1180">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1180" rev="footnote" title="Jump back to footnote 1180 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1181">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1181" rev="footnote" title="Jump back to footnote 1181 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1182">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1182" rev="footnote" title="Jump back to footnote 1182 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1183">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1183" rev="footnote" title="Jump back to footnote 1183 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1184">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1184" rev="footnote" title="Jump back to footnote 1184 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1185">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1185" rev="footnote" title="Jump back to footnote 1185 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1186">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1186" rev="footnote" title="Jump back to footnote 1186 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1187">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1187" rev="footnote" title="Jump back to footnote 1187 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1188">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1188" rev="footnote" title="Jump back to footnote 1188 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1189">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1189" rev="footnote" title="Jump back to footnote 1189 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1190">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1190" rev="footnote" title="Jump back to footnote 1190 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1191">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1191" rev="footnote" title="Jump back to footnote 1191 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1192">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1192" rev="footnote" title="Jump back to footnote 1192 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1193">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1193" rev="footnote" title="Jump back to footnote 1193 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1194">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1194" rev="footnote" title="Jump back to footnote 1194 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1195">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1195" rev="footnote" title="Jump back to footnote 1195 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1196">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1196" rev="footnote" title="Jump back to footnote 1196 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1197">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1197" rev="footnote" title="Jump back to footnote 1197 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1198">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1198" rev="footnote" title="Jump back to footnote 1198 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:1199">\r
-<p>Another thing <a class="footnote-backref" href="#fnref:1199" rev="footnote" title="Jump back to footnote 1199 in the text">↩</a></p>\r
-</li>\r
-</ol>\r
+<p>Something<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
+<p>Something<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>
+<p>Something<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup></p>
+<p>Something<sup id="fnref:4"><a class="footnote-ref" href="#fn:4" rel="footnote">4</a></sup></p>
+<p>Something<sup id="fnref:5"><a class="footnote-ref" href="#fn:5" rel="footnote">5</a></sup></p>
+<p>Something<sup id="fnref:6"><a class="footnote-ref" href="#fn:6" rel="footnote">6</a></sup></p>
+<p>Something<sup id="fnref:7"><a class="footnote-ref" href="#fn:7" rel="footnote">7</a></sup></p>
+<p>Something<sup id="fnref:8"><a class="footnote-ref" href="#fn:8" rel="footnote">8</a></sup></p>
+<p>Something<sup id="fnref:9"><a class="footnote-ref" href="#fn:9" rel="footnote">9</a></sup></p>
+<p>Something<sup id="fnref:10"><a class="footnote-ref" href="#fn:10" rel="footnote">10</a></sup></p>
+<p>Something<sup id="fnref:11"><a class="footnote-ref" href="#fn:11" rel="footnote">11</a></sup></p>
+<p>Something<sup id="fnref:12"><a class="footnote-ref" href="#fn:12" rel="footnote">12</a></sup></p>
+<p>Something<sup id="fnref:13"><a class="footnote-ref" href="#fn:13" rel="footnote">13</a></sup></p>
+<p>Something<sup id="fnref:14"><a class="footnote-ref" href="#fn:14" rel="footnote">14</a></sup></p>
+<p>Something<sup id="fnref:15"><a class="footnote-ref" href="#fn:15" rel="footnote">15</a></sup></p>
+<p>Something<sup id="fnref:16"><a class="footnote-ref" href="#fn:16" rel="footnote">16</a></sup></p>
+<p>Something<sup id="fnref:17"><a class="footnote-ref" href="#fn:17" rel="footnote">17</a></sup></p>
+<p>Something<sup id="fnref:18"><a class="footnote-ref" href="#fn:18" rel="footnote">18</a></sup></p>
+<p>Something<sup id="fnref:19"><a class="footnote-ref" href="#fn:19" rel="footnote">19</a></sup></p>
+<p>Something<sup id="fnref:20"><a class="footnote-ref" href="#fn:20" rel="footnote">20</a></sup></p>
+<p>Something<sup id="fnref:21"><a class="footnote-ref" href="#fn:21" rel="footnote">21</a></sup></p>
+<p>Something<sup id="fnref:22"><a class="footnote-ref" href="#fn:22" rel="footnote">22</a></sup></p>
+<p>Something<sup id="fnref:23"><a class="footnote-ref" href="#fn:23" rel="footnote">23</a></sup></p>
+<p>Something<sup id="fnref:24"><a class="footnote-ref" href="#fn:24" rel="footnote">24</a></sup></p>
+<p>Something<sup id="fnref:25"><a class="footnote-ref" href="#fn:25" rel="footnote">25</a></sup></p>
+<p>Something<sup id="fnref:26"><a class="footnote-ref" href="#fn:26" rel="footnote">26</a></sup></p>
+<p>Something<sup id="fnref:27"><a class="footnote-ref" href="#fn:27" rel="footnote">27</a></sup></p>
+<p>Something<sup id="fnref:28"><a class="footnote-ref" href="#fn:28" rel="footnote">28</a></sup></p>
+<p>Something<sup id="fnref:29"><a class="footnote-ref" href="#fn:29" rel="footnote">29</a></sup></p>
+<p>Something<sup id="fnref:30"><a class="footnote-ref" href="#fn:30" rel="footnote">30</a></sup></p>
+<p>Something<sup id="fnref:31"><a class="footnote-ref" href="#fn:31" rel="footnote">31</a></sup></p>
+<p>Something<sup id="fnref:32"><a class="footnote-ref" href="#fn:32" rel="footnote">32</a></sup></p>
+<p>Something<sup id="fnref:33"><a class="footnote-ref" href="#fn:33" rel="footnote">33</a></sup></p>
+<p>Something<sup id="fnref:34"><a class="footnote-ref" href="#fn:34" rel="footnote">34</a></sup></p>
+<p>Something<sup id="fnref:35"><a class="footnote-ref" href="#fn:35" rel="footnote">35</a></sup></p>
+<p>Something<sup id="fnref:36"><a class="footnote-ref" href="#fn:36" rel="footnote">36</a></sup></p>
+<p>Something<sup id="fnref:37"><a class="footnote-ref" href="#fn:37" rel="footnote">37</a></sup></p>
+<p>Something<sup id="fnref:38"><a class="footnote-ref" href="#fn:38" rel="footnote">38</a></sup></p>
+<p>Something<sup id="fnref:39"><a class="footnote-ref" href="#fn:39" rel="footnote">39</a></sup></p>
+<p>Something<sup id="fnref:40"><a class="footnote-ref" href="#fn:40" rel="footnote">40</a></sup></p>
+<p>Something<sup id="fnref:41"><a class="footnote-ref" href="#fn:41" rel="footnote">41</a></sup></p>
+<p>Something<sup id="fnref:42"><a class="footnote-ref" href="#fn:42" rel="footnote">42</a></sup></p>
+<p>Something<sup id="fnref:43"><a class="footnote-ref" href="#fn:43" rel="footnote">43</a></sup></p>
+<p>Something<sup id="fnref:44"><a class="footnote-ref" href="#fn:44" rel="footnote">44</a></sup></p>
+<p>Something<sup id="fnref:45"><a class="footnote-ref" href="#fn:45" rel="footnote">45</a></sup></p>
+<p>Something<sup id="fnref:46"><a class="footnote-ref" href="#fn:46" rel="footnote">46</a></sup></p>
+<p>Something<sup id="fnref:47"><a class="footnote-ref" href="#fn:47" rel="footnote">47</a></sup></p>
+<p>Something<sup id="fnref:48"><a class="footnote-ref" href="#fn:48" rel="footnote">48</a></sup></p>
+<p>Something<sup id="fnref:49"><a class="footnote-ref" href="#fn:49" rel="footnote">49</a></sup></p>
+<p>Something<sup id="fnref:50"><a class="footnote-ref" href="#fn:50" rel="footnote">50</a></sup></p>
+<p>Something<sup id="fnref:51"><a class="footnote-ref" href="#fn:51" rel="footnote">51</a></sup></p>
+<p>Something<sup id="fnref:52"><a class="footnote-ref" href="#fn:52" rel="footnote">52</a></sup></p>
+<p>Something<sup id="fnref:53"><a class="footnote-ref" href="#fn:53" rel="footnote">53</a></sup></p>
+<p>Something<sup id="fnref:54"><a class="footnote-ref" href="#fn:54" rel="footnote">54</a></sup></p>
+<p>Something<sup id="fnref:55"><a class="footnote-ref" href="#fn:55" rel="footnote">55</a></sup></p>
+<p>Something<sup id="fnref:56"><a class="footnote-ref" href="#fn:56" rel="footnote">56</a></sup></p>
+<p>Something<sup id="fnref:57"><a class="footnote-ref" href="#fn:57" rel="footnote">57</a></sup></p>
+<p>Something<sup id="fnref:58"><a class="footnote-ref" href="#fn:58" rel="footnote">58</a></sup></p>
+<p>Something<sup id="fnref:59"><a class="footnote-ref" href="#fn:59" rel="footnote">59</a></sup></p>
+<p>Something<sup id="fnref:60"><a class="footnote-ref" href="#fn:60" rel="footnote">60</a></sup></p>
+<p>Something<sup id="fnref:61"><a class="footnote-ref" href="#fn:61" rel="footnote">61</a></sup></p>
+<p>Something<sup id="fnref:62"><a class="footnote-ref" href="#fn:62" rel="footnote">62</a></sup></p>
+<p>Something<sup id="fnref:63"><a class="footnote-ref" href="#fn:63" rel="footnote">63</a></sup></p>
+<p>Something<sup id="fnref:64"><a class="footnote-ref" href="#fn:64" rel="footnote">64</a></sup></p>
+<p>Something<sup id="fnref:65"><a class="footnote-ref" href="#fn:65" rel="footnote">65</a></sup></p>
+<p>Something<sup id="fnref:66"><a class="footnote-ref" href="#fn:66" rel="footnote">66</a></sup></p>
+<p>Something<sup id="fnref:67"><a class="footnote-ref" href="#fn:67" rel="footnote">67</a></sup></p>
+<p>Something<sup id="fnref:68"><a class="footnote-ref" href="#fn:68" rel="footnote">68</a></sup></p>
+<p>Something<sup id="fnref:69"><a class="footnote-ref" href="#fn:69" rel="footnote">69</a></sup></p>
+<p>Something<sup id="fnref:70"><a class="footnote-ref" href="#fn:70" rel="footnote">70</a></sup></p>
+<p>Something<sup id="fnref:71"><a class="footnote-ref" href="#fn:71" rel="footnote">71</a></sup></p>
+<p>Something<sup id="fnref:72"><a class="footnote-ref" href="#fn:72" rel="footnote">72</a></sup></p>
+<p>Something<sup id="fnref:73"><a class="footnote-ref" href="#fn:73" rel="footnote">73</a></sup></p>
+<p>Something<sup id="fnref:74"><a class="footnote-ref" href="#fn:74" rel="footnote">74</a></sup></p>
+<p>Something<sup id="fnref:75"><a class="footnote-ref" href="#fn:75" rel="footnote">75</a></sup></p>
+<p>Something<sup id="fnref:76"><a class="footnote-ref" href="#fn:76" rel="footnote">76</a></sup></p>
+<p>Something<sup id="fnref:77"><a class="footnote-ref" href="#fn:77" rel="footnote">77</a></sup></p>
+<p>Something<sup id="fnref:78"><a class="footnote-ref" href="#fn:78" rel="footnote">78</a></sup></p>
+<p>Something<sup id="fnref:79"><a class="footnote-ref" href="#fn:79" rel="footnote">79</a></sup></p>
+<p>Something<sup id="fnref:80"><a class="footnote-ref" href="#fn:80" rel="footnote">80</a></sup></p>
+<p>Something<sup id="fnref:81"><a class="footnote-ref" href="#fn:81" rel="footnote">81</a></sup></p>
+<p>Something<sup id="fnref:82"><a class="footnote-ref" href="#fn:82" rel="footnote">82</a></sup></p>
+<p>Something<sup id="fnref:83"><a class="footnote-ref" href="#fn:83" rel="footnote">83</a></sup></p>
+<p>Something<sup id="fnref:84"><a class="footnote-ref" href="#fn:84" rel="footnote">84</a></sup></p>
+<p>Something<sup id="fnref:85"><a class="footnote-ref" href="#fn:85" rel="footnote">85</a></sup></p>
+<p>Something<sup id="fnref:86"><a class="footnote-ref" href="#fn:86" rel="footnote">86</a></sup></p>
+<p>Something<sup id="fnref:87"><a class="footnote-ref" href="#fn:87" rel="footnote">87</a></sup></p>
+<p>Something<sup id="fnref:88"><a class="footnote-ref" href="#fn:88" rel="footnote">88</a></sup></p>
+<p>Something<sup id="fnref:89"><a class="footnote-ref" href="#fn:89" rel="footnote">89</a></sup></p>
+<p>Something<sup id="fnref:90"><a class="footnote-ref" href="#fn:90" rel="footnote">90</a></sup></p>
+<p>Something<sup id="fnref:91"><a class="footnote-ref" href="#fn:91" rel="footnote">91</a></sup></p>
+<p>Something<sup id="fnref:92"><a class="footnote-ref" href="#fn:92" rel="footnote">92</a></sup></p>
+<p>Something<sup id="fnref:93"><a class="footnote-ref" href="#fn:93" rel="footnote">93</a></sup></p>
+<p>Something<sup id="fnref:94"><a class="footnote-ref" href="#fn:94" rel="footnote">94</a></sup></p>
+<p>Something<sup id="fnref:95"><a class="footnote-ref" href="#fn:95" rel="footnote">95</a></sup></p>
+<p>Something<sup id="fnref:96"><a class="footnote-ref" href="#fn:96" rel="footnote">96</a></sup></p>
+<p>Something<sup id="fnref:97"><a class="footnote-ref" href="#fn:97" rel="footnote">97</a></sup></p>
+<p>Something<sup id="fnref:98"><a class="footnote-ref" href="#fn:98" rel="footnote">98</a></sup></p>
+<p>Something<sup id="fnref:99"><a class="footnote-ref" href="#fn:99" rel="footnote">99</a></sup></p>
+<p>Something<sup id="fnref:100"><a class="footnote-ref" href="#fn:100" rel="footnote">100</a></sup></p>
+<p>Something<sup id="fnref:101"><a class="footnote-ref" href="#fn:101" rel="footnote">101</a></sup></p>
+<p>Something<sup id="fnref:102"><a class="footnote-ref" href="#fn:102" rel="footnote">102</a></sup></p>
+<p>Something<sup id="fnref:103"><a class="footnote-ref" href="#fn:103" rel="footnote">103</a></sup></p>
+<p>Something<sup id="fnref:104"><a class="footnote-ref" href="#fn:104" rel="footnote">104</a></sup></p>
+<p>Something<sup id="fnref:105"><a class="footnote-ref" href="#fn:105" rel="footnote">105</a></sup></p>
+<p>Something<sup id="fnref:106"><a class="footnote-ref" href="#fn:106" rel="footnote">106</a></sup></p>
+<p>Something<sup id="fnref:107"><a class="footnote-ref" href="#fn:107" rel="footnote">107</a></sup></p>
+<p>Something<sup id="fnref:108"><a class="footnote-ref" href="#fn:108" rel="footnote">108</a></sup></p>
+<p>Something<sup id="fnref:109"><a class="footnote-ref" href="#fn:109" rel="footnote">109</a></sup></p>
+<p>Something<sup id="fnref:110"><a class="footnote-ref" href="#fn:110" rel="footnote">110</a></sup></p>
+<p>Something<sup id="fnref:111"><a class="footnote-ref" href="#fn:111" rel="footnote">111</a></sup></p>
+<p>Something<sup id="fnref:112"><a class="footnote-ref" href="#fn:112" rel="footnote">112</a></sup></p>
+<p>Something<sup id="fnref:113"><a class="footnote-ref" href="#fn:113" rel="footnote">113</a></sup></p>
+<p>Something<sup id="fnref:114"><a class="footnote-ref" href="#fn:114" rel="footnote">114</a></sup></p>
+<p>Something<sup id="fnref:115"><a class="footnote-ref" href="#fn:115" rel="footnote">115</a></sup></p>
+<p>Something<sup id="fnref:116"><a class="footnote-ref" href="#fn:116" rel="footnote">116</a></sup></p>
+<p>Something<sup id="fnref:117"><a class="footnote-ref" href="#fn:117" rel="footnote">117</a></sup></p>
+<p>Something<sup id="fnref:118"><a class="footnote-ref" href="#fn:118" rel="footnote">118</a></sup></p>
+<p>Something<sup id="fnref:119"><a class="footnote-ref" href="#fn:119" rel="footnote">119</a></sup></p>
+<p>Something<sup id="fnref:120"><a class="footnote-ref" href="#fn:120" rel="footnote">120</a></sup></p>
+<p>Something<sup id="fnref:121"><a class="footnote-ref" href="#fn:121" rel="footnote">121</a></sup></p>
+<p>Something<sup id="fnref:122"><a class="footnote-ref" href="#fn:122" rel="footnote">122</a></sup></p>
+<p>Something<sup id="fnref:123"><a class="footnote-ref" href="#fn:123" rel="footnote">123</a></sup></p>
+<p>Something<sup id="fnref:124"><a class="footnote-ref" href="#fn:124" rel="footnote">124</a></sup></p>
+<p>Something<sup id="fnref:125"><a class="footnote-ref" href="#fn:125" rel="footnote">125</a></sup></p>
+<p>Something<sup id="fnref:126"><a class="footnote-ref" href="#fn:126" rel="footnote">126</a></sup></p>
+<p>Something<sup id="fnref:127"><a class="footnote-ref" href="#fn:127" rel="footnote">127</a></sup></p>
+<p>Something<sup id="fnref:128"><a class="footnote-ref" href="#fn:128" rel="footnote">128</a></sup></p>
+<p>Something<sup id="fnref:129"><a class="footnote-ref" href="#fn:129" rel="footnote">129</a></sup></p>
+<p>Something<sup id="fnref:130"><a class="footnote-ref" href="#fn:130" rel="footnote">130</a></sup></p>
+<p>Something<sup id="fnref:131"><a class="footnote-ref" href="#fn:131" rel="footnote">131</a></sup></p>
+<p>Something<sup id="fnref:132"><a class="footnote-ref" href="#fn:132" rel="footnote">132</a></sup></p>
+<p>Something<sup id="fnref:133"><a class="footnote-ref" href="#fn:133" rel="footnote">133</a></sup></p>
+<p>Something<sup id="fnref:134"><a class="footnote-ref" href="#fn:134" rel="footnote">134</a></sup></p>
+<p>Something<sup id="fnref:135"><a class="footnote-ref" href="#fn:135" rel="footnote">135</a></sup></p>
+<p>Something<sup id="fnref:136"><a class="footnote-ref" href="#fn:136" rel="footnote">136</a></sup></p>
+<p>Something<sup id="fnref:137"><a class="footnote-ref" href="#fn:137" rel="footnote">137</a></sup></p>
+<p>Something<sup id="fnref:138"><a class="footnote-ref" href="#fn:138" rel="footnote">138</a></sup></p>
+<p>Something<sup id="fnref:139"><a class="footnote-ref" href="#fn:139" rel="footnote">139</a></sup></p>
+<p>Something<sup id="fnref:140"><a class="footnote-ref" href="#fn:140" rel="footnote">140</a></sup></p>
+<p>Something<sup id="fnref:141"><a class="footnote-ref" href="#fn:141" rel="footnote">141</a></sup></p>
+<p>Something<sup id="fnref:142"><a class="footnote-ref" href="#fn:142" rel="footnote">142</a></sup></p>
+<p>Something<sup id="fnref:143"><a class="footnote-ref" href="#fn:143" rel="footnote">143</a></sup></p>
+<p>Something<sup id="fnref:144"><a class="footnote-ref" href="#fn:144" rel="footnote">144</a></sup></p>
+<p>Something<sup id="fnref:145"><a class="footnote-ref" href="#fn:145" rel="footnote">145</a></sup></p>
+<p>Something<sup id="fnref:146"><a class="footnote-ref" href="#fn:146" rel="footnote">146</a></sup></p>
+<p>Something<sup id="fnref:147"><a class="footnote-ref" href="#fn:147" rel="footnote">147</a></sup></p>
+<p>Something<sup id="fnref:148"><a class="footnote-ref" href="#fn:148" rel="footnote">148</a></sup></p>
+<p>Something<sup id="fnref:149"><a class="footnote-ref" href="#fn:149" rel="footnote">149</a></sup></p>
+<p>Something<sup id="fnref:150"><a class="footnote-ref" href="#fn:150" rel="footnote">150</a></sup></p>
+<p>Something<sup id="fnref:151"><a class="footnote-ref" href="#fn:151" rel="footnote">151</a></sup></p>
+<p>Something<sup id="fnref:152"><a class="footnote-ref" href="#fn:152" rel="footnote">152</a></sup></p>
+<p>Something<sup id="fnref:153"><a class="footnote-ref" href="#fn:153" rel="footnote">153</a></sup></p>
+<p>Something<sup id="fnref:154"><a class="footnote-ref" href="#fn:154" rel="footnote">154</a></sup></p>
+<p>Something<sup id="fnref:155"><a class="footnote-ref" href="#fn:155" rel="footnote">155</a></sup></p>
+<p>Something<sup id="fnref:156"><a class="footnote-ref" href="#fn:156" rel="footnote">156</a></sup></p>
+<p>Something<sup id="fnref:157"><a class="footnote-ref" href="#fn:157" rel="footnote">157</a></sup></p>
+<p>Something<sup id="fnref:158"><a class="footnote-ref" href="#fn:158" rel="footnote">158</a></sup></p>
+<p>Something<sup id="fnref:159"><a class="footnote-ref" href="#fn:159" rel="footnote">159</a></sup></p>
+<p>Something<sup id="fnref:160"><a class="footnote-ref" href="#fn:160" rel="footnote">160</a></sup></p>
+<p>Something<sup id="fnref:161"><a class="footnote-ref" href="#fn:161" rel="footnote">161</a></sup></p>
+<p>Something<sup id="fnref:162"><a class="footnote-ref" href="#fn:162" rel="footnote">162</a></sup></p>
+<p>Something<sup id="fnref:163"><a class="footnote-ref" href="#fn:163" rel="footnote">163</a></sup></p>
+<p>Something<sup id="fnref:164"><a class="footnote-ref" href="#fn:164" rel="footnote">164</a></sup></p>
+<p>Something<sup id="fnref:165"><a class="footnote-ref" href="#fn:165" rel="footnote">165</a></sup></p>
+<p>Something<sup id="fnref:166"><a class="footnote-ref" href="#fn:166" rel="footnote">166</a></sup></p>
+<p>Something<sup id="fnref:167"><a class="footnote-ref" href="#fn:167" rel="footnote">167</a></sup></p>
+<p>Something<sup id="fnref:168"><a class="footnote-ref" href="#fn:168" rel="footnote">168</a></sup></p>
+<p>Something<sup id="fnref:169"><a class="footnote-ref" href="#fn:169" rel="footnote">169</a></sup></p>
+<p>Something<sup id="fnref:170"><a class="footnote-ref" href="#fn:170" rel="footnote">170</a></sup></p>
+<p>Something<sup id="fnref:171"><a class="footnote-ref" href="#fn:171" rel="footnote">171</a></sup></p>
+<p>Something<sup id="fnref:172"><a class="footnote-ref" href="#fn:172" rel="footnote">172</a></sup></p>
+<p>Something<sup id="fnref:173"><a class="footnote-ref" href="#fn:173" rel="footnote">173</a></sup></p>
+<p>Something<sup id="fnref:174"><a class="footnote-ref" href="#fn:174" rel="footnote">174</a></sup></p>
+<p>Something<sup id="fnref:175"><a class="footnote-ref" href="#fn:175" rel="footnote">175</a></sup></p>
+<p>Something<sup id="fnref:176"><a class="footnote-ref" href="#fn:176" rel="footnote">176</a></sup></p>
+<p>Something<sup id="fnref:177"><a class="footnote-ref" href="#fn:177" rel="footnote">177</a></sup></p>
+<p>Something<sup id="fnref:178"><a class="footnote-ref" href="#fn:178" rel="footnote">178</a></sup></p>
+<p>Something<sup id="fnref:179"><a class="footnote-ref" href="#fn:179" rel="footnote">179</a></sup></p>
+<p>Something<sup id="fnref:180"><a class="footnote-ref" href="#fn:180" rel="footnote">180</a></sup></p>
+<p>Something<sup id="fnref:181"><a class="footnote-ref" href="#fn:181" rel="footnote">181</a></sup></p>
+<p>Something<sup id="fnref:182"><a class="footnote-ref" href="#fn:182" rel="footnote">182</a></sup></p>
+<p>Something<sup id="fnref:183"><a class="footnote-ref" href="#fn:183" rel="footnote">183</a></sup></p>
+<p>Something<sup id="fnref:184"><a class="footnote-ref" href="#fn:184" rel="footnote">184</a></sup></p>
+<p>Something<sup id="fnref:185"><a class="footnote-ref" href="#fn:185" rel="footnote">185</a></sup></p>
+<p>Something<sup id="fnref:186"><a class="footnote-ref" href="#fn:186" rel="footnote">186</a></sup></p>
+<p>Something<sup id="fnref:187"><a class="footnote-ref" href="#fn:187" rel="footnote">187</a></sup></p>
+<p>Something<sup id="fnref:188"><a class="footnote-ref" href="#fn:188" rel="footnote">188</a></sup></p>
+<p>Something<sup id="fnref:189"><a class="footnote-ref" href="#fn:189" rel="footnote">189</a></sup></p>
+<p>Something<sup id="fnref:190"><a class="footnote-ref" href="#fn:190" rel="footnote">190</a></sup></p>
+<p>Something<sup id="fnref:191"><a class="footnote-ref" href="#fn:191" rel="footnote">191</a></sup></p>
+<p>Something<sup id="fnref:192"><a class="footnote-ref" href="#fn:192" rel="footnote">192</a></sup></p>
+<p>Something<sup id="fnref:193"><a class="footnote-ref" href="#fn:193" rel="footnote">193</a></sup></p>
+<p>Something<sup id="fnref:194"><a class="footnote-ref" href="#fn:194" rel="footnote">194</a></sup></p>
+<p>Something<sup id="fnref:195"><a class="footnote-ref" href="#fn:195" rel="footnote">195</a></sup></p>
+<p>Something<sup id="fnref:196"><a class="footnote-ref" href="#fn:196" rel="footnote">196</a></sup></p>
+<p>Something<sup id="fnref:197"><a class="footnote-ref" href="#fn:197" rel="footnote">197</a></sup></p>
+<p>Something<sup id="fnref:198"><a class="footnote-ref" href="#fn:198" rel="footnote">198</a></sup></p>
+<p>Something<sup id="fnref:199"><a class="footnote-ref" href="#fn:199" rel="footnote">199</a></sup></p>
+<p>Something<sup id="fnref:200"><a class="footnote-ref" href="#fn:200" rel="footnote">200</a></sup></p>
+<p>Something<sup id="fnref:201"><a class="footnote-ref" href="#fn:201" rel="footnote">201</a></sup></p>
+<p>Something<sup id="fnref:202"><a class="footnote-ref" href="#fn:202" rel="footnote">202</a></sup></p>
+<p>Something<sup id="fnref:203"><a class="footnote-ref" href="#fn:203" rel="footnote">203</a></sup></p>
+<p>Something<sup id="fnref:204"><a class="footnote-ref" href="#fn:204" rel="footnote">204</a></sup></p>
+<p>Something<sup id="fnref:205"><a class="footnote-ref" href="#fn:205" rel="footnote">205</a></sup></p>
+<p>Something<sup id="fnref:206"><a class="footnote-ref" href="#fn:206" rel="footnote">206</a></sup></p>
+<p>Something<sup id="fnref:207"><a class="footnote-ref" href="#fn:207" rel="footnote">207</a></sup></p>
+<p>Something<sup id="fnref:208"><a class="footnote-ref" href="#fn:208" rel="footnote">208</a></sup></p>
+<p>Something<sup id="fnref:209"><a class="footnote-ref" href="#fn:209" rel="footnote">209</a></sup></p>
+<p>Something<sup id="fnref:210"><a class="footnote-ref" href="#fn:210" rel="footnote">210</a></sup></p>
+<p>Something<sup id="fnref:211"><a class="footnote-ref" href="#fn:211" rel="footnote">211</a></sup></p>
+<p>Something<sup id="fnref:212"><a class="footnote-ref" href="#fn:212" rel="footnote">212</a></sup></p>
+<p>Something<sup id="fnref:213"><a class="footnote-ref" href="#fn:213" rel="footnote">213</a></sup></p>
+<p>Something<sup id="fnref:214"><a class="footnote-ref" href="#fn:214" rel="footnote">214</a></sup></p>
+<p>Something<sup id="fnref:215"><a class="footnote-ref" href="#fn:215" rel="footnote">215</a></sup></p>
+<p>Something<sup id="fnref:216"><a class="footnote-ref" href="#fn:216" rel="footnote">216</a></sup></p>
+<p>Something<sup id="fnref:217"><a class="footnote-ref" href="#fn:217" rel="footnote">217</a></sup></p>
+<p>Something<sup id="fnref:218"><a class="footnote-ref" href="#fn:218" rel="footnote">218</a></sup></p>
+<p>Something<sup id="fnref:219"><a class="footnote-ref" href="#fn:219" rel="footnote">219</a></sup></p>
+<p>Something<sup id="fnref:220"><a class="footnote-ref" href="#fn:220" rel="footnote">220</a></sup></p>
+<p>Something<sup id="fnref:221"><a class="footnote-ref" href="#fn:221" rel="footnote">221</a></sup></p>
+<p>Something<sup id="fnref:222"><a class="footnote-ref" href="#fn:222" rel="footnote">222</a></sup></p>
+<p>Something<sup id="fnref:223"><a class="footnote-ref" href="#fn:223" rel="footnote">223</a></sup></p>
+<p>Something<sup id="fnref:224"><a class="footnote-ref" href="#fn:224" rel="footnote">224</a></sup></p>
+<p>Something<sup id="fnref:225"><a class="footnote-ref" href="#fn:225" rel="footnote">225</a></sup></p>
+<p>Something<sup id="fnref:226"><a class="footnote-ref" href="#fn:226" rel="footnote">226</a></sup></p>
+<p>Something<sup id="fnref:227"><a class="footnote-ref" href="#fn:227" rel="footnote">227</a></sup></p>
+<p>Something<sup id="fnref:228"><a class="footnote-ref" href="#fn:228" rel="footnote">228</a></sup></p>
+<p>Something<sup id="fnref:229"><a class="footnote-ref" href="#fn:229" rel="footnote">229</a></sup></p>
+<p>Something<sup id="fnref:230"><a class="footnote-ref" href="#fn:230" rel="footnote">230</a></sup></p>
+<p>Something<sup id="fnref:231"><a class="footnote-ref" href="#fn:231" rel="footnote">231</a></sup></p>
+<p>Something<sup id="fnref:232"><a class="footnote-ref" href="#fn:232" rel="footnote">232</a></sup></p>
+<p>Something<sup id="fnref:233"><a class="footnote-ref" href="#fn:233" rel="footnote">233</a></sup></p>
+<p>Something<sup id="fnref:234"><a class="footnote-ref" href="#fn:234" rel="footnote">234</a></sup></p>
+<p>Something<sup id="fnref:235"><a class="footnote-ref" href="#fn:235" rel="footnote">235</a></sup></p>
+<p>Something<sup id="fnref:236"><a class="footnote-ref" href="#fn:236" rel="footnote">236</a></sup></p>
+<p>Something<sup id="fnref:237"><a class="footnote-ref" href="#fn:237" rel="footnote">237</a></sup></p>
+<p>Something<sup id="fnref:238"><a class="footnote-ref" href="#fn:238" rel="footnote">238</a></sup></p>
+<p>Something<sup id="fnref:239"><a class="footnote-ref" href="#fn:239" rel="footnote">239</a></sup></p>
+<p>Something<sup id="fnref:240"><a class="footnote-ref" href="#fn:240" rel="footnote">240</a></sup></p>
+<p>Something<sup id="fnref:241"><a class="footnote-ref" href="#fn:241" rel="footnote">241</a></sup></p>
+<p>Something<sup id="fnref:242"><a class="footnote-ref" href="#fn:242" rel="footnote">242</a></sup></p>
+<p>Something<sup id="fnref:243"><a class="footnote-ref" href="#fn:243" rel="footnote">243</a></sup></p>
+<p>Something<sup id="fnref:244"><a class="footnote-ref" href="#fn:244" rel="footnote">244</a></sup></p>
+<p>Something<sup id="fnref:245"><a class="footnote-ref" href="#fn:245" rel="footnote">245</a></sup></p>
+<p>Something<sup id="fnref:246"><a class="footnote-ref" href="#fn:246" rel="footnote">246</a></sup></p>
+<p>Something<sup id="fnref:247"><a class="footnote-ref" href="#fn:247" rel="footnote">247</a></sup></p>
+<p>Something<sup id="fnref:248"><a class="footnote-ref" href="#fn:248" rel="footnote">248</a></sup></p>
+<p>Something<sup id="fnref:249"><a class="footnote-ref" href="#fn:249" rel="footnote">249</a></sup></p>
+<p>Something<sup id="fnref:250"><a class="footnote-ref" href="#fn:250" rel="footnote">250</a></sup></p>
+<p>Something<sup id="fnref:251"><a class="footnote-ref" href="#fn:251" rel="footnote">251</a></sup></p>
+<p>Something<sup id="fnref:252"><a class="footnote-ref" href="#fn:252" rel="footnote">252</a></sup></p>
+<p>Something<sup id="fnref:253"><a class="footnote-ref" href="#fn:253" rel="footnote">253</a></sup></p>
+<p>Something<sup id="fnref:254"><a class="footnote-ref" href="#fn:254" rel="footnote">254</a></sup></p>
+<p>Something<sup id="fnref:255"><a class="footnote-ref" href="#fn:255" rel="footnote">255</a></sup></p>
+<p>Something<sup id="fnref:256"><a class="footnote-ref" href="#fn:256" rel="footnote">256</a></sup></p>
+<p>Something<sup id="fnref:257"><a class="footnote-ref" href="#fn:257" rel="footnote">257</a></sup></p>
+<p>Something<sup id="fnref:258"><a class="footnote-ref" href="#fn:258" rel="footnote">258</a></sup></p>
+<p>Something<sup id="fnref:259"><a class="footnote-ref" href="#fn:259" rel="footnote">259</a></sup></p>
+<p>Something<sup id="fnref:260"><a class="footnote-ref" href="#fn:260" rel="footnote">260</a></sup></p>
+<p>Something<sup id="fnref:261"><a class="footnote-ref" href="#fn:261" rel="footnote">261</a></sup></p>
+<p>Something<sup id="fnref:262"><a class="footnote-ref" href="#fn:262" rel="footnote">262</a></sup></p>
+<p>Something<sup id="fnref:263"><a class="footnote-ref" href="#fn:263" rel="footnote">263</a></sup></p>
+<p>Something<sup id="fnref:264"><a class="footnote-ref" href="#fn:264" rel="footnote">264</a></sup></p>
+<p>Something<sup id="fnref:265"><a class="footnote-ref" href="#fn:265" rel="footnote">265</a></sup></p>
+<p>Something<sup id="fnref:266"><a class="footnote-ref" href="#fn:266" rel="footnote">266</a></sup></p>
+<p>Something<sup id="fnref:267"><a class="footnote-ref" href="#fn:267" rel="footnote">267</a></sup></p>
+<p>Something<sup id="fnref:268"><a class="footnote-ref" href="#fn:268" rel="footnote">268</a></sup></p>
+<p>Something<sup id="fnref:269"><a class="footnote-ref" href="#fn:269" rel="footnote">269</a></sup></p>
+<p>Something<sup id="fnref:270"><a class="footnote-ref" href="#fn:270" rel="footnote">270</a></sup></p>
+<p>Something<sup id="fnref:271"><a class="footnote-ref" href="#fn:271" rel="footnote">271</a></sup></p>
+<p>Something<sup id="fnref:272"><a class="footnote-ref" href="#fn:272" rel="footnote">272</a></sup></p>
+<p>Something<sup id="fnref:273"><a class="footnote-ref" href="#fn:273" rel="footnote">273</a></sup></p>
+<p>Something<sup id="fnref:274"><a class="footnote-ref" href="#fn:274" rel="footnote">274</a></sup></p>
+<p>Something<sup id="fnref:275"><a class="footnote-ref" href="#fn:275" rel="footnote">275</a></sup></p>
+<p>Something<sup id="fnref:276"><a class="footnote-ref" href="#fn:276" rel="footnote">276</a></sup></p>
+<p>Something<sup id="fnref:277"><a class="footnote-ref" href="#fn:277" rel="footnote">277</a></sup></p>
+<p>Something<sup id="fnref:278"><a class="footnote-ref" href="#fn:278" rel="footnote">278</a></sup></p>
+<p>Something<sup id="fnref:279"><a class="footnote-ref" href="#fn:279" rel="footnote">279</a></sup></p>
+<p>Something<sup id="fnref:280"><a class="footnote-ref" href="#fn:280" rel="footnote">280</a></sup></p>
+<p>Something<sup id="fnref:281"><a class="footnote-ref" href="#fn:281" rel="footnote">281</a></sup></p>
+<p>Something<sup id="fnref:282"><a class="footnote-ref" href="#fn:282" rel="footnote">282</a></sup></p>
+<p>Something<sup id="fnref:283"><a class="footnote-ref" href="#fn:283" rel="footnote">283</a></sup></p>
+<p>Something<sup id="fnref:284"><a class="footnote-ref" href="#fn:284" rel="footnote">284</a></sup></p>
+<p>Something<sup id="fnref:285"><a class="footnote-ref" href="#fn:285" rel="footnote">285</a></sup></p>
+<p>Something<sup id="fnref:286"><a class="footnote-ref" href="#fn:286" rel="footnote">286</a></sup></p>
+<p>Something<sup id="fnref:287"><a class="footnote-ref" href="#fn:287" rel="footnote">287</a></sup></p>
+<p>Something<sup id="fnref:288"><a class="footnote-ref" href="#fn:288" rel="footnote">288</a></sup></p>
+<p>Something<sup id="fnref:289"><a class="footnote-ref" href="#fn:289" rel="footnote">289</a></sup></p>
+<p>Something<sup id="fnref:290"><a class="footnote-ref" href="#fn:290" rel="footnote">290</a></sup></p>
+<p>Something<sup id="fnref:291"><a class="footnote-ref" href="#fn:291" rel="footnote">291</a></sup></p>
+<p>Something<sup id="fnref:292"><a class="footnote-ref" href="#fn:292" rel="footnote">292</a></sup></p>
+<p>Something<sup id="fnref:293"><a class="footnote-ref" href="#fn:293" rel="footnote">293</a></sup></p>
+<p>Something<sup id="fnref:294"><a class="footnote-ref" href="#fn:294" rel="footnote">294</a></sup></p>
+<p>Something<sup id="fnref:295"><a class="footnote-ref" href="#fn:295" rel="footnote">295</a></sup></p>
+<p>Something<sup id="fnref:296"><a class="footnote-ref" href="#fn:296" rel="footnote">296</a></sup></p>
+<p>Something<sup id="fnref:297"><a class="footnote-ref" href="#fn:297" rel="footnote">297</a></sup></p>
+<p>Something<sup id="fnref:298"><a class="footnote-ref" href="#fn:298" rel="footnote">298</a></sup></p>
+<p>Something<sup id="fnref:299"><a class="footnote-ref" href="#fn:299" rel="footnote">299</a></sup></p>
+<p>Something<sup id="fnref:300"><a class="footnote-ref" href="#fn:300" rel="footnote">300</a></sup></p>
+<p>Something<sup id="fnref:301"><a class="footnote-ref" href="#fn:301" rel="footnote">301</a></sup></p>
+<p>Something<sup id="fnref:302"><a class="footnote-ref" href="#fn:302" rel="footnote">302</a></sup></p>
+<p>Something<sup id="fnref:303"><a class="footnote-ref" href="#fn:303" rel="footnote">303</a></sup></p>
+<p>Something<sup id="fnref:304"><a class="footnote-ref" href="#fn:304" rel="footnote">304</a></sup></p>
+<p>Something<sup id="fnref:305"><a class="footnote-ref" href="#fn:305" rel="footnote">305</a></sup></p>
+<p>Something<sup id="fnref:306"><a class="footnote-ref" href="#fn:306" rel="footnote">306</a></sup></p>
+<p>Something<sup id="fnref:307"><a class="footnote-ref" href="#fn:307" rel="footnote">307</a></sup></p>
+<p>Something<sup id="fnref:308"><a class="footnote-ref" href="#fn:308" rel="footnote">308</a></sup></p>
+<p>Something<sup id="fnref:309"><a class="footnote-ref" href="#fn:309" rel="footnote">309</a></sup></p>
+<p>Something<sup id="fnref:310"><a class="footnote-ref" href="#fn:310" rel="footnote">310</a></sup></p>
+<p>Something<sup id="fnref:311"><a class="footnote-ref" href="#fn:311" rel="footnote">311</a></sup></p>
+<p>Something<sup id="fnref:312"><a class="footnote-ref" href="#fn:312" rel="footnote">312</a></sup></p>
+<p>Something<sup id="fnref:313"><a class="footnote-ref" href="#fn:313" rel="footnote">313</a></sup></p>
+<p>Something<sup id="fnref:314"><a class="footnote-ref" href="#fn:314" rel="footnote">314</a></sup></p>
+<p>Something<sup id="fnref:315"><a class="footnote-ref" href="#fn:315" rel="footnote">315</a></sup></p>
+<p>Something<sup id="fnref:316"><a class="footnote-ref" href="#fn:316" rel="footnote">316</a></sup></p>
+<p>Something<sup id="fnref:317"><a class="footnote-ref" href="#fn:317" rel="footnote">317</a></sup></p>
+<p>Something<sup id="fnref:318"><a class="footnote-ref" href="#fn:318" rel="footnote">318</a></sup></p>
+<p>Something<sup id="fnref:319"><a class="footnote-ref" href="#fn:319" rel="footnote">319</a></sup></p>
+<p>Something<sup id="fnref:320"><a class="footnote-ref" href="#fn:320" rel="footnote">320</a></sup></p>
+<p>Something<sup id="fnref:321"><a class="footnote-ref" href="#fn:321" rel="footnote">321</a></sup></p>
+<p>Something<sup id="fnref:322"><a class="footnote-ref" href="#fn:322" rel="footnote">322</a></sup></p>
+<p>Something<sup id="fnref:323"><a class="footnote-ref" href="#fn:323" rel="footnote">323</a></sup></p>
+<p>Something<sup id="fnref:324"><a class="footnote-ref" href="#fn:324" rel="footnote">324</a></sup></p>
+<p>Something<sup id="fnref:325"><a class="footnote-ref" href="#fn:325" rel="footnote">325</a></sup></p>
+<p>Something<sup id="fnref:326"><a class="footnote-ref" href="#fn:326" rel="footnote">326</a></sup></p>
+<p>Something<sup id="fnref:327"><a class="footnote-ref" href="#fn:327" rel="footnote">327</a></sup></p>
+<p>Something<sup id="fnref:328"><a class="footnote-ref" href="#fn:328" rel="footnote">328</a></sup></p>
+<p>Something<sup id="fnref:329"><a class="footnote-ref" href="#fn:329" rel="footnote">329</a></sup></p>
+<p>Something<sup id="fnref:330"><a class="footnote-ref" href="#fn:330" rel="footnote">330</a></sup></p>
+<p>Something<sup id="fnref:331"><a class="footnote-ref" href="#fn:331" rel="footnote">331</a></sup></p>
+<p>Something<sup id="fnref:332"><a class="footnote-ref" href="#fn:332" rel="footnote">332</a></sup></p>
+<p>Something<sup id="fnref:333"><a class="footnote-ref" href="#fn:333" rel="footnote">333</a></sup></p>
+<p>Something<sup id="fnref:334"><a class="footnote-ref" href="#fn:334" rel="footnote">334</a></sup></p>
+<p>Something<sup id="fnref:335"><a class="footnote-ref" href="#fn:335" rel="footnote">335</a></sup></p>
+<p>Something<sup id="fnref:336"><a class="footnote-ref" href="#fn:336" rel="footnote">336</a></sup></p>
+<p>Something<sup id="fnref:337"><a class="footnote-ref" href="#fn:337" rel="footnote">337</a></sup></p>
+<p>Something<sup id="fnref:338"><a class="footnote-ref" href="#fn:338" rel="footnote">338</a></sup></p>
+<p>Something<sup id="fnref:339"><a class="footnote-ref" href="#fn:339" rel="footnote">339</a></sup></p>
+<p>Something<sup id="fnref:340"><a class="footnote-ref" href="#fn:340" rel="footnote">340</a></sup></p>
+<p>Something<sup id="fnref:341"><a class="footnote-ref" href="#fn:341" rel="footnote">341</a></sup></p>
+<p>Something<sup id="fnref:342"><a class="footnote-ref" href="#fn:342" rel="footnote">342</a></sup></p>
+<p>Something<sup id="fnref:343"><a class="footnote-ref" href="#fn:343" rel="footnote">343</a></sup></p>
+<p>Something<sup id="fnref:344"><a class="footnote-ref" href="#fn:344" rel="footnote">344</a></sup></p>
+<p>Something<sup id="fnref:345"><a class="footnote-ref" href="#fn:345" rel="footnote">345</a></sup></p>
+<p>Something<sup id="fnref:346"><a class="footnote-ref" href="#fn:346" rel="footnote">346</a></sup></p>
+<p>Something<sup id="fnref:347"><a class="footnote-ref" href="#fn:347" rel="footnote">347</a></sup></p>
+<p>Something<sup id="fnref:348"><a class="footnote-ref" href="#fn:348" rel="footnote">348</a></sup></p>
+<p>Something<sup id="fnref:349"><a class="footnote-ref" href="#fn:349" rel="footnote">349</a></sup></p>
+<p>Something<sup id="fnref:350"><a class="footnote-ref" href="#fn:350" rel="footnote">350</a></sup></p>
+<p>Something<sup id="fnref:351"><a class="footnote-ref" href="#fn:351" rel="footnote">351</a></sup></p>
+<p>Something<sup id="fnref:352"><a class="footnote-ref" href="#fn:352" rel="footnote">352</a></sup></p>
+<p>Something<sup id="fnref:353"><a class="footnote-ref" href="#fn:353" rel="footnote">353</a></sup></p>
+<p>Something<sup id="fnref:354"><a class="footnote-ref" href="#fn:354" rel="footnote">354</a></sup></p>
+<p>Something<sup id="fnref:355"><a class="footnote-ref" href="#fn:355" rel="footnote">355</a></sup></p>
+<p>Something<sup id="fnref:356"><a class="footnote-ref" href="#fn:356" rel="footnote">356</a></sup></p>
+<p>Something<sup id="fnref:357"><a class="footnote-ref" href="#fn:357" rel="footnote">357</a></sup></p>
+<p>Something<sup id="fnref:358"><a class="footnote-ref" href="#fn:358" rel="footnote">358</a></sup></p>
+<p>Something<sup id="fnref:359"><a class="footnote-ref" href="#fn:359" rel="footnote">359</a></sup></p>
+<p>Something<sup id="fnref:360"><a class="footnote-ref" href="#fn:360" rel="footnote">360</a></sup></p>
+<p>Something<sup id="fnref:361"><a class="footnote-ref" href="#fn:361" rel="footnote">361</a></sup></p>
+<p>Something<sup id="fnref:362"><a class="footnote-ref" href="#fn:362" rel="footnote">362</a></sup></p>
+<p>Something<sup id="fnref:363"><a class="footnote-ref" href="#fn:363" rel="footnote">363</a></sup></p>
+<p>Something<sup id="fnref:364"><a class="footnote-ref" href="#fn:364" rel="footnote">364</a></sup></p>
+<p>Something<sup id="fnref:365"><a class="footnote-ref" href="#fn:365" rel="footnote">365</a></sup></p>
+<p>Something<sup id="fnref:366"><a class="footnote-ref" href="#fn:366" rel="footnote">366</a></sup></p>
+<p>Something<sup id="fnref:367"><a class="footnote-ref" href="#fn:367" rel="footnote">367</a></sup></p>
+<p>Something<sup id="fnref:368"><a class="footnote-ref" href="#fn:368" rel="footnote">368</a></sup></p>
+<p>Something<sup id="fnref:369"><a class="footnote-ref" href="#fn:369" rel="footnote">369</a></sup></p>
+<p>Something<sup id="fnref:370"><a class="footnote-ref" href="#fn:370" rel="footnote">370</a></sup></p>
+<p>Something<sup id="fnref:371"><a class="footnote-ref" href="#fn:371" rel="footnote">371</a></sup></p>
+<p>Something<sup id="fnref:372"><a class="footnote-ref" href="#fn:372" rel="footnote">372</a></sup></p>
+<p>Something<sup id="fnref:373"><a class="footnote-ref" href="#fn:373" rel="footnote">373</a></sup></p>
+<p>Something<sup id="fnref:374"><a class="footnote-ref" href="#fn:374" rel="footnote">374</a></sup></p>
+<p>Something<sup id="fnref:375"><a class="footnote-ref" href="#fn:375" rel="footnote">375</a></sup></p>
+<p>Something<sup id="fnref:376"><a class="footnote-ref" href="#fn:376" rel="footnote">376</a></sup></p>
+<p>Something<sup id="fnref:377"><a class="footnote-ref" href="#fn:377" rel="footnote">377</a></sup></p>
+<p>Something<sup id="fnref:378"><a class="footnote-ref" href="#fn:378" rel="footnote">378</a></sup></p>
+<p>Something<sup id="fnref:379"><a class="footnote-ref" href="#fn:379" rel="footnote">379</a></sup></p>
+<p>Something<sup id="fnref:380"><a class="footnote-ref" href="#fn:380" rel="footnote">380</a></sup></p>
+<p>Something<sup id="fnref:381"><a class="footnote-ref" href="#fn:381" rel="footnote">381</a></sup></p>
+<p>Something<sup id="fnref:382"><a class="footnote-ref" href="#fn:382" rel="footnote">382</a></sup></p>
+<p>Something<sup id="fnref:383"><a class="footnote-ref" href="#fn:383" rel="footnote">383</a></sup></p>
+<p>Something<sup id="fnref:384"><a class="footnote-ref" href="#fn:384" rel="footnote">384</a></sup></p>
+<p>Something<sup id="fnref:385"><a class="footnote-ref" href="#fn:385" rel="footnote">385</a></sup></p>
+<p>Something<sup id="fnref:386"><a class="footnote-ref" href="#fn:386" rel="footnote">386</a></sup></p>
+<p>Something<sup id="fnref:387"><a class="footnote-ref" href="#fn:387" rel="footnote">387</a></sup></p>
+<p>Something<sup id="fnref:388"><a class="footnote-ref" href="#fn:388" rel="footnote">388</a></sup></p>
+<p>Something<sup id="fnref:389"><a class="footnote-ref" href="#fn:389" rel="footnote">389</a></sup></p>
+<p>Something<sup id="fnref:390"><a class="footnote-ref" href="#fn:390" rel="footnote">390</a></sup></p>
+<p>Something<sup id="fnref:391"><a class="footnote-ref" href="#fn:391" rel="footnote">391</a></sup></p>
+<p>Something<sup id="fnref:392"><a class="footnote-ref" href="#fn:392" rel="footnote">392</a></sup></p>
+<p>Something<sup id="fnref:393"><a class="footnote-ref" href="#fn:393" rel="footnote">393</a></sup></p>
+<p>Something<sup id="fnref:394"><a class="footnote-ref" href="#fn:394" rel="footnote">394</a></sup></p>
+<p>Something<sup id="fnref:395"><a class="footnote-ref" href="#fn:395" rel="footnote">395</a></sup></p>
+<p>Something<sup id="fnref:396"><a class="footnote-ref" href="#fn:396" rel="footnote">396</a></sup></p>
+<p>Something<sup id="fnref:397"><a class="footnote-ref" href="#fn:397" rel="footnote">397</a></sup></p>
+<p>Something<sup id="fnref:398"><a class="footnote-ref" href="#fn:398" rel="footnote">398</a></sup></p>
+<p>Something<sup id="fnref:399"><a class="footnote-ref" href="#fn:399" rel="footnote">399</a></sup></p>
+<p>Something<sup id="fnref:400"><a class="footnote-ref" href="#fn:400" rel="footnote">400</a></sup></p>
+<p>Something<sup id="fnref:401"><a class="footnote-ref" href="#fn:401" rel="footnote">401</a></sup></p>
+<p>Something<sup id="fnref:402"><a class="footnote-ref" href="#fn:402" rel="footnote">402</a></sup></p>
+<p>Something<sup id="fnref:403"><a class="footnote-ref" href="#fn:403" rel="footnote">403</a></sup></p>
+<p>Something<sup id="fnref:404"><a class="footnote-ref" href="#fn:404" rel="footnote">404</a></sup></p>
+<p>Something<sup id="fnref:405"><a class="footnote-ref" href="#fn:405" rel="footnote">405</a></sup></p>
+<p>Something<sup id="fnref:406"><a class="footnote-ref" href="#fn:406" rel="footnote">406</a></sup></p>
+<p>Something<sup id="fnref:407"><a class="footnote-ref" href="#fn:407" rel="footnote">407</a></sup></p>
+<p>Something<sup id="fnref:408"><a class="footnote-ref" href="#fn:408" rel="footnote">408</a></sup></p>
+<p>Something<sup id="fnref:409"><a class="footnote-ref" href="#fn:409" rel="footnote">409</a></sup></p>
+<p>Something<sup id="fnref:410"><a class="footnote-ref" href="#fn:410" rel="footnote">410</a></sup></p>
+<p>Something<sup id="fnref:411"><a class="footnote-ref" href="#fn:411" rel="footnote">411</a></sup></p>
+<p>Something<sup id="fnref:412"><a class="footnote-ref" href="#fn:412" rel="footnote">412</a></sup></p>
+<p>Something<sup id="fnref:413"><a class="footnote-ref" href="#fn:413" rel="footnote">413</a></sup></p>
+<p>Something<sup id="fnref:414"><a class="footnote-ref" href="#fn:414" rel="footnote">414</a></sup></p>
+<p>Something<sup id="fnref:415"><a class="footnote-ref" href="#fn:415" rel="footnote">415</a></sup></p>
+<p>Something<sup id="fnref:416"><a class="footnote-ref" href="#fn:416" rel="footnote">416</a></sup></p>
+<p>Something<sup id="fnref:417"><a class="footnote-ref" href="#fn:417" rel="footnote">417</a></sup></p>
+<p>Something<sup id="fnref:418"><a class="footnote-ref" href="#fn:418" rel="footnote">418</a></sup></p>
+<p>Something<sup id="fnref:419"><a class="footnote-ref" href="#fn:419" rel="footnote">419</a></sup></p>
+<p>Something<sup id="fnref:420"><a class="footnote-ref" href="#fn:420" rel="footnote">420</a></sup></p>
+<p>Something<sup id="fnref:421"><a class="footnote-ref" href="#fn:421" rel="footnote">421</a></sup></p>
+<p>Something<sup id="fnref:422"><a class="footnote-ref" href="#fn:422" rel="footnote">422</a></sup></p>
+<p>Something<sup id="fnref:423"><a class="footnote-ref" href="#fn:423" rel="footnote">423</a></sup></p>
+<p>Something<sup id="fnref:424"><a class="footnote-ref" href="#fn:424" rel="footnote">424</a></sup></p>
+<p>Something<sup id="fnref:425"><a class="footnote-ref" href="#fn:425" rel="footnote">425</a></sup></p>
+<p>Something<sup id="fnref:426"><a class="footnote-ref" href="#fn:426" rel="footnote">426</a></sup></p>
+<p>Something<sup id="fnref:427"><a class="footnote-ref" href="#fn:427" rel="footnote">427</a></sup></p>
+<p>Something<sup id="fnref:428"><a class="footnote-ref" href="#fn:428" rel="footnote">428</a></sup></p>
+<p>Something<sup id="fnref:429"><a class="footnote-ref" href="#fn:429" rel="footnote">429</a></sup></p>
+<p>Something<sup id="fnref:430"><a class="footnote-ref" href="#fn:430" rel="footnote">430</a></sup></p>
+<p>Something<sup id="fnref:431"><a class="footnote-ref" href="#fn:431" rel="footnote">431</a></sup></p>
+<p>Something<sup id="fnref:432"><a class="footnote-ref" href="#fn:432" rel="footnote">432</a></sup></p>
+<p>Something<sup id="fnref:433"><a class="footnote-ref" href="#fn:433" rel="footnote">433</a></sup></p>
+<p>Something<sup id="fnref:434"><a class="footnote-ref" href="#fn:434" rel="footnote">434</a></sup></p>
+<p>Something<sup id="fnref:435"><a class="footnote-ref" href="#fn:435" rel="footnote">435</a></sup></p>
+<p>Something<sup id="fnref:436"><a class="footnote-ref" href="#fn:436" rel="footnote">436</a></sup></p>
+<p>Something<sup id="fnref:437"><a class="footnote-ref" href="#fn:437" rel="footnote">437</a></sup></p>
+<p>Something<sup id="fnref:438"><a class="footnote-ref" href="#fn:438" rel="footnote">438</a></sup></p>
+<p>Something<sup id="fnref:439"><a class="footnote-ref" href="#fn:439" rel="footnote">439</a></sup></p>
+<p>Something<sup id="fnref:440"><a class="footnote-ref" href="#fn:440" rel="footnote">440</a></sup></p>
+<p>Something<sup id="fnref:441"><a class="footnote-ref" href="#fn:441" rel="footnote">441</a></sup></p>
+<p>Something<sup id="fnref:442"><a class="footnote-ref" href="#fn:442" rel="footnote">442</a></sup></p>
+<p>Something<sup id="fnref:443"><a class="footnote-ref" href="#fn:443" rel="footnote">443</a></sup></p>
+<p>Something<sup id="fnref:444"><a class="footnote-ref" href="#fn:444" rel="footnote">444</a></sup></p>
+<p>Something<sup id="fnref:445"><a class="footnote-ref" href="#fn:445" rel="footnote">445</a></sup></p>
+<p>Something<sup id="fnref:446"><a class="footnote-ref" href="#fn:446" rel="footnote">446</a></sup></p>
+<p>Something<sup id="fnref:447"><a class="footnote-ref" href="#fn:447" rel="footnote">447</a></sup></p>
+<p>Something<sup id="fnref:448"><a class="footnote-ref" href="#fn:448" rel="footnote">448</a></sup></p>
+<p>Something<sup id="fnref:449"><a class="footnote-ref" href="#fn:449" rel="footnote">449</a></sup></p>
+<p>Something<sup id="fnref:450"><a class="footnote-ref" href="#fn:450" rel="footnote">450</a></sup></p>
+<p>Something<sup id="fnref:451"><a class="footnote-ref" href="#fn:451" rel="footnote">451</a></sup></p>
+<p>Something<sup id="fnref:452"><a class="footnote-ref" href="#fn:452" rel="footnote">452</a></sup></p>
+<p>Something<sup id="fnref:453"><a class="footnote-ref" href="#fn:453" rel="footnote">453</a></sup></p>
+<p>Something<sup id="fnref:454"><a class="footnote-ref" href="#fn:454" rel="footnote">454</a></sup></p>
+<p>Something<sup id="fnref:455"><a class="footnote-ref" href="#fn:455" rel="footnote">455</a></sup></p>
+<p>Something<sup id="fnref:456"><a class="footnote-ref" href="#fn:456" rel="footnote">456</a></sup></p>
+<p>Something<sup id="fnref:457"><a class="footnote-ref" href="#fn:457" rel="footnote">457</a></sup></p>
+<p>Something<sup id="fnref:458"><a class="footnote-ref" href="#fn:458" rel="footnote">458</a></sup></p>
+<p>Something<sup id="fnref:459"><a class="footnote-ref" href="#fn:459" rel="footnote">459</a></sup></p>
+<p>Something<sup id="fnref:460"><a class="footnote-ref" href="#fn:460" rel="footnote">460</a></sup></p>
+<p>Something<sup id="fnref:461"><a class="footnote-ref" href="#fn:461" rel="footnote">461</a></sup></p>
+<p>Something<sup id="fnref:462"><a class="footnote-ref" href="#fn:462" rel="footnote">462</a></sup></p>
+<p>Something<sup id="fnref:463"><a class="footnote-ref" href="#fn:463" rel="footnote">463</a></sup></p>
+<p>Something<sup id="fnref:464"><a class="footnote-ref" href="#fn:464" rel="footnote">464</a></sup></p>
+<p>Something<sup id="fnref:465"><a class="footnote-ref" href="#fn:465" rel="footnote">465</a></sup></p>
+<p>Something<sup id="fnref:466"><a class="footnote-ref" href="#fn:466" rel="footnote">466</a></sup></p>
+<p>Something<sup id="fnref:467"><a class="footnote-ref" href="#fn:467" rel="footnote">467</a></sup></p>
+<p>Something<sup id="fnref:468"><a class="footnote-ref" href="#fn:468" rel="footnote">468</a></sup></p>
+<p>Something<sup id="fnref:469"><a class="footnote-ref" href="#fn:469" rel="footnote">469</a></sup></p>
+<p>Something<sup id="fnref:470"><a class="footnote-ref" href="#fn:470" rel="footnote">470</a></sup></p>
+<p>Something<sup id="fnref:471"><a class="footnote-ref" href="#fn:471" rel="footnote">471</a></sup></p>
+<p>Something<sup id="fnref:472"><a class="footnote-ref" href="#fn:472" rel="footnote">472</a></sup></p>
+<p>Something<sup id="fnref:473"><a class="footnote-ref" href="#fn:473" rel="footnote">473</a></sup></p>
+<p>Something<sup id="fnref:474"><a class="footnote-ref" href="#fn:474" rel="footnote">474</a></sup></p>
+<p>Something<sup id="fnref:475"><a class="footnote-ref" href="#fn:475" rel="footnote">475</a></sup></p>
+<p>Something<sup id="fnref:476"><a class="footnote-ref" href="#fn:476" rel="footnote">476</a></sup></p>
+<p>Something<sup id="fnref:477"><a class="footnote-ref" href="#fn:477" rel="footnote">477</a></sup></p>
+<p>Something<sup id="fnref:478"><a class="footnote-ref" href="#fn:478" rel="footnote">478</a></sup></p>
+<p>Something<sup id="fnref:479"><a class="footnote-ref" href="#fn:479" rel="footnote">479</a></sup></p>
+<p>Something<sup id="fnref:480"><a class="footnote-ref" href="#fn:480" rel="footnote">480</a></sup></p>
+<p>Something<sup id="fnref:481"><a class="footnote-ref" href="#fn:481" rel="footnote">481</a></sup></p>
+<p>Something<sup id="fnref:482"><a class="footnote-ref" href="#fn:482" rel="footnote">482</a></sup></p>
+<p>Something<sup id="fnref:483"><a class="footnote-ref" href="#fn:483" rel="footnote">483</a></sup></p>
+<p>Something<sup id="fnref:484"><a class="footnote-ref" href="#fn:484" rel="footnote">484</a></sup></p>
+<p>Something<sup id="fnref:485"><a class="footnote-ref" href="#fn:485" rel="footnote">485</a></sup></p>
+<p>Something<sup id="fnref:486"><a class="footnote-ref" href="#fn:486" rel="footnote">486</a></sup></p>
+<p>Something<sup id="fnref:487"><a class="footnote-ref" href="#fn:487" rel="footnote">487</a></sup></p>
+<p>Something<sup id="fnref:488"><a class="footnote-ref" href="#fn:488" rel="footnote">488</a></sup></p>
+<p>Something<sup id="fnref:489"><a class="footnote-ref" href="#fn:489" rel="footnote">489</a></sup></p>
+<p>Something<sup id="fnref:490"><a class="footnote-ref" href="#fn:490" rel="footnote">490</a></sup></p>
+<p>Something<sup id="fnref:491"><a class="footnote-ref" href="#fn:491" rel="footnote">491</a></sup></p>
+<p>Something<sup id="fnref:492"><a class="footnote-ref" href="#fn:492" rel="footnote">492</a></sup></p>
+<p>Something<sup id="fnref:493"><a class="footnote-ref" href="#fn:493" rel="footnote">493</a></sup></p>
+<p>Something<sup id="fnref:494"><a class="footnote-ref" href="#fn:494" rel="footnote">494</a></sup></p>
+<p>Something<sup id="fnref:495"><a class="footnote-ref" href="#fn:495" rel="footnote">495</a></sup></p>
+<p>Something<sup id="fnref:496"><a class="footnote-ref" href="#fn:496" rel="footnote">496</a></sup></p>
+<p>Something<sup id="fnref:497"><a class="footnote-ref" href="#fn:497" rel="footnote">497</a></sup></p>
+<p>Something<sup id="fnref:498"><a class="footnote-ref" href="#fn:498" rel="footnote">498</a></sup></p>
+<p>Something<sup id="fnref:499"><a class="footnote-ref" href="#fn:499" rel="footnote">499</a></sup></p>
+<p>Something<sup id="fnref:500"><a class="footnote-ref" href="#fn:500" rel="footnote">500</a></sup></p>
+<p>Something<sup id="fnref:501"><a class="footnote-ref" href="#fn:501" rel="footnote">501</a></sup></p>
+<p>Something<sup id="fnref:502"><a class="footnote-ref" href="#fn:502" rel="footnote">502</a></sup></p>
+<p>Something<sup id="fnref:503"><a class="footnote-ref" href="#fn:503" rel="footnote">503</a></sup></p>
+<p>Something<sup id="fnref:504"><a class="footnote-ref" href="#fn:504" rel="footnote">504</a></sup></p>
+<p>Something<sup id="fnref:505"><a class="footnote-ref" href="#fn:505" rel="footnote">505</a></sup></p>
+<p>Something<sup id="fnref:506"><a class="footnote-ref" href="#fn:506" rel="footnote">506</a></sup></p>
+<p>Something<sup id="fnref:507"><a class="footnote-ref" href="#fn:507" rel="footnote">507</a></sup></p>
+<p>Something<sup id="fnref:508"><a class="footnote-ref" href="#fn:508" rel="footnote">508</a></sup></p>
+<p>Something<sup id="fnref:509"><a class="footnote-ref" href="#fn:509" rel="footnote">509</a></sup></p>
+<p>Something<sup id="fnref:510"><a class="footnote-ref" href="#fn:510" rel="footnote">510</a></sup></p>
+<p>Something<sup id="fnref:511"><a class="footnote-ref" href="#fn:511" rel="footnote">511</a></sup></p>
+<p>Something<sup id="fnref:512"><a class="footnote-ref" href="#fn:512" rel="footnote">512</a></sup></p>
+<p>Something<sup id="fnref:513"><a class="footnote-ref" href="#fn:513" rel="footnote">513</a></sup></p>
+<p>Something<sup id="fnref:514"><a class="footnote-ref" href="#fn:514" rel="footnote">514</a></sup></p>
+<p>Something<sup id="fnref:515"><a class="footnote-ref" href="#fn:515" rel="footnote">515</a></sup></p>
+<p>Something<sup id="fnref:516"><a class="footnote-ref" href="#fn:516" rel="footnote">516</a></sup></p>
+<p>Something<sup id="fnref:517"><a class="footnote-ref" href="#fn:517" rel="footnote">517</a></sup></p>
+<p>Something<sup id="fnref:518"><a class="footnote-ref" href="#fn:518" rel="footnote">518</a></sup></p>
+<p>Something<sup id="fnref:519"><a class="footnote-ref" href="#fn:519" rel="footnote">519</a></sup></p>
+<p>Something<sup id="fnref:520"><a class="footnote-ref" href="#fn:520" rel="footnote">520</a></sup></p>
+<p>Something<sup id="fnref:521"><a class="footnote-ref" href="#fn:521" rel="footnote">521</a></sup></p>
+<p>Something<sup id="fnref:522"><a class="footnote-ref" href="#fn:522" rel="footnote">522</a></sup></p>
+<p>Something<sup id="fnref:523"><a class="footnote-ref" href="#fn:523" rel="footnote">523</a></sup></p>
+<p>Something<sup id="fnref:524"><a class="footnote-ref" href="#fn:524" rel="footnote">524</a></sup></p>
+<p>Something<sup id="fnref:525"><a class="footnote-ref" href="#fn:525" rel="footnote">525</a></sup></p>
+<p>Something<sup id="fnref:526"><a class="footnote-ref" href="#fn:526" rel="footnote">526</a></sup></p>
+<p>Something<sup id="fnref:527"><a class="footnote-ref" href="#fn:527" rel="footnote">527</a></sup></p>
+<p>Something<sup id="fnref:528"><a class="footnote-ref" href="#fn:528" rel="footnote">528</a></sup></p>
+<p>Something<sup id="fnref:529"><a class="footnote-ref" href="#fn:529" rel="footnote">529</a></sup></p>
+<p>Something<sup id="fnref:530"><a class="footnote-ref" href="#fn:530" rel="footnote">530</a></sup></p>
+<p>Something<sup id="fnref:531"><a class="footnote-ref" href="#fn:531" rel="footnote">531</a></sup></p>
+<p>Something<sup id="fnref:532"><a class="footnote-ref" href="#fn:532" rel="footnote">532</a></sup></p>
+<p>Something<sup id="fnref:533"><a class="footnote-ref" href="#fn:533" rel="footnote">533</a></sup></p>
+<p>Something<sup id="fnref:534"><a class="footnote-ref" href="#fn:534" rel="footnote">534</a></sup></p>
+<p>Something<sup id="fnref:535"><a class="footnote-ref" href="#fn:535" rel="footnote">535</a></sup></p>
+<p>Something<sup id="fnref:536"><a class="footnote-ref" href="#fn:536" rel="footnote">536</a></sup></p>
+<p>Something<sup id="fnref:537"><a class="footnote-ref" href="#fn:537" rel="footnote">537</a></sup></p>
+<p>Something<sup id="fnref:538"><a class="footnote-ref" href="#fn:538" rel="footnote">538</a></sup></p>
+<p>Something<sup id="fnref:539"><a class="footnote-ref" href="#fn:539" rel="footnote">539</a></sup></p>
+<p>Something<sup id="fnref:540"><a class="footnote-ref" href="#fn:540" rel="footnote">540</a></sup></p>
+<p>Something<sup id="fnref:541"><a class="footnote-ref" href="#fn:541" rel="footnote">541</a></sup></p>
+<p>Something<sup id="fnref:542"><a class="footnote-ref" href="#fn:542" rel="footnote">542</a></sup></p>
+<p>Something<sup id="fnref:543"><a class="footnote-ref" href="#fn:543" rel="footnote">543</a></sup></p>
+<p>Something<sup id="fnref:544"><a class="footnote-ref" href="#fn:544" rel="footnote">544</a></sup></p>
+<p>Something<sup id="fnref:545"><a class="footnote-ref" href="#fn:545" rel="footnote">545</a></sup></p>
+<p>Something<sup id="fnref:546"><a class="footnote-ref" href="#fn:546" rel="footnote">546</a></sup></p>
+<p>Something<sup id="fnref:547"><a class="footnote-ref" href="#fn:547" rel="footnote">547</a></sup></p>
+<p>Something<sup id="fnref:548"><a class="footnote-ref" href="#fn:548" rel="footnote">548</a></sup></p>
+<p>Something<sup id="fnref:549"><a class="footnote-ref" href="#fn:549" rel="footnote">549</a></sup></p>
+<p>Something<sup id="fnref:550"><a class="footnote-ref" href="#fn:550" rel="footnote">550</a></sup></p>
+<p>Something<sup id="fnref:551"><a class="footnote-ref" href="#fn:551" rel="footnote">551</a></sup></p>
+<p>Something<sup id="fnref:552"><a class="footnote-ref" href="#fn:552" rel="footnote">552</a></sup></p>
+<p>Something<sup id="fnref:553"><a class="footnote-ref" href="#fn:553" rel="footnote">553</a></sup></p>
+<p>Something<sup id="fnref:554"><a class="footnote-ref" href="#fn:554" rel="footnote">554</a></sup></p>
+<p>Something<sup id="fnref:555"><a class="footnote-ref" href="#fn:555" rel="footnote">555</a></sup></p>
+<p>Something<sup id="fnref:556"><a class="footnote-ref" href="#fn:556" rel="footnote">556</a></sup></p>
+<p>Something<sup id="fnref:557"><a class="footnote-ref" href="#fn:557" rel="footnote">557</a></sup></p>
+<p>Something<sup id="fnref:558"><a class="footnote-ref" href="#fn:558" rel="footnote">558</a></sup></p>
+<p>Something<sup id="fnref:559"><a class="footnote-ref" href="#fn:559" rel="footnote">559</a></sup></p>
+<p>Something<sup id="fnref:560"><a class="footnote-ref" href="#fn:560" rel="footnote">560</a></sup></p>
+<p>Something<sup id="fnref:561"><a class="footnote-ref" href="#fn:561" rel="footnote">561</a></sup></p>
+<p>Something<sup id="fnref:562"><a class="footnote-ref" href="#fn:562" rel="footnote">562</a></sup></p>
+<p>Something<sup id="fnref:563"><a class="footnote-ref" href="#fn:563" rel="footnote">563</a></sup></p>
+<p>Something<sup id="fnref:564"><a class="footnote-ref" href="#fn:564" rel="footnote">564</a></sup></p>
+<p>Something<sup id="fnref:565"><a class="footnote-ref" href="#fn:565" rel="footnote">565</a></sup></p>
+<p>Something<sup id="fnref:566"><a class="footnote-ref" href="#fn:566" rel="footnote">566</a></sup></p>
+<p>Something<sup id="fnref:567"><a class="footnote-ref" href="#fn:567" rel="footnote">567</a></sup></p>
+<p>Something<sup id="fnref:568"><a class="footnote-ref" href="#fn:568" rel="footnote">568</a></sup></p>
+<p>Something<sup id="fnref:569"><a class="footnote-ref" href="#fn:569" rel="footnote">569</a></sup></p>
+<p>Something<sup id="fnref:570"><a class="footnote-ref" href="#fn:570" rel="footnote">570</a></sup></p>
+<p>Something<sup id="fnref:571"><a class="footnote-ref" href="#fn:571" rel="footnote">571</a></sup></p>
+<p>Something<sup id="fnref:572"><a class="footnote-ref" href="#fn:572" rel="footnote">572</a></sup></p>
+<p>Something<sup id="fnref:573"><a class="footnote-ref" href="#fn:573" rel="footnote">573</a></sup></p>
+<p>Something<sup id="fnref:574"><a class="footnote-ref" href="#fn:574" rel="footnote">574</a></sup></p>
+<p>Something<sup id="fnref:575"><a class="footnote-ref" href="#fn:575" rel="footnote">575</a></sup></p>
+<p>Something<sup id="fnref:576"><a class="footnote-ref" href="#fn:576" rel="footnote">576</a></sup></p>
+<p>Something<sup id="fnref:577"><a class="footnote-ref" href="#fn:577" rel="footnote">577</a></sup></p>
+<p>Something<sup id="fnref:578"><a class="footnote-ref" href="#fn:578" rel="footnote">578</a></sup></p>
+<p>Something<sup id="fnref:579"><a class="footnote-ref" href="#fn:579" rel="footnote">579</a></sup></p>
+<p>Something<sup id="fnref:580"><a class="footnote-ref" href="#fn:580" rel="footnote">580</a></sup></p>
+<p>Something<sup id="fnref:581"><a class="footnote-ref" href="#fn:581" rel="footnote">581</a></sup></p>
+<p>Something<sup id="fnref:582"><a class="footnote-ref" href="#fn:582" rel="footnote">582</a></sup></p>
+<p>Something<sup id="fnref:583"><a class="footnote-ref" href="#fn:583" rel="footnote">583</a></sup></p>
+<p>Something<sup id="fnref:584"><a class="footnote-ref" href="#fn:584" rel="footnote">584</a></sup></p>
+<p>Something<sup id="fnref:585"><a class="footnote-ref" href="#fn:585" rel="footnote">585</a></sup></p>
+<p>Something<sup id="fnref:586"><a class="footnote-ref" href="#fn:586" rel="footnote">586</a></sup></p>
+<p>Something<sup id="fnref:587"><a class="footnote-ref" href="#fn:587" rel="footnote">587</a></sup></p>
+<p>Something<sup id="fnref:588"><a class="footnote-ref" href="#fn:588" rel="footnote">588</a></sup></p>
+<p>Something<sup id="fnref:589"><a class="footnote-ref" href="#fn:589" rel="footnote">589</a></sup></p>
+<p>Something<sup id="fnref:590"><a class="footnote-ref" href="#fn:590" rel="footnote">590</a></sup></p>
+<p>Something<sup id="fnref:591"><a class="footnote-ref" href="#fn:591" rel="footnote">591</a></sup></p>
+<p>Something<sup id="fnref:592"><a class="footnote-ref" href="#fn:592" rel="footnote">592</a></sup></p>
+<p>Something<sup id="fnref:593"><a class="footnote-ref" href="#fn:593" rel="footnote">593</a></sup></p>
+<p>Something<sup id="fnref:594"><a class="footnote-ref" href="#fn:594" rel="footnote">594</a></sup></p>
+<p>Something<sup id="fnref:595"><a class="footnote-ref" href="#fn:595" rel="footnote">595</a></sup></p>
+<p>Something<sup id="fnref:596"><a class="footnote-ref" href="#fn:596" rel="footnote">596</a></sup></p>
+<p>Something<sup id="fnref:597"><a class="footnote-ref" href="#fn:597" rel="footnote">597</a></sup></p>
+<p>Something<sup id="fnref:598"><a class="footnote-ref" href="#fn:598" rel="footnote">598</a></sup></p>
+<p>Something<sup id="fnref:599"><a class="footnote-ref" href="#fn:599" rel="footnote">599</a></sup></p>
+<p>Something<sup id="fnref:600"><a class="footnote-ref" href="#fn:600" rel="footnote">600</a></sup></p>
+<p>Something<sup id="fnref:601"><a class="footnote-ref" href="#fn:601" rel="footnote">601</a></sup></p>
+<p>Something<sup id="fnref:602"><a class="footnote-ref" href="#fn:602" rel="footnote">602</a></sup></p>
+<p>Something<sup id="fnref:603"><a class="footnote-ref" href="#fn:603" rel="footnote">603</a></sup></p>
+<p>Something<sup id="fnref:604"><a class="footnote-ref" href="#fn:604" rel="footnote">604</a></sup></p>
+<p>Something<sup id="fnref:605"><a class="footnote-ref" href="#fn:605" rel="footnote">605</a></sup></p>
+<p>Something<sup id="fnref:606"><a class="footnote-ref" href="#fn:606" rel="footnote">606</a></sup></p>
+<p>Something<sup id="fnref:607"><a class="footnote-ref" href="#fn:607" rel="footnote">607</a></sup></p>
+<p>Something<sup id="fnref:608"><a class="footnote-ref" href="#fn:608" rel="footnote">608</a></sup></p>
+<p>Something<sup id="fnref:609"><a class="footnote-ref" href="#fn:609" rel="footnote">609</a></sup></p>
+<p>Something<sup id="fnref:610"><a class="footnote-ref" href="#fn:610" rel="footnote">610</a></sup></p>
+<p>Something<sup id="fnref:611"><a class="footnote-ref" href="#fn:611" rel="footnote">611</a></sup></p>
+<p>Something<sup id="fnref:612"><a class="footnote-ref" href="#fn:612" rel="footnote">612</a></sup></p>
+<p>Something<sup id="fnref:613"><a class="footnote-ref" href="#fn:613" rel="footnote">613</a></sup></p>
+<p>Something<sup id="fnref:614"><a class="footnote-ref" href="#fn:614" rel="footnote">614</a></sup></p>
+<p>Something<sup id="fnref:615"><a class="footnote-ref" href="#fn:615" rel="footnote">615</a></sup></p>
+<p>Something<sup id="fnref:616"><a class="footnote-ref" href="#fn:616" rel="footnote">616</a></sup></p>
+<p>Something<sup id="fnref:617"><a class="footnote-ref" href="#fn:617" rel="footnote">617</a></sup></p>
+<p>Something<sup id="fnref:618"><a class="footnote-ref" href="#fn:618" rel="footnote">618</a></sup></p>
+<p>Something<sup id="fnref:619"><a class="footnote-ref" href="#fn:619" rel="footnote">619</a></sup></p>
+<p>Something<sup id="fnref:620"><a class="footnote-ref" href="#fn:620" rel="footnote">620</a></sup></p>
+<p>Something<sup id="fnref:621"><a class="footnote-ref" href="#fn:621" rel="footnote">621</a></sup></p>
+<p>Something<sup id="fnref:622"><a class="footnote-ref" href="#fn:622" rel="footnote">622</a></sup></p>
+<p>Something<sup id="fnref:623"><a class="footnote-ref" href="#fn:623" rel="footnote">623</a></sup></p>
+<p>Something<sup id="fnref:624"><a class="footnote-ref" href="#fn:624" rel="footnote">624</a></sup></p>
+<p>Something<sup id="fnref:625"><a class="footnote-ref" href="#fn:625" rel="footnote">625</a></sup></p>
+<p>Something<sup id="fnref:626"><a class="footnote-ref" href="#fn:626" rel="footnote">626</a></sup></p>
+<p>Something<sup id="fnref:627"><a class="footnote-ref" href="#fn:627" rel="footnote">627</a></sup></p>
+<p>Something<sup id="fnref:628"><a class="footnote-ref" href="#fn:628" rel="footnote">628</a></sup></p>
+<p>Something<sup id="fnref:629"><a class="footnote-ref" href="#fn:629" rel="footnote">629</a></sup></p>
+<p>Something<sup id="fnref:630"><a class="footnote-ref" href="#fn:630" rel="footnote">630</a></sup></p>
+<p>Something<sup id="fnref:631"><a class="footnote-ref" href="#fn:631" rel="footnote">631</a></sup></p>
+<p>Something<sup id="fnref:632"><a class="footnote-ref" href="#fn:632" rel="footnote">632</a></sup></p>
+<p>Something<sup id="fnref:633"><a class="footnote-ref" href="#fn:633" rel="footnote">633</a></sup></p>
+<p>Something<sup id="fnref:634"><a class="footnote-ref" href="#fn:634" rel="footnote">634</a></sup></p>
+<p>Something<sup id="fnref:635"><a class="footnote-ref" href="#fn:635" rel="footnote">635</a></sup></p>
+<p>Something<sup id="fnref:636"><a class="footnote-ref" href="#fn:636" rel="footnote">636</a></sup></p>
+<p>Something<sup id="fnref:637"><a class="footnote-ref" href="#fn:637" rel="footnote">637</a></sup></p>
+<p>Something<sup id="fnref:638"><a class="footnote-ref" href="#fn:638" rel="footnote">638</a></sup></p>
+<p>Something<sup id="fnref:639"><a class="footnote-ref" href="#fn:639" rel="footnote">639</a></sup></p>
+<p>Something<sup id="fnref:640"><a class="footnote-ref" href="#fn:640" rel="footnote">640</a></sup></p>
+<p>Something<sup id="fnref:641"><a class="footnote-ref" href="#fn:641" rel="footnote">641</a></sup></p>
+<p>Something<sup id="fnref:642"><a class="footnote-ref" href="#fn:642" rel="footnote">642</a></sup></p>
+<p>Something<sup id="fnref:643"><a class="footnote-ref" href="#fn:643" rel="footnote">643</a></sup></p>
+<p>Something<sup id="fnref:644"><a class="footnote-ref" href="#fn:644" rel="footnote">644</a></sup></p>
+<p>Something<sup id="fnref:645"><a class="footnote-ref" href="#fn:645" rel="footnote">645</a></sup></p>
+<p>Something<sup id="fnref:646"><a class="footnote-ref" href="#fn:646" rel="footnote">646</a></sup></p>
+<p>Something<sup id="fnref:647"><a class="footnote-ref" href="#fn:647" rel="footnote">647</a></sup></p>
+<p>Something<sup id="fnref:648"><a class="footnote-ref" href="#fn:648" rel="footnote">648</a></sup></p>
+<p>Something<sup id="fnref:649"><a class="footnote-ref" href="#fn:649" rel="footnote">649</a></sup></p>
+<p>Something<sup id="fnref:650"><a class="footnote-ref" href="#fn:650" rel="footnote">650</a></sup></p>
+<p>Something<sup id="fnref:651"><a class="footnote-ref" href="#fn:651" rel="footnote">651</a></sup></p>
+<p>Something<sup id="fnref:652"><a class="footnote-ref" href="#fn:652" rel="footnote">652</a></sup></p>
+<p>Something<sup id="fnref:653"><a class="footnote-ref" href="#fn:653" rel="footnote">653</a></sup></p>
+<p>Something<sup id="fnref:654"><a class="footnote-ref" href="#fn:654" rel="footnote">654</a></sup></p>
+<p>Something<sup id="fnref:655"><a class="footnote-ref" href="#fn:655" rel="footnote">655</a></sup></p>
+<p>Something<sup id="fnref:656"><a class="footnote-ref" href="#fn:656" rel="footnote">656</a></sup></p>
+<p>Something<sup id="fnref:657"><a class="footnote-ref" href="#fn:657" rel="footnote">657</a></sup></p>
+<p>Something<sup id="fnref:658"><a class="footnote-ref" href="#fn:658" rel="footnote">658</a></sup></p>
+<p>Something<sup id="fnref:659"><a class="footnote-ref" href="#fn:659" rel="footnote">659</a></sup></p>
+<p>Something<sup id="fnref:660"><a class="footnote-ref" href="#fn:660" rel="footnote">660</a></sup></p>
+<p>Something<sup id="fnref:661"><a class="footnote-ref" href="#fn:661" rel="footnote">661</a></sup></p>
+<p>Something<sup id="fnref:662"><a class="footnote-ref" href="#fn:662" rel="footnote">662</a></sup></p>
+<p>Something<sup id="fnref:663"><a class="footnote-ref" href="#fn:663" rel="footnote">663</a></sup></p>
+<p>Something<sup id="fnref:664"><a class="footnote-ref" href="#fn:664" rel="footnote">664</a></sup></p>
+<p>Something<sup id="fnref:665"><a class="footnote-ref" href="#fn:665" rel="footnote">665</a></sup></p>
+<p>Something<sup id="fnref:666"><a class="footnote-ref" href="#fn:666" rel="footnote">666</a></sup></p>
+<p>Something<sup id="fnref:667"><a class="footnote-ref" href="#fn:667" rel="footnote">667</a></sup></p>
+<p>Something<sup id="fnref:668"><a class="footnote-ref" href="#fn:668" rel="footnote">668</a></sup></p>
+<p>Something<sup id="fnref:669"><a class="footnote-ref" href="#fn:669" rel="footnote">669</a></sup></p>
+<p>Something<sup id="fnref:670"><a class="footnote-ref" href="#fn:670" rel="footnote">670</a></sup></p>
+<p>Something<sup id="fnref:671"><a class="footnote-ref" href="#fn:671" rel="footnote">671</a></sup></p>
+<p>Something<sup id="fnref:672"><a class="footnote-ref" href="#fn:672" rel="footnote">672</a></sup></p>
+<p>Something<sup id="fnref:673"><a class="footnote-ref" href="#fn:673" rel="footnote">673</a></sup></p>
+<p>Something<sup id="fnref:674"><a class="footnote-ref" href="#fn:674" rel="footnote">674</a></sup></p>
+<p>Something<sup id="fnref:675"><a class="footnote-ref" href="#fn:675" rel="footnote">675</a></sup></p>
+<p>Something<sup id="fnref:676"><a class="footnote-ref" href="#fn:676" rel="footnote">676</a></sup></p>
+<p>Something<sup id="fnref:677"><a class="footnote-ref" href="#fn:677" rel="footnote">677</a></sup></p>
+<p>Something<sup id="fnref:678"><a class="footnote-ref" href="#fn:678" rel="footnote">678</a></sup></p>
+<p>Something<sup id="fnref:679"><a class="footnote-ref" href="#fn:679" rel="footnote">679</a></sup></p>
+<p>Something<sup id="fnref:680"><a class="footnote-ref" href="#fn:680" rel="footnote">680</a></sup></p>
+<p>Something<sup id="fnref:681"><a class="footnote-ref" href="#fn:681" rel="footnote">681</a></sup></p>
+<p>Something<sup id="fnref:682"><a class="footnote-ref" href="#fn:682" rel="footnote">682</a></sup></p>
+<p>Something<sup id="fnref:683"><a class="footnote-ref" href="#fn:683" rel="footnote">683</a></sup></p>
+<p>Something<sup id="fnref:684"><a class="footnote-ref" href="#fn:684" rel="footnote">684</a></sup></p>
+<p>Something<sup id="fnref:685"><a class="footnote-ref" href="#fn:685" rel="footnote">685</a></sup></p>
+<p>Something<sup id="fnref:686"><a class="footnote-ref" href="#fn:686" rel="footnote">686</a></sup></p>
+<p>Something<sup id="fnref:687"><a class="footnote-ref" href="#fn:687" rel="footnote">687</a></sup></p>
+<p>Something<sup id="fnref:688"><a class="footnote-ref" href="#fn:688" rel="footnote">688</a></sup></p>
+<p>Something<sup id="fnref:689"><a class="footnote-ref" href="#fn:689" rel="footnote">689</a></sup></p>
+<p>Something<sup id="fnref:690"><a class="footnote-ref" href="#fn:690" rel="footnote">690</a></sup></p>
+<p>Something<sup id="fnref:691"><a class="footnote-ref" href="#fn:691" rel="footnote">691</a></sup></p>
+<p>Something<sup id="fnref:692"><a class="footnote-ref" href="#fn:692" rel="footnote">692</a></sup></p>
+<p>Something<sup id="fnref:693"><a class="footnote-ref" href="#fn:693" rel="footnote">693</a></sup></p>
+<p>Something<sup id="fnref:694"><a class="footnote-ref" href="#fn:694" rel="footnote">694</a></sup></p>
+<p>Something<sup id="fnref:695"><a class="footnote-ref" href="#fn:695" rel="footnote">695</a></sup></p>
+<p>Something<sup id="fnref:696"><a class="footnote-ref" href="#fn:696" rel="footnote">696</a></sup></p>
+<p>Something<sup id="fnref:697"><a class="footnote-ref" href="#fn:697" rel="footnote">697</a></sup></p>
+<p>Something<sup id="fnref:698"><a class="footnote-ref" href="#fn:698" rel="footnote">698</a></sup></p>
+<p>Something<sup id="fnref:699"><a class="footnote-ref" href="#fn:699" rel="footnote">699</a></sup></p>
+<p>Something<sup id="fnref:700"><a class="footnote-ref" href="#fn:700" rel="footnote">700</a></sup></p>
+<p>Something<sup id="fnref:701"><a class="footnote-ref" href="#fn:701" rel="footnote">701</a></sup></p>
+<p>Something<sup id="fnref:702"><a class="footnote-ref" href="#fn:702" rel="footnote">702</a></sup></p>
+<p>Something<sup id="fnref:703"><a class="footnote-ref" href="#fn:703" rel="footnote">703</a></sup></p>
+<p>Something<sup id="fnref:704"><a class="footnote-ref" href="#fn:704" rel="footnote">704</a></sup></p>
+<p>Something<sup id="fnref:705"><a class="footnote-ref" href="#fn:705" rel="footnote">705</a></sup></p>
+<p>Something<sup id="fnref:706"><a class="footnote-ref" href="#fn:706" rel="footnote">706</a></sup></p>
+<p>Something<sup id="fnref:707"><a class="footnote-ref" href="#fn:707" rel="footnote">707</a></sup></p>
+<p>Something<sup id="fnref:708"><a class="footnote-ref" href="#fn:708" rel="footnote">708</a></sup></p>
+<p>Something<sup id="fnref:709"><a class="footnote-ref" href="#fn:709" rel="footnote">709</a></sup></p>
+<p>Something<sup id="fnref:710"><a class="footnote-ref" href="#fn:710" rel="footnote">710</a></sup></p>
+<p>Something<sup id="fnref:711"><a class="footnote-ref" href="#fn:711" rel="footnote">711</a></sup></p>
+<p>Something<sup id="fnref:712"><a class="footnote-ref" href="#fn:712" rel="footnote">712</a></sup></p>
+<p>Something<sup id="fnref:713"><a class="footnote-ref" href="#fn:713" rel="footnote">713</a></sup></p>
+<p>Something<sup id="fnref:714"><a class="footnote-ref" href="#fn:714" rel="footnote">714</a></sup></p>
+<p>Something<sup id="fnref:715"><a class="footnote-ref" href="#fn:715" rel="footnote">715</a></sup></p>
+<p>Something<sup id="fnref:716"><a class="footnote-ref" href="#fn:716" rel="footnote">716</a></sup></p>
+<p>Something<sup id="fnref:717"><a class="footnote-ref" href="#fn:717" rel="footnote">717</a></sup></p>
+<p>Something<sup id="fnref:718"><a class="footnote-ref" href="#fn:718" rel="footnote">718</a></sup></p>
+<p>Something<sup id="fnref:719"><a class="footnote-ref" href="#fn:719" rel="footnote">719</a></sup></p>
+<p>Something<sup id="fnref:720"><a class="footnote-ref" href="#fn:720" rel="footnote">720</a></sup></p>
+<p>Something<sup id="fnref:721"><a class="footnote-ref" href="#fn:721" rel="footnote">721</a></sup></p>
+<p>Something<sup id="fnref:722"><a class="footnote-ref" href="#fn:722" rel="footnote">722</a></sup></p>
+<p>Something<sup id="fnref:723"><a class="footnote-ref" href="#fn:723" rel="footnote">723</a></sup></p>
+<p>Something<sup id="fnref:724"><a class="footnote-ref" href="#fn:724" rel="footnote">724</a></sup></p>
+<p>Something<sup id="fnref:725"><a class="footnote-ref" href="#fn:725" rel="footnote">725</a></sup></p>
+<p>Something<sup id="fnref:726"><a class="footnote-ref" href="#fn:726" rel="footnote">726</a></sup></p>
+<p>Something<sup id="fnref:727"><a class="footnote-ref" href="#fn:727" rel="footnote">727</a></sup></p>
+<p>Something<sup id="fnref:728"><a class="footnote-ref" href="#fn:728" rel="footnote">728</a></sup></p>
+<p>Something<sup id="fnref:729"><a class="footnote-ref" href="#fn:729" rel="footnote">729</a></sup></p>
+<p>Something<sup id="fnref:730"><a class="footnote-ref" href="#fn:730" rel="footnote">730</a></sup></p>
+<p>Something<sup id="fnref:731"><a class="footnote-ref" href="#fn:731" rel="footnote">731</a></sup></p>
+<p>Something<sup id="fnref:732"><a class="footnote-ref" href="#fn:732" rel="footnote">732</a></sup></p>
+<p>Something<sup id="fnref:733"><a class="footnote-ref" href="#fn:733" rel="footnote">733</a></sup></p>
+<p>Something<sup id="fnref:734"><a class="footnote-ref" href="#fn:734" rel="footnote">734</a></sup></p>
+<p>Something<sup id="fnref:735"><a class="footnote-ref" href="#fn:735" rel="footnote">735</a></sup></p>
+<p>Something<sup id="fnref:736"><a class="footnote-ref" href="#fn:736" rel="footnote">736</a></sup></p>
+<p>Something<sup id="fnref:737"><a class="footnote-ref" href="#fn:737" rel="footnote">737</a></sup></p>
+<p>Something<sup id="fnref:738"><a class="footnote-ref" href="#fn:738" rel="footnote">738</a></sup></p>
+<p>Something<sup id="fnref:739"><a class="footnote-ref" href="#fn:739" rel="footnote">739</a></sup></p>
+<p>Something<sup id="fnref:740"><a class="footnote-ref" href="#fn:740" rel="footnote">740</a></sup></p>
+<p>Something<sup id="fnref:741"><a class="footnote-ref" href="#fn:741" rel="footnote">741</a></sup></p>
+<p>Something<sup id="fnref:742"><a class="footnote-ref" href="#fn:742" rel="footnote">742</a></sup></p>
+<p>Something<sup id="fnref:743"><a class="footnote-ref" href="#fn:743" rel="footnote">743</a></sup></p>
+<p>Something<sup id="fnref:744"><a class="footnote-ref" href="#fn:744" rel="footnote">744</a></sup></p>
+<p>Something<sup id="fnref:745"><a class="footnote-ref" href="#fn:745" rel="footnote">745</a></sup></p>
+<p>Something<sup id="fnref:746"><a class="footnote-ref" href="#fn:746" rel="footnote">746</a></sup></p>
+<p>Something<sup id="fnref:747"><a class="footnote-ref" href="#fn:747" rel="footnote">747</a></sup></p>
+<p>Something<sup id="fnref:748"><a class="footnote-ref" href="#fn:748" rel="footnote">748</a></sup></p>
+<p>Something<sup id="fnref:749"><a class="footnote-ref" href="#fn:749" rel="footnote">749</a></sup></p>
+<p>Something<sup id="fnref:750"><a class="footnote-ref" href="#fn:750" rel="footnote">750</a></sup></p>
+<p>Something<sup id="fnref:751"><a class="footnote-ref" href="#fn:751" rel="footnote">751</a></sup></p>
+<p>Something<sup id="fnref:752"><a class="footnote-ref" href="#fn:752" rel="footnote">752</a></sup></p>
+<p>Something<sup id="fnref:753"><a class="footnote-ref" href="#fn:753" rel="footnote">753</a></sup></p>
+<p>Something<sup id="fnref:754"><a class="footnote-ref" href="#fn:754" rel="footnote">754</a></sup></p>
+<p>Something<sup id="fnref:755"><a class="footnote-ref" href="#fn:755" rel="footnote">755</a></sup></p>
+<p>Something<sup id="fnref:756"><a class="footnote-ref" href="#fn:756" rel="footnote">756</a></sup></p>
+<p>Something<sup id="fnref:757"><a class="footnote-ref" href="#fn:757" rel="footnote">757</a></sup></p>
+<p>Something<sup id="fnref:758"><a class="footnote-ref" href="#fn:758" rel="footnote">758</a></sup></p>
+<p>Something<sup id="fnref:759"><a class="footnote-ref" href="#fn:759" rel="footnote">759</a></sup></p>
+<p>Something<sup id="fnref:760"><a class="footnote-ref" href="#fn:760" rel="footnote">760</a></sup></p>
+<p>Something<sup id="fnref:761"><a class="footnote-ref" href="#fn:761" rel="footnote">761</a></sup></p>
+<p>Something<sup id="fnref:762"><a class="footnote-ref" href="#fn:762" rel="footnote">762</a></sup></p>
+<p>Something<sup id="fnref:763"><a class="footnote-ref" href="#fn:763" rel="footnote">763</a></sup></p>
+<p>Something<sup id="fnref:764"><a class="footnote-ref" href="#fn:764" rel="footnote">764</a></sup></p>
+<p>Something<sup id="fnref:765"><a class="footnote-ref" href="#fn:765" rel="footnote">765</a></sup></p>
+<p>Something<sup id="fnref:766"><a class="footnote-ref" href="#fn:766" rel="footnote">766</a></sup></p>
+<p>Something<sup id="fnref:767"><a class="footnote-ref" href="#fn:767" rel="footnote">767</a></sup></p>
+<p>Something<sup id="fnref:768"><a class="footnote-ref" href="#fn:768" rel="footnote">768</a></sup></p>
+<p>Something<sup id="fnref:769"><a class="footnote-ref" href="#fn:769" rel="footnote">769</a></sup></p>
+<p>Something<sup id="fnref:770"><a class="footnote-ref" href="#fn:770" rel="footnote">770</a></sup></p>
+<p>Something<sup id="fnref:771"><a class="footnote-ref" href="#fn:771" rel="footnote">771</a></sup></p>
+<p>Something<sup id="fnref:772"><a class="footnote-ref" href="#fn:772" rel="footnote">772</a></sup></p>
+<p>Something<sup id="fnref:773"><a class="footnote-ref" href="#fn:773" rel="footnote">773</a></sup></p>
+<p>Something<sup id="fnref:774"><a class="footnote-ref" href="#fn:774" rel="footnote">774</a></sup></p>
+<p>Something<sup id="fnref:775"><a class="footnote-ref" href="#fn:775" rel="footnote">775</a></sup></p>
+<p>Something<sup id="fnref:776"><a class="footnote-ref" href="#fn:776" rel="footnote">776</a></sup></p>
+<p>Something<sup id="fnref:777"><a class="footnote-ref" href="#fn:777" rel="footnote">777</a></sup></p>
+<p>Something<sup id="fnref:778"><a class="footnote-ref" href="#fn:778" rel="footnote">778</a></sup></p>
+<p>Something<sup id="fnref:779"><a class="footnote-ref" href="#fn:779" rel="footnote">779</a></sup></p>
+<p>Something<sup id="fnref:780"><a class="footnote-ref" href="#fn:780" rel="footnote">780</a></sup></p>
+<p>Something<sup id="fnref:781"><a class="footnote-ref" href="#fn:781" rel="footnote">781</a></sup></p>
+<p>Something<sup id="fnref:782"><a class="footnote-ref" href="#fn:782" rel="footnote">782</a></sup></p>
+<p>Something<sup id="fnref:783"><a class="footnote-ref" href="#fn:783" rel="footnote">783</a></sup></p>
+<p>Something<sup id="fnref:784"><a class="footnote-ref" href="#fn:784" rel="footnote">784</a></sup></p>
+<p>Something<sup id="fnref:785"><a class="footnote-ref" href="#fn:785" rel="footnote">785</a></sup></p>
+<p>Something<sup id="fnref:786"><a class="footnote-ref" href="#fn:786" rel="footnote">786</a></sup></p>
+<p>Something<sup id="fnref:787"><a class="footnote-ref" href="#fn:787" rel="footnote">787</a></sup></p>
+<p>Something<sup id="fnref:788"><a class="footnote-ref" href="#fn:788" rel="footnote">788</a></sup></p>
+<p>Something<sup id="fnref:789"><a class="footnote-ref" href="#fn:789" rel="footnote">789</a></sup></p>
+<p>Something<sup id="fnref:790"><a class="footnote-ref" href="#fn:790" rel="footnote">790</a></sup></p>
+<p>Something<sup id="fnref:791"><a class="footnote-ref" href="#fn:791" rel="footnote">791</a></sup></p>
+<p>Something<sup id="fnref:792"><a class="footnote-ref" href="#fn:792" rel="footnote">792</a></sup></p>
+<p>Something<sup id="fnref:793"><a class="footnote-ref" href="#fn:793" rel="footnote">793</a></sup></p>
+<p>Something<sup id="fnref:794"><a class="footnote-ref" href="#fn:794" rel="footnote">794</a></sup></p>
+<p>Something<sup id="fnref:795"><a class="footnote-ref" href="#fn:795" rel="footnote">795</a></sup></p>
+<p>Something<sup id="fnref:796"><a class="footnote-ref" href="#fn:796" rel="footnote">796</a></sup></p>
+<p>Something<sup id="fnref:797"><a class="footnote-ref" href="#fn:797" rel="footnote">797</a></sup></p>
+<p>Something<sup id="fnref:798"><a class="footnote-ref" href="#fn:798" rel="footnote">798</a></sup></p>
+<p>Something<sup id="fnref:799"><a class="footnote-ref" href="#fn:799" rel="footnote">799</a></sup></p>
+<p>Something<sup id="fnref:800"><a class="footnote-ref" href="#fn:800" rel="footnote">800</a></sup></p>
+<p>Something<sup id="fnref:801"><a class="footnote-ref" href="#fn:801" rel="footnote">801</a></sup></p>
+<p>Something<sup id="fnref:802"><a class="footnote-ref" href="#fn:802" rel="footnote">802</a></sup></p>
+<p>Something<sup id="fnref:803"><a class="footnote-ref" href="#fn:803" rel="footnote">803</a></sup></p>
+<p>Something<sup id="fnref:804"><a class="footnote-ref" href="#fn:804" rel="footnote">804</a></sup></p>
+<p>Something<sup id="fnref:805"><a class="footnote-ref" href="#fn:805" rel="footnote">805</a></sup></p>
+<p>Something<sup id="fnref:806"><a class="footnote-ref" href="#fn:806" rel="footnote">806</a></sup></p>
+<p>Something<sup id="fnref:807"><a class="footnote-ref" href="#fn:807" rel="footnote">807</a></sup></p>
+<p>Something<sup id="fnref:808"><a class="footnote-ref" href="#fn:808" rel="footnote">808</a></sup></p>
+<p>Something<sup id="fnref:809"><a class="footnote-ref" href="#fn:809" rel="footnote">809</a></sup></p>
+<p>Something<sup id="fnref:810"><a class="footnote-ref" href="#fn:810" rel="footnote">810</a></sup></p>
+<p>Something<sup id="fnref:811"><a class="footnote-ref" href="#fn:811" rel="footnote">811</a></sup></p>
+<p>Something<sup id="fnref:812"><a class="footnote-ref" href="#fn:812" rel="footnote">812</a></sup></p>
+<p>Something<sup id="fnref:813"><a class="footnote-ref" href="#fn:813" rel="footnote">813</a></sup></p>
+<p>Something<sup id="fnref:814"><a class="footnote-ref" href="#fn:814" rel="footnote">814</a></sup></p>
+<p>Something<sup id="fnref:815"><a class="footnote-ref" href="#fn:815" rel="footnote">815</a></sup></p>
+<p>Something<sup id="fnref:816"><a class="footnote-ref" href="#fn:816" rel="footnote">816</a></sup></p>
+<p>Something<sup id="fnref:817"><a class="footnote-ref" href="#fn:817" rel="footnote">817</a></sup></p>
+<p>Something<sup id="fnref:818"><a class="footnote-ref" href="#fn:818" rel="footnote">818</a></sup></p>
+<p>Something<sup id="fnref:819"><a class="footnote-ref" href="#fn:819" rel="footnote">819</a></sup></p>
+<p>Something<sup id="fnref:820"><a class="footnote-ref" href="#fn:820" rel="footnote">820</a></sup></p>
+<p>Something<sup id="fnref:821"><a class="footnote-ref" href="#fn:821" rel="footnote">821</a></sup></p>
+<p>Something<sup id="fnref:822"><a class="footnote-ref" href="#fn:822" rel="footnote">822</a></sup></p>
+<p>Something<sup id="fnref:823"><a class="footnote-ref" href="#fn:823" rel="footnote">823</a></sup></p>
+<p>Something<sup id="fnref:824"><a class="footnote-ref" href="#fn:824" rel="footnote">824</a></sup></p>
+<p>Something<sup id="fnref:825"><a class="footnote-ref" href="#fn:825" rel="footnote">825</a></sup></p>
+<p>Something<sup id="fnref:826"><a class="footnote-ref" href="#fn:826" rel="footnote">826</a></sup></p>
+<p>Something<sup id="fnref:827"><a class="footnote-ref" href="#fn:827" rel="footnote">827</a></sup></p>
+<p>Something<sup id="fnref:828"><a class="footnote-ref" href="#fn:828" rel="footnote">828</a></sup></p>
+<p>Something<sup id="fnref:829"><a class="footnote-ref" href="#fn:829" rel="footnote">829</a></sup></p>
+<p>Something<sup id="fnref:830"><a class="footnote-ref" href="#fn:830" rel="footnote">830</a></sup></p>
+<p>Something<sup id="fnref:831"><a class="footnote-ref" href="#fn:831" rel="footnote">831</a></sup></p>
+<p>Something<sup id="fnref:832"><a class="footnote-ref" href="#fn:832" rel="footnote">832</a></sup></p>
+<p>Something<sup id="fnref:833"><a class="footnote-ref" href="#fn:833" rel="footnote">833</a></sup></p>
+<p>Something<sup id="fnref:834"><a class="footnote-ref" href="#fn:834" rel="footnote">834</a></sup></p>
+<p>Something<sup id="fnref:835"><a class="footnote-ref" href="#fn:835" rel="footnote">835</a></sup></p>
+<p>Something<sup id="fnref:836"><a class="footnote-ref" href="#fn:836" rel="footnote">836</a></sup></p>
+<p>Something<sup id="fnref:837"><a class="footnote-ref" href="#fn:837" rel="footnote">837</a></sup></p>
+<p>Something<sup id="fnref:838"><a class="footnote-ref" href="#fn:838" rel="footnote">838</a></sup></p>
+<p>Something<sup id="fnref:839"><a class="footnote-ref" href="#fn:839" rel="footnote">839</a></sup></p>
+<p>Something<sup id="fnref:840"><a class="footnote-ref" href="#fn:840" rel="footnote">840</a></sup></p>
+<p>Something<sup id="fnref:841"><a class="footnote-ref" href="#fn:841" rel="footnote">841</a></sup></p>
+<p>Something<sup id="fnref:842"><a class="footnote-ref" href="#fn:842" rel="footnote">842</a></sup></p>
+<p>Something<sup id="fnref:843"><a class="footnote-ref" href="#fn:843" rel="footnote">843</a></sup></p>
+<p>Something<sup id="fnref:844"><a class="footnote-ref" href="#fn:844" rel="footnote">844</a></sup></p>
+<p>Something<sup id="fnref:845"><a class="footnote-ref" href="#fn:845" rel="footnote">845</a></sup></p>
+<p>Something<sup id="fnref:846"><a class="footnote-ref" href="#fn:846" rel="footnote">846</a></sup></p>
+<p>Something<sup id="fnref:847"><a class="footnote-ref" href="#fn:847" rel="footnote">847</a></sup></p>
+<p>Something<sup id="fnref:848"><a class="footnote-ref" href="#fn:848" rel="footnote">848</a></sup></p>
+<p>Something<sup id="fnref:849"><a class="footnote-ref" href="#fn:849" rel="footnote">849</a></sup></p>
+<p>Something<sup id="fnref:850"><a class="footnote-ref" href="#fn:850" rel="footnote">850</a></sup></p>
+<p>Something<sup id="fnref:851"><a class="footnote-ref" href="#fn:851" rel="footnote">851</a></sup></p>
+<p>Something<sup id="fnref:852"><a class="footnote-ref" href="#fn:852" rel="footnote">852</a></sup></p>
+<p>Something<sup id="fnref:853"><a class="footnote-ref" href="#fn:853" rel="footnote">853</a></sup></p>
+<p>Something<sup id="fnref:854"><a class="footnote-ref" href="#fn:854" rel="footnote">854</a></sup></p>
+<p>Something<sup id="fnref:855"><a class="footnote-ref" href="#fn:855" rel="footnote">855</a></sup></p>
+<p>Something<sup id="fnref:856"><a class="footnote-ref" href="#fn:856" rel="footnote">856</a></sup></p>
+<p>Something<sup id="fnref:857"><a class="footnote-ref" href="#fn:857" rel="footnote">857</a></sup></p>
+<p>Something<sup id="fnref:858"><a class="footnote-ref" href="#fn:858" rel="footnote">858</a></sup></p>
+<p>Something<sup id="fnref:859"><a class="footnote-ref" href="#fn:859" rel="footnote">859</a></sup></p>
+<p>Something<sup id="fnref:860"><a class="footnote-ref" href="#fn:860" rel="footnote">860</a></sup></p>
+<p>Something<sup id="fnref:861"><a class="footnote-ref" href="#fn:861" rel="footnote">861</a></sup></p>
+<p>Something<sup id="fnref:862"><a class="footnote-ref" href="#fn:862" rel="footnote">862</a></sup></p>
+<p>Something<sup id="fnref:863"><a class="footnote-ref" href="#fn:863" rel="footnote">863</a></sup></p>
+<p>Something<sup id="fnref:864"><a class="footnote-ref" href="#fn:864" rel="footnote">864</a></sup></p>
+<p>Something<sup id="fnref:865"><a class="footnote-ref" href="#fn:865" rel="footnote">865</a></sup></p>
+<p>Something<sup id="fnref:866"><a class="footnote-ref" href="#fn:866" rel="footnote">866</a></sup></p>
+<p>Something<sup id="fnref:867"><a class="footnote-ref" href="#fn:867" rel="footnote">867</a></sup></p>
+<p>Something<sup id="fnref:868"><a class="footnote-ref" href="#fn:868" rel="footnote">868</a></sup></p>
+<p>Something<sup id="fnref:869"><a class="footnote-ref" href="#fn:869" rel="footnote">869</a></sup></p>
+<p>Something<sup id="fnref:870"><a class="footnote-ref" href="#fn:870" rel="footnote">870</a></sup></p>
+<p>Something<sup id="fnref:871"><a class="footnote-ref" href="#fn:871" rel="footnote">871</a></sup></p>
+<p>Something<sup id="fnref:872"><a class="footnote-ref" href="#fn:872" rel="footnote">872</a></sup></p>
+<p>Something<sup id="fnref:873"><a class="footnote-ref" href="#fn:873" rel="footnote">873</a></sup></p>
+<p>Something<sup id="fnref:874"><a class="footnote-ref" href="#fn:874" rel="footnote">874</a></sup></p>
+<p>Something<sup id="fnref:875"><a class="footnote-ref" href="#fn:875" rel="footnote">875</a></sup></p>
+<p>Something<sup id="fnref:876"><a class="footnote-ref" href="#fn:876" rel="footnote">876</a></sup></p>
+<p>Something<sup id="fnref:877"><a class="footnote-ref" href="#fn:877" rel="footnote">877</a></sup></p>
+<p>Something<sup id="fnref:878"><a class="footnote-ref" href="#fn:878" rel="footnote">878</a></sup></p>
+<p>Something<sup id="fnref:879"><a class="footnote-ref" href="#fn:879" rel="footnote">879</a></sup></p>
+<p>Something<sup id="fnref:880"><a class="footnote-ref" href="#fn:880" rel="footnote">880</a></sup></p>
+<p>Something<sup id="fnref:881"><a class="footnote-ref" href="#fn:881" rel="footnote">881</a></sup></p>
+<p>Something<sup id="fnref:882"><a class="footnote-ref" href="#fn:882" rel="footnote">882</a></sup></p>
+<p>Something<sup id="fnref:883"><a class="footnote-ref" href="#fn:883" rel="footnote">883</a></sup></p>
+<p>Something<sup id="fnref:884"><a class="footnote-ref" href="#fn:884" rel="footnote">884</a></sup></p>
+<p>Something<sup id="fnref:885"><a class="footnote-ref" href="#fn:885" rel="footnote">885</a></sup></p>
+<p>Something<sup id="fnref:886"><a class="footnote-ref" href="#fn:886" rel="footnote">886</a></sup></p>
+<p>Something<sup id="fnref:887"><a class="footnote-ref" href="#fn:887" rel="footnote">887</a></sup></p>
+<p>Something<sup id="fnref:888"><a class="footnote-ref" href="#fn:888" rel="footnote">888</a></sup></p>
+<p>Something<sup id="fnref:889"><a class="footnote-ref" href="#fn:889" rel="footnote">889</a></sup></p>
+<p>Something<sup id="fnref:890"><a class="footnote-ref" href="#fn:890" rel="footnote">890</a></sup></p>
+<p>Something<sup id="fnref:891"><a class="footnote-ref" href="#fn:891" rel="footnote">891</a></sup></p>
+<p>Something<sup id="fnref:892"><a class="footnote-ref" href="#fn:892" rel="footnote">892</a></sup></p>
+<p>Something<sup id="fnref:893"><a class="footnote-ref" href="#fn:893" rel="footnote">893</a></sup></p>
+<p>Something<sup id="fnref:894"><a class="footnote-ref" href="#fn:894" rel="footnote">894</a></sup></p>
+<p>Something<sup id="fnref:895"><a class="footnote-ref" href="#fn:895" rel="footnote">895</a></sup></p>
+<p>Something<sup id="fnref:896"><a class="footnote-ref" href="#fn:896" rel="footnote">896</a></sup></p>
+<p>Something<sup id="fnref:897"><a class="footnote-ref" href="#fn:897" rel="footnote">897</a></sup></p>
+<p>Something<sup id="fnref:898"><a class="footnote-ref" href="#fn:898" rel="footnote">898</a></sup></p>
+<p>Something<sup id="fnref:899"><a class="footnote-ref" href="#fn:899" rel="footnote">899</a></sup></p>
+<p>Something<sup id="fnref:900"><a class="footnote-ref" href="#fn:900" rel="footnote">900</a></sup></p>
+<p>Something<sup id="fnref:901"><a class="footnote-ref" href="#fn:901" rel="footnote">901</a></sup></p>
+<p>Something<sup id="fnref:902"><a class="footnote-ref" href="#fn:902" rel="footnote">902</a></sup></p>
+<p>Something<sup id="fnref:903"><a class="footnote-ref" href="#fn:903" rel="footnote">903</a></sup></p>
+<p>Something<sup id="fnref:904"><a class="footnote-ref" href="#fn:904" rel="footnote">904</a></sup></p>
+<p>Something<sup id="fnref:905"><a class="footnote-ref" href="#fn:905" rel="footnote">905</a></sup></p>
+<p>Something<sup id="fnref:906"><a class="footnote-ref" href="#fn:906" rel="footnote">906</a></sup></p>
+<p>Something<sup id="fnref:907"><a class="footnote-ref" href="#fn:907" rel="footnote">907</a></sup></p>
+<p>Something<sup id="fnref:908"><a class="footnote-ref" href="#fn:908" rel="footnote">908</a></sup></p>
+<p>Something<sup id="fnref:909"><a class="footnote-ref" href="#fn:909" rel="footnote">909</a></sup></p>
+<p>Something<sup id="fnref:910"><a class="footnote-ref" href="#fn:910" rel="footnote">910</a></sup></p>
+<p>Something<sup id="fnref:911"><a class="footnote-ref" href="#fn:911" rel="footnote">911</a></sup></p>
+<p>Something<sup id="fnref:912"><a class="footnote-ref" href="#fn:912" rel="footnote">912</a></sup></p>
+<p>Something<sup id="fnref:913"><a class="footnote-ref" href="#fn:913" rel="footnote">913</a></sup></p>
+<p>Something<sup id="fnref:914"><a class="footnote-ref" href="#fn:914" rel="footnote">914</a></sup></p>
+<p>Something<sup id="fnref:915"><a class="footnote-ref" href="#fn:915" rel="footnote">915</a></sup></p>
+<p>Something<sup id="fnref:916"><a class="footnote-ref" href="#fn:916" rel="footnote">916</a></sup></p>
+<p>Something<sup id="fnref:917"><a class="footnote-ref" href="#fn:917" rel="footnote">917</a></sup></p>
+<p>Something<sup id="fnref:918"><a class="footnote-ref" href="#fn:918" rel="footnote">918</a></sup></p>
+<p>Something<sup id="fnref:919"><a class="footnote-ref" href="#fn:919" rel="footnote">919</a></sup></p>
+<p>Something<sup id="fnref:920"><a class="footnote-ref" href="#fn:920" rel="footnote">920</a></sup></p>
+<p>Something<sup id="fnref:921"><a class="footnote-ref" href="#fn:921" rel="footnote">921</a></sup></p>
+<p>Something<sup id="fnref:922"><a class="footnote-ref" href="#fn:922" rel="footnote">922</a></sup></p>
+<p>Something<sup id="fnref:923"><a class="footnote-ref" href="#fn:923" rel="footnote">923</a></sup></p>
+<p>Something<sup id="fnref:924"><a class="footnote-ref" href="#fn:924" rel="footnote">924</a></sup></p>
+<p>Something<sup id="fnref:925"><a class="footnote-ref" href="#fn:925" rel="footnote">925</a></sup></p>
+<p>Something<sup id="fnref:926"><a class="footnote-ref" href="#fn:926" rel="footnote">926</a></sup></p>
+<p>Something<sup id="fnref:927"><a class="footnote-ref" href="#fn:927" rel="footnote">927</a></sup></p>
+<p>Something<sup id="fnref:928"><a class="footnote-ref" href="#fn:928" rel="footnote">928</a></sup></p>
+<p>Something<sup id="fnref:929"><a class="footnote-ref" href="#fn:929" rel="footnote">929</a></sup></p>
+<p>Something<sup id="fnref:930"><a class="footnote-ref" href="#fn:930" rel="footnote">930</a></sup></p>
+<p>Something<sup id="fnref:931"><a class="footnote-ref" href="#fn:931" rel="footnote">931</a></sup></p>
+<p>Something<sup id="fnref:932"><a class="footnote-ref" href="#fn:932" rel="footnote">932</a></sup></p>
+<p>Something<sup id="fnref:933"><a class="footnote-ref" href="#fn:933" rel="footnote">933</a></sup></p>
+<p>Something<sup id="fnref:934"><a class="footnote-ref" href="#fn:934" rel="footnote">934</a></sup></p>
+<p>Something<sup id="fnref:935"><a class="footnote-ref" href="#fn:935" rel="footnote">935</a></sup></p>
+<p>Something<sup id="fnref:936"><a class="footnote-ref" href="#fn:936" rel="footnote">936</a></sup></p>
+<p>Something<sup id="fnref:937"><a class="footnote-ref" href="#fn:937" rel="footnote">937</a></sup></p>
+<p>Something<sup id="fnref:938"><a class="footnote-ref" href="#fn:938" rel="footnote">938</a></sup></p>
+<p>Something<sup id="fnref:939"><a class="footnote-ref" href="#fn:939" rel="footnote">939</a></sup></p>
+<p>Something<sup id="fnref:940"><a class="footnote-ref" href="#fn:940" rel="footnote">940</a></sup></p>
+<p>Something<sup id="fnref:941"><a class="footnote-ref" href="#fn:941" rel="footnote">941</a></sup></p>
+<p>Something<sup id="fnref:942"><a class="footnote-ref" href="#fn:942" rel="footnote">942</a></sup></p>
+<p>Something<sup id="fnref:943"><a class="footnote-ref" href="#fn:943" rel="footnote">943</a></sup></p>
+<p>Something<sup id="fnref:944"><a class="footnote-ref" href="#fn:944" rel="footnote">944</a></sup></p>
+<p>Something<sup id="fnref:945"><a class="footnote-ref" href="#fn:945" rel="footnote">945</a></sup></p>
+<p>Something<sup id="fnref:946"><a class="footnote-ref" href="#fn:946" rel="footnote">946</a></sup></p>
+<p>Something<sup id="fnref:947"><a class="footnote-ref" href="#fn:947" rel="footnote">947</a></sup></p>
+<p>Something<sup id="fnref:948"><a class="footnote-ref" href="#fn:948" rel="footnote">948</a></sup></p>
+<p>Something<sup id="fnref:949"><a class="footnote-ref" href="#fn:949" rel="footnote">949</a></sup></p>
+<p>Something<sup id="fnref:950"><a class="footnote-ref" href="#fn:950" rel="footnote">950</a></sup></p>
+<p>Something<sup id="fnref:951"><a class="footnote-ref" href="#fn:951" rel="footnote">951</a></sup></p>
+<p>Something<sup id="fnref:952"><a class="footnote-ref" href="#fn:952" rel="footnote">952</a></sup></p>
+<p>Something<sup id="fnref:953"><a class="footnote-ref" href="#fn:953" rel="footnote">953</a></sup></p>
+<p>Something<sup id="fnref:954"><a class="footnote-ref" href="#fn:954" rel="footnote">954</a></sup></p>
+<p>Something<sup id="fnref:955"><a class="footnote-ref" href="#fn:955" rel="footnote">955</a></sup></p>
+<p>Something<sup id="fnref:956"><a class="footnote-ref" href="#fn:956" rel="footnote">956</a></sup></p>
+<p>Something<sup id="fnref:957"><a class="footnote-ref" href="#fn:957" rel="footnote">957</a></sup></p>
+<p>Something<sup id="fnref:958"><a class="footnote-ref" href="#fn:958" rel="footnote">958</a></sup></p>
+<p>Something<sup id="fnref:959"><a class="footnote-ref" href="#fn:959" rel="footnote">959</a></sup></p>
+<p>Something<sup id="fnref:960"><a class="footnote-ref" href="#fn:960" rel="footnote">960</a></sup></p>
+<p>Something<sup id="fnref:961"><a class="footnote-ref" href="#fn:961" rel="footnote">961</a></sup></p>
+<p>Something<sup id="fnref:962"><a class="footnote-ref" href="#fn:962" rel="footnote">962</a></sup></p>
+<p>Something<sup id="fnref:963"><a class="footnote-ref" href="#fn:963" rel="footnote">963</a></sup></p>
+<p>Something<sup id="fnref:964"><a class="footnote-ref" href="#fn:964" rel="footnote">964</a></sup></p>
+<p>Something<sup id="fnref:965"><a class="footnote-ref" href="#fn:965" rel="footnote">965</a></sup></p>
+<p>Something<sup id="fnref:966"><a class="footnote-ref" href="#fn:966" rel="footnote">966</a></sup></p>
+<p>Something<sup id="fnref:967"><a class="footnote-ref" href="#fn:967" rel="footnote">967</a></sup></p>
+<p>Something<sup id="fnref:968"><a class="footnote-ref" href="#fn:968" rel="footnote">968</a></sup></p>
+<p>Something<sup id="fnref:969"><a class="footnote-ref" href="#fn:969" rel="footnote">969</a></sup></p>
+<p>Something<sup id="fnref:970"><a class="footnote-ref" href="#fn:970" rel="footnote">970</a></sup></p>
+<p>Something<sup id="fnref:971"><a class="footnote-ref" href="#fn:971" rel="footnote">971</a></sup></p>
+<p>Something<sup id="fnref:972"><a class="footnote-ref" href="#fn:972" rel="footnote">972</a></sup></p>
+<p>Something<sup id="fnref:973"><a class="footnote-ref" href="#fn:973" rel="footnote">973</a></sup></p>
+<p>Something<sup id="fnref:974"><a class="footnote-ref" href="#fn:974" rel="footnote">974</a></sup></p>
+<p>Something<sup id="fnref:975"><a class="footnote-ref" href="#fn:975" rel="footnote">975</a></sup></p>
+<p>Something<sup id="fnref:976"><a class="footnote-ref" href="#fn:976" rel="footnote">976</a></sup></p>
+<p>Something<sup id="fnref:977"><a class="footnote-ref" href="#fn:977" rel="footnote">977</a></sup></p>
+<p>Something<sup id="fnref:978"><a class="footnote-ref" href="#fn:978" rel="footnote">978</a></sup></p>
+<p>Something<sup id="fnref:979"><a class="footnote-ref" href="#fn:979" rel="footnote">979</a></sup></p>
+<p>Something<sup id="fnref:980"><a class="footnote-ref" href="#fn:980" rel="footnote">980</a></sup></p>
+<p>Something<sup id="fnref:981"><a class="footnote-ref" href="#fn:981" rel="footnote">981</a></sup></p>
+<p>Something<sup id="fnref:982"><a class="footnote-ref" href="#fn:982" rel="footnote">982</a></sup></p>
+<p>Something<sup id="fnref:983"><a class="footnote-ref" href="#fn:983" rel="footnote">983</a></sup></p>
+<p>Something<sup id="fnref:984"><a class="footnote-ref" href="#fn:984" rel="footnote">984</a></sup></p>
+<p>Something<sup id="fnref:985"><a class="footnote-ref" href="#fn:985" rel="footnote">985</a></sup></p>
+<p>Something<sup id="fnref:986"><a class="footnote-ref" href="#fn:986" rel="footnote">986</a></sup></p>
+<p>Something<sup id="fnref:987"><a class="footnote-ref" href="#fn:987" rel="footnote">987</a></sup></p>
+<p>Something<sup id="fnref:988"><a class="footnote-ref" href="#fn:988" rel="footnote">988</a></sup></p>
+<p>Something<sup id="fnref:989"><a class="footnote-ref" href="#fn:989" rel="footnote">989</a></sup></p>
+<p>Something<sup id="fnref:990"><a class="footnote-ref" href="#fn:990" rel="footnote">990</a></sup></p>
+<p>Something<sup id="fnref:991"><a class="footnote-ref" href="#fn:991" rel="footnote">991</a></sup></p>
+<p>Something<sup id="fnref:992"><a class="footnote-ref" href="#fn:992" rel="footnote">992</a></sup></p>
+<p>Something<sup id="fnref:993"><a class="footnote-ref" href="#fn:993" rel="footnote">993</a></sup></p>
+<p>Something<sup id="fnref:994"><a class="footnote-ref" href="#fn:994" rel="footnote">994</a></sup></p>
+<p>Something<sup id="fnref:995"><a class="footnote-ref" href="#fn:995" rel="footnote">995</a></sup></p>
+<p>Something<sup id="fnref:996"><a class="footnote-ref" href="#fn:996" rel="footnote">996</a></sup></p>
+<p>Something<sup id="fnref:997"><a class="footnote-ref" href="#fn:997" rel="footnote">997</a></sup></p>
+<p>Something<sup id="fnref:998"><a class="footnote-ref" href="#fn:998" rel="footnote">998</a></sup></p>
+<p>Something<sup id="fnref:999"><a class="footnote-ref" href="#fn:999" rel="footnote">999</a></sup></p>
+<p>Something<sup id="fnref:1000"><a class="footnote-ref" href="#fn:1000" rel="footnote">1000</a></sup></p>
+<p>Something<sup id="fnref:1001"><a class="footnote-ref" href="#fn:1001" rel="footnote">1001</a></sup></p>
+<p>Something<sup id="fnref:1002"><a class="footnote-ref" href="#fn:1002" rel="footnote">1002</a></sup></p>
+<p>Something<sup id="fnref:1003"><a class="footnote-ref" href="#fn:1003" rel="footnote">1003</a></sup></p>
+<p>Something<sup id="fnref:1004"><a class="footnote-ref" href="#fn:1004" rel="footnote">1004</a></sup></p>
+<p>Something<sup id="fnref:1005"><a class="footnote-ref" href="#fn:1005" rel="footnote">1005</a></sup></p>
+<p>Something<sup id="fnref:1006"><a class="footnote-ref" href="#fn:1006" rel="footnote">1006</a></sup></p>
+<p>Something<sup id="fnref:1007"><a class="footnote-ref" href="#fn:1007" rel="footnote">1007</a></sup></p>
+<p>Something<sup id="fnref:1008"><a class="footnote-ref" href="#fn:1008" rel="footnote">1008</a></sup></p>
+<p>Something<sup id="fnref:1009"><a class="footnote-ref" href="#fn:1009" rel="footnote">1009</a></sup></p>
+<p>Something<sup id="fnref:1010"><a class="footnote-ref" href="#fn:1010" rel="footnote">1010</a></sup></p>
+<p>Something<sup id="fnref:1011"><a class="footnote-ref" href="#fn:1011" rel="footnote">1011</a></sup></p>
+<p>Something<sup id="fnref:1012"><a class="footnote-ref" href="#fn:1012" rel="footnote">1012</a></sup></p>
+<p>Something<sup id="fnref:1013"><a class="footnote-ref" href="#fn:1013" rel="footnote">1013</a></sup></p>
+<p>Something<sup id="fnref:1014"><a class="footnote-ref" href="#fn:1014" rel="footnote">1014</a></sup></p>
+<p>Something<sup id="fnref:1015"><a class="footnote-ref" href="#fn:1015" rel="footnote">1015</a></sup></p>
+<p>Something<sup id="fnref:1016"><a class="footnote-ref" href="#fn:1016" rel="footnote">1016</a></sup></p>
+<p>Something<sup id="fnref:1017"><a class="footnote-ref" href="#fn:1017" rel="footnote">1017</a></sup></p>
+<p>Something<sup id="fnref:1018"><a class="footnote-ref" href="#fn:1018" rel="footnote">1018</a></sup></p>
+<p>Something<sup id="fnref:1019"><a class="footnote-ref" href="#fn:1019" rel="footnote">1019</a></sup></p>
+<p>Something<sup id="fnref:1020"><a class="footnote-ref" href="#fn:1020" rel="footnote">1020</a></sup></p>
+<p>Something<sup id="fnref:1021"><a class="footnote-ref" href="#fn:1021" rel="footnote">1021</a></sup></p>
+<p>Something<sup id="fnref:1022"><a class="footnote-ref" href="#fn:1022" rel="footnote">1022</a></sup></p>
+<p>Something<sup id="fnref:1023"><a class="footnote-ref" href="#fn:1023" rel="footnote">1023</a></sup></p>
+<p>Something<sup id="fnref:1024"><a class="footnote-ref" href="#fn:1024" rel="footnote">1024</a></sup></p>
+<p>Something<sup id="fnref:1025"><a class="footnote-ref" href="#fn:1025" rel="footnote">1025</a></sup></p>
+<p>Something<sup id="fnref:1026"><a class="footnote-ref" href="#fn:1026" rel="footnote">1026</a></sup></p>
+<p>Something<sup id="fnref:1027"><a class="footnote-ref" href="#fn:1027" rel="footnote">1027</a></sup></p>
+<p>Something<sup id="fnref:1028"><a class="footnote-ref" href="#fn:1028" rel="footnote">1028</a></sup></p>
+<p>Something<sup id="fnref:1029"><a class="footnote-ref" href="#fn:1029" rel="footnote">1029</a></sup></p>
+<p>Something<sup id="fnref:1030"><a class="footnote-ref" href="#fn:1030" rel="footnote">1030</a></sup></p>
+<p>Something<sup id="fnref:1031"><a class="footnote-ref" href="#fn:1031" rel="footnote">1031</a></sup></p>
+<p>Something<sup id="fnref:1032"><a class="footnote-ref" href="#fn:1032" rel="footnote">1032</a></sup></p>
+<p>Something<sup id="fnref:1033"><a class="footnote-ref" href="#fn:1033" rel="footnote">1033</a></sup></p>
+<p>Something<sup id="fnref:1034"><a class="footnote-ref" href="#fn:1034" rel="footnote">1034</a></sup></p>
+<p>Something<sup id="fnref:1035"><a class="footnote-ref" href="#fn:1035" rel="footnote">1035</a></sup></p>
+<p>Something<sup id="fnref:1036"><a class="footnote-ref" href="#fn:1036" rel="footnote">1036</a></sup></p>
+<p>Something<sup id="fnref:1037"><a class="footnote-ref" href="#fn:1037" rel="footnote">1037</a></sup></p>
+<p>Something<sup id="fnref:1038"><a class="footnote-ref" href="#fn:1038" rel="footnote">1038</a></sup></p>
+<p>Something<sup id="fnref:1039"><a class="footnote-ref" href="#fn:1039" rel="footnote">1039</a></sup></p>
+<p>Something<sup id="fnref:1040"><a class="footnote-ref" href="#fn:1040" rel="footnote">1040</a></sup></p>
+<p>Something<sup id="fnref:1041"><a class="footnote-ref" href="#fn:1041" rel="footnote">1041</a></sup></p>
+<p>Something<sup id="fnref:1042"><a class="footnote-ref" href="#fn:1042" rel="footnote">1042</a></sup></p>
+<p>Something<sup id="fnref:1043"><a class="footnote-ref" href="#fn:1043" rel="footnote">1043</a></sup></p>
+<p>Something<sup id="fnref:1044"><a class="footnote-ref" href="#fn:1044" rel="footnote">1044</a></sup></p>
+<p>Something<sup id="fnref:1045"><a class="footnote-ref" href="#fn:1045" rel="footnote">1045</a></sup></p>
+<p>Something<sup id="fnref:1046"><a class="footnote-ref" href="#fn:1046" rel="footnote">1046</a></sup></p>
+<p>Something<sup id="fnref:1047"><a class="footnote-ref" href="#fn:1047" rel="footnote">1047</a></sup></p>
+<p>Something<sup id="fnref:1048"><a class="footnote-ref" href="#fn:1048" rel="footnote">1048</a></sup></p>
+<p>Something<sup id="fnref:1049"><a class="footnote-ref" href="#fn:1049" rel="footnote">1049</a></sup></p>
+<p>Something<sup id="fnref:1050"><a class="footnote-ref" href="#fn:1050" rel="footnote">1050</a></sup></p>
+<p>Something<sup id="fnref:1051"><a class="footnote-ref" href="#fn:1051" rel="footnote">1051</a></sup></p>
+<p>Something<sup id="fnref:1052"><a class="footnote-ref" href="#fn:1052" rel="footnote">1052</a></sup></p>
+<p>Something<sup id="fnref:1053"><a class="footnote-ref" href="#fn:1053" rel="footnote">1053</a></sup></p>
+<p>Something<sup id="fnref:1054"><a class="footnote-ref" href="#fn:1054" rel="footnote">1054</a></sup></p>
+<p>Something<sup id="fnref:1055"><a class="footnote-ref" href="#fn:1055" rel="footnote">1055</a></sup></p>
+<p>Something<sup id="fnref:1056"><a class="footnote-ref" href="#fn:1056" rel="footnote">1056</a></sup></p>
+<p>Something<sup id="fnref:1057"><a class="footnote-ref" href="#fn:1057" rel="footnote">1057</a></sup></p>
+<p>Something<sup id="fnref:1058"><a class="footnote-ref" href="#fn:1058" rel="footnote">1058</a></sup></p>
+<p>Something<sup id="fnref:1059"><a class="footnote-ref" href="#fn:1059" rel="footnote">1059</a></sup></p>
+<p>Something<sup id="fnref:1060"><a class="footnote-ref" href="#fn:1060" rel="footnote">1060</a></sup></p>
+<p>Something<sup id="fnref:1061"><a class="footnote-ref" href="#fn:1061" rel="footnote">1061</a></sup></p>
+<p>Something<sup id="fnref:1062"><a class="footnote-ref" href="#fn:1062" rel="footnote">1062</a></sup></p>
+<p>Something<sup id="fnref:1063"><a class="footnote-ref" href="#fn:1063" rel="footnote">1063</a></sup></p>
+<p>Something<sup id="fnref:1064"><a class="footnote-ref" href="#fn:1064" rel="footnote">1064</a></sup></p>
+<p>Something<sup id="fnref:1065"><a class="footnote-ref" href="#fn:1065" rel="footnote">1065</a></sup></p>
+<p>Something<sup id="fnref:1066"><a class="footnote-ref" href="#fn:1066" rel="footnote">1066</a></sup></p>
+<p>Something<sup id="fnref:1067"><a class="footnote-ref" href="#fn:1067" rel="footnote">1067</a></sup></p>
+<p>Something<sup id="fnref:1068"><a class="footnote-ref" href="#fn:1068" rel="footnote">1068</a></sup></p>
+<p>Something<sup id="fnref:1069"><a class="footnote-ref" href="#fn:1069" rel="footnote">1069</a></sup></p>
+<p>Something<sup id="fnref:1070"><a class="footnote-ref" href="#fn:1070" rel="footnote">1070</a></sup></p>
+<p>Something<sup id="fnref:1071"><a class="footnote-ref" href="#fn:1071" rel="footnote">1071</a></sup></p>
+<p>Something<sup id="fnref:1072"><a class="footnote-ref" href="#fn:1072" rel="footnote">1072</a></sup></p>
+<p>Something<sup id="fnref:1073"><a class="footnote-ref" href="#fn:1073" rel="footnote">1073</a></sup></p>
+<p>Something<sup id="fnref:1074"><a class="footnote-ref" href="#fn:1074" rel="footnote">1074</a></sup></p>
+<p>Something<sup id="fnref:1075"><a class="footnote-ref" href="#fn:1075" rel="footnote">1075</a></sup></p>
+<p>Something<sup id="fnref:1076"><a class="footnote-ref" href="#fn:1076" rel="footnote">1076</a></sup></p>
+<p>Something<sup id="fnref:1077"><a class="footnote-ref" href="#fn:1077" rel="footnote">1077</a></sup></p>
+<p>Something<sup id="fnref:1078"><a class="footnote-ref" href="#fn:1078" rel="footnote">1078</a></sup></p>
+<p>Something<sup id="fnref:1079"><a class="footnote-ref" href="#fn:1079" rel="footnote">1079</a></sup></p>
+<p>Something<sup id="fnref:1080"><a class="footnote-ref" href="#fn:1080" rel="footnote">1080</a></sup></p>
+<p>Something<sup id="fnref:1081"><a class="footnote-ref" href="#fn:1081" rel="footnote">1081</a></sup></p>
+<p>Something<sup id="fnref:1082"><a class="footnote-ref" href="#fn:1082" rel="footnote">1082</a></sup></p>
+<p>Something<sup id="fnref:1083"><a class="footnote-ref" href="#fn:1083" rel="footnote">1083</a></sup></p>
+<p>Something<sup id="fnref:1084"><a class="footnote-ref" href="#fn:1084" rel="footnote">1084</a></sup></p>
+<p>Something<sup id="fnref:1085"><a class="footnote-ref" href="#fn:1085" rel="footnote">1085</a></sup></p>
+<p>Something<sup id="fnref:1086"><a class="footnote-ref" href="#fn:1086" rel="footnote">1086</a></sup></p>
+<p>Something<sup id="fnref:1087"><a class="footnote-ref" href="#fn:1087" rel="footnote">1087</a></sup></p>
+<p>Something<sup id="fnref:1088"><a class="footnote-ref" href="#fn:1088" rel="footnote">1088</a></sup></p>
+<p>Something<sup id="fnref:1089"><a class="footnote-ref" href="#fn:1089" rel="footnote">1089</a></sup></p>
+<p>Something<sup id="fnref:1090"><a class="footnote-ref" href="#fn:1090" rel="footnote">1090</a></sup></p>
+<p>Something<sup id="fnref:1091"><a class="footnote-ref" href="#fn:1091" rel="footnote">1091</a></sup></p>
+<p>Something<sup id="fnref:1092"><a class="footnote-ref" href="#fn:1092" rel="footnote">1092</a></sup></p>
+<p>Something<sup id="fnref:1093"><a class="footnote-ref" href="#fn:1093" rel="footnote">1093</a></sup></p>
+<p>Something<sup id="fnref:1094"><a class="footnote-ref" href="#fn:1094" rel="footnote">1094</a></sup></p>
+<p>Something<sup id="fnref:1095"><a class="footnote-ref" href="#fn:1095" rel="footnote">1095</a></sup></p>
+<p>Something<sup id="fnref:1096"><a class="footnote-ref" href="#fn:1096" rel="footnote">1096</a></sup></p>
+<p>Something<sup id="fnref:1097"><a class="footnote-ref" href="#fn:1097" rel="footnote">1097</a></sup></p>
+<p>Something<sup id="fnref:1098"><a class="footnote-ref" href="#fn:1098" rel="footnote">1098</a></sup></p>
+<p>Something<sup id="fnref:1099"><a class="footnote-ref" href="#fn:1099" rel="footnote">1099</a></sup></p>
+<p>Something<sup id="fnref:1100"><a class="footnote-ref" href="#fn:1100" rel="footnote">1100</a></sup></p>
+<p>Something<sup id="fnref:1101"><a class="footnote-ref" href="#fn:1101" rel="footnote">1101</a></sup></p>
+<p>Something<sup id="fnref:1102"><a class="footnote-ref" href="#fn:1102" rel="footnote">1102</a></sup></p>
+<p>Something<sup id="fnref:1103"><a class="footnote-ref" href="#fn:1103" rel="footnote">1103</a></sup></p>
+<p>Something<sup id="fnref:1104"><a class="footnote-ref" href="#fn:1104" rel="footnote">1104</a></sup></p>
+<p>Something<sup id="fnref:1105"><a class="footnote-ref" href="#fn:1105" rel="footnote">1105</a></sup></p>
+<p>Something<sup id="fnref:1106"><a class="footnote-ref" href="#fn:1106" rel="footnote">1106</a></sup></p>
+<p>Something<sup id="fnref:1107"><a class="footnote-ref" href="#fn:1107" rel="footnote">1107</a></sup></p>
+<p>Something<sup id="fnref:1108"><a class="footnote-ref" href="#fn:1108" rel="footnote">1108</a></sup></p>
+<p>Something<sup id="fnref:1109"><a class="footnote-ref" href="#fn:1109" rel="footnote">1109</a></sup></p>
+<p>Something<sup id="fnref:1110"><a class="footnote-ref" href="#fn:1110" rel="footnote">1110</a></sup></p>
+<p>Something<sup id="fnref:1111"><a class="footnote-ref" href="#fn:1111" rel="footnote">1111</a></sup></p>
+<p>Something<sup id="fnref:1112"><a class="footnote-ref" href="#fn:1112" rel="footnote">1112</a></sup></p>
+<p>Something<sup id="fnref:1113"><a class="footnote-ref" href="#fn:1113" rel="footnote">1113</a></sup></p>
+<p>Something<sup id="fnref:1114"><a class="footnote-ref" href="#fn:1114" rel="footnote">1114</a></sup></p>
+<p>Something<sup id="fnref:1115"><a class="footnote-ref" href="#fn:1115" rel="footnote">1115</a></sup></p>
+<p>Something<sup id="fnref:1116"><a class="footnote-ref" href="#fn:1116" rel="footnote">1116</a></sup></p>
+<p>Something<sup id="fnref:1117"><a class="footnote-ref" href="#fn:1117" rel="footnote">1117</a></sup></p>
+<p>Something<sup id="fnref:1118"><a class="footnote-ref" href="#fn:1118" rel="footnote">1118</a></sup></p>
+<p>Something<sup id="fnref:1119"><a class="footnote-ref" href="#fn:1119" rel="footnote">1119</a></sup></p>
+<p>Something<sup id="fnref:1120"><a class="footnote-ref" href="#fn:1120" rel="footnote">1120</a></sup></p>
+<p>Something<sup id="fnref:1121"><a class="footnote-ref" href="#fn:1121" rel="footnote">1121</a></sup></p>
+<p>Something<sup id="fnref:1122"><a class="footnote-ref" href="#fn:1122" rel="footnote">1122</a></sup></p>
+<p>Something<sup id="fnref:1123"><a class="footnote-ref" href="#fn:1123" rel="footnote">1123</a></sup></p>
+<p>Something<sup id="fnref:1124"><a class="footnote-ref" href="#fn:1124" rel="footnote">1124</a></sup></p>
+<p>Something<sup id="fnref:1125"><a class="footnote-ref" href="#fn:1125" rel="footnote">1125</a></sup></p>
+<p>Something<sup id="fnref:1126"><a class="footnote-ref" href="#fn:1126" rel="footnote">1126</a></sup></p>
+<p>Something<sup id="fnref:1127"><a class="footnote-ref" href="#fn:1127" rel="footnote">1127</a></sup></p>
+<p>Something<sup id="fnref:1128"><a class="footnote-ref" href="#fn:1128" rel="footnote">1128</a></sup></p>
+<p>Something<sup id="fnref:1129"><a class="footnote-ref" href="#fn:1129" rel="footnote">1129</a></sup></p>
+<p>Something<sup id="fnref:1130"><a class="footnote-ref" href="#fn:1130" rel="footnote">1130</a></sup></p>
+<p>Something<sup id="fnref:1131"><a class="footnote-ref" href="#fn:1131" rel="footnote">1131</a></sup></p>
+<p>Something<sup id="fnref:1132"><a class="footnote-ref" href="#fn:1132" rel="footnote">1132</a></sup></p>
+<p>Something<sup id="fnref:1133"><a class="footnote-ref" href="#fn:1133" rel="footnote">1133</a></sup></p>
+<p>Something<sup id="fnref:1134"><a class="footnote-ref" href="#fn:1134" rel="footnote">1134</a></sup></p>
+<p>Something<sup id="fnref:1135"><a class="footnote-ref" href="#fn:1135" rel="footnote">1135</a></sup></p>
+<p>Something<sup id="fnref:1136"><a class="footnote-ref" href="#fn:1136" rel="footnote">1136</a></sup></p>
+<p>Something<sup id="fnref:1137"><a class="footnote-ref" href="#fn:1137" rel="footnote">1137</a></sup></p>
+<p>Something<sup id="fnref:1138"><a class="footnote-ref" href="#fn:1138" rel="footnote">1138</a></sup></p>
+<p>Something<sup id="fnref:1139"><a class="footnote-ref" href="#fn:1139" rel="footnote">1139</a></sup></p>
+<p>Something<sup id="fnref:1140"><a class="footnote-ref" href="#fn:1140" rel="footnote">1140</a></sup></p>
+<p>Something<sup id="fnref:1141"><a class="footnote-ref" href="#fn:1141" rel="footnote">1141</a></sup></p>
+<p>Something<sup id="fnref:1142"><a class="footnote-ref" href="#fn:1142" rel="footnote">1142</a></sup></p>
+<p>Something<sup id="fnref:1143"><a class="footnote-ref" href="#fn:1143" rel="footnote">1143</a></sup></p>
+<p>Something<sup id="fnref:1144"><a class="footnote-ref" href="#fn:1144" rel="footnote">1144</a></sup></p>
+<p>Something<sup id="fnref:1145"><a class="footnote-ref" href="#fn:1145" rel="footnote">1145</a></sup></p>
+<p>Something<sup id="fnref:1146"><a class="footnote-ref" href="#fn:1146" rel="footnote">1146</a></sup></p>
+<p>Something<sup id="fnref:1147"><a class="footnote-ref" href="#fn:1147" rel="footnote">1147</a></sup></p>
+<p>Something<sup id="fnref:1148"><a class="footnote-ref" href="#fn:1148" rel="footnote">1148</a></sup></p>
+<p>Something<sup id="fnref:1149"><a class="footnote-ref" href="#fn:1149" rel="footnote">1149</a></sup></p>
+<p>Something<sup id="fnref:1150"><a class="footnote-ref" href="#fn:1150" rel="footnote">1150</a></sup></p>
+<p>Something<sup id="fnref:1151"><a class="footnote-ref" href="#fn:1151" rel="footnote">1151</a></sup></p>
+<p>Something<sup id="fnref:1152"><a class="footnote-ref" href="#fn:1152" rel="footnote">1152</a></sup></p>
+<p>Something<sup id="fnref:1153"><a class="footnote-ref" href="#fn:1153" rel="footnote">1153</a></sup></p>
+<p>Something<sup id="fnref:1154"><a class="footnote-ref" href="#fn:1154" rel="footnote">1154</a></sup></p>
+<p>Something<sup id="fnref:1155"><a class="footnote-ref" href="#fn:1155" rel="footnote">1155</a></sup></p>
+<p>Something<sup id="fnref:1156"><a class="footnote-ref" href="#fn:1156" rel="footnote">1156</a></sup></p>
+<p>Something<sup id="fnref:1157"><a class="footnote-ref" href="#fn:1157" rel="footnote">1157</a></sup></p>
+<p>Something<sup id="fnref:1158"><a class="footnote-ref" href="#fn:1158" rel="footnote">1158</a></sup></p>
+<p>Something<sup id="fnref:1159"><a class="footnote-ref" href="#fn:1159" rel="footnote">1159</a></sup></p>
+<p>Something<sup id="fnref:1160"><a class="footnote-ref" href="#fn:1160" rel="footnote">1160</a></sup></p>
+<p>Something<sup id="fnref:1161"><a class="footnote-ref" href="#fn:1161" rel="footnote">1161</a></sup></p>
+<p>Something<sup id="fnref:1162"><a class="footnote-ref" href="#fn:1162" rel="footnote">1162</a></sup></p>
+<p>Something<sup id="fnref:1163"><a class="footnote-ref" href="#fn:1163" rel="footnote">1163</a></sup></p>
+<p>Something<sup id="fnref:1164"><a class="footnote-ref" href="#fn:1164" rel="footnote">1164</a></sup></p>
+<p>Something<sup id="fnref:1165"><a class="footnote-ref" href="#fn:1165" rel="footnote">1165</a></sup></p>
+<p>Something<sup id="fnref:1166"><a class="footnote-ref" href="#fn:1166" rel="footnote">1166</a></sup></p>
+<p>Something<sup id="fnref:1167"><a class="footnote-ref" href="#fn:1167" rel="footnote">1167</a></sup></p>
+<p>Something<sup id="fnref:1168"><a class="footnote-ref" href="#fn:1168" rel="footnote">1168</a></sup></p>
+<p>Something<sup id="fnref:1169"><a class="footnote-ref" href="#fn:1169" rel="footnote">1169</a></sup></p>
+<p>Something<sup id="fnref:1170"><a class="footnote-ref" href="#fn:1170" rel="footnote">1170</a></sup></p>
+<p>Something<sup id="fnref:1171"><a class="footnote-ref" href="#fn:1171" rel="footnote">1171</a></sup></p>
+<p>Something<sup id="fnref:1172"><a class="footnote-ref" href="#fn:1172" rel="footnote">1172</a></sup></p>
+<p>Something<sup id="fnref:1173"><a class="footnote-ref" href="#fn:1173" rel="footnote">1173</a></sup></p>
+<p>Something<sup id="fnref:1174"><a class="footnote-ref" href="#fn:1174" rel="footnote">1174</a></sup></p>
+<p>Something<sup id="fnref:1175"><a class="footnote-ref" href="#fn:1175" rel="footnote">1175</a></sup></p>
+<p>Something<sup id="fnref:1176"><a class="footnote-ref" href="#fn:1176" rel="footnote">1176</a></sup></p>
+<p>Something<sup id="fnref:1177"><a class="footnote-ref" href="#fn:1177" rel="footnote">1177</a></sup></p>
+<p>Something<sup id="fnref:1178"><a class="footnote-ref" href="#fn:1178" rel="footnote">1178</a></sup></p>
+<p>Something<sup id="fnref:1179"><a class="footnote-ref" href="#fn:1179" rel="footnote">1179</a></sup></p>
+<p>Something<sup id="fnref:1180"><a class="footnote-ref" href="#fn:1180" rel="footnote">1180</a></sup></p>
+<p>Something<sup id="fnref:1181"><a class="footnote-ref" href="#fn:1181" rel="footnote">1181</a></sup></p>
+<p>Something<sup id="fnref:1182"><a class="footnote-ref" href="#fn:1182" rel="footnote">1182</a></sup></p>
+<p>Something<sup id="fnref:1183"><a class="footnote-ref" href="#fn:1183" rel="footnote">1183</a></sup></p>
+<p>Something<sup id="fnref:1184"><a class="footnote-ref" href="#fn:1184" rel="footnote">1184</a></sup></p>
+<p>Something<sup id="fnref:1185"><a class="footnote-ref" href="#fn:1185" rel="footnote">1185</a></sup></p>
+<p>Something<sup id="fnref:1186"><a class="footnote-ref" href="#fn:1186" rel="footnote">1186</a></sup></p>
+<p>Something<sup id="fnref:1187"><a class="footnote-ref" href="#fn:1187" rel="footnote">1187</a></sup></p>
+<p>Something<sup id="fnref:1188"><a class="footnote-ref" href="#fn:1188" rel="footnote">1188</a></sup></p>
+<p>Something<sup id="fnref:1189"><a class="footnote-ref" href="#fn:1189" rel="footnote">1189</a></sup></p>
+<p>Something<sup id="fnref:1190"><a class="footnote-ref" href="#fn:1190" rel="footnote">1190</a></sup></p>
+<p>Something<sup id="fnref:1191"><a class="footnote-ref" href="#fn:1191" rel="footnote">1191</a></sup></p>
+<p>Something<sup id="fnref:1192"><a class="footnote-ref" href="#fn:1192" rel="footnote">1192</a></sup></p>
+<p>Something<sup id="fnref:1193"><a class="footnote-ref" href="#fn:1193" rel="footnote">1193</a></sup></p>
+<p>Something<sup id="fnref:1194"><a class="footnote-ref" href="#fn:1194" rel="footnote">1194</a></sup></p>
+<p>Something<sup id="fnref:1195"><a class="footnote-ref" href="#fn:1195" rel="footnote">1195</a></sup></p>
+<p>Something<sup id="fnref:1196"><a class="footnote-ref" href="#fn:1196" rel="footnote">1196</a></sup></p>
+<p>Something<sup id="fnref:1197"><a class="footnote-ref" href="#fn:1197" rel="footnote">1197</a></sup></p>
+<p>Something<sup id="fnref:1198"><a class="footnote-ref" href="#fn:1198" rel="footnote">1198</a></sup></p>
+<p>Something<sup id="fnref:1199"><a class="footnote-ref" href="#fn:1199" rel="footnote">1199</a></sup></p>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>Another thing <a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>
+</li>
+<li id="fn:2">
+<p>Another thing <a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">↩</a></p>
+</li>
+<li id="fn:3">
+<p>Another thing <a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">↩</a></p>
+</li>
+<li id="fn:4">
+<p>Another thing <a class="footnote-backref" href="#fnref:4" rev="footnote" title="Jump back to footnote 4 in the text">↩</a></p>
+</li>
+<li id="fn:5">
+<p>Another thing <a class="footnote-backref" href="#fnref:5" rev="footnote" title="Jump back to footnote 5 in the text">↩</a></p>
+</li>
+<li id="fn:6">
+<p>Another thing <a class="footnote-backref" href="#fnref:6" rev="footnote" title="Jump back to footnote 6 in the text">↩</a></p>
+</li>
+<li id="fn:7">
+<p>Another thing <a class="footnote-backref" href="#fnref:7" rev="footnote" title="Jump back to footnote 7 in the text">↩</a></p>
+</li>
+<li id="fn:8">
+<p>Another thing <a class="footnote-backref" href="#fnref:8" rev="footnote" title="Jump back to footnote 8 in the text">↩</a></p>
+</li>
+<li id="fn:9">
+<p>Another thing <a class="footnote-backref" href="#fnref:9" rev="footnote" title="Jump back to footnote 9 in the text">↩</a></p>
+</li>
+<li id="fn:10">
+<p>Another thing <a class="footnote-backref" href="#fnref:10" rev="footnote" title="Jump back to footnote 10 in the text">↩</a></p>
+</li>
+<li id="fn:11">
+<p>Another thing <a class="footnote-backref" href="#fnref:11" rev="footnote" title="Jump back to footnote 11 in the text">↩</a></p>
+</li>
+<li id="fn:12">
+<p>Another thing <a class="footnote-backref" href="#fnref:12" rev="footnote" title="Jump back to footnote 12 in the text">↩</a></p>
+</li>
+<li id="fn:13">
+<p>Another thing <a class="footnote-backref" href="#fnref:13" rev="footnote" title="Jump back to footnote 13 in the text">↩</a></p>
+</li>
+<li id="fn:14">
+<p>Another thing <a class="footnote-backref" href="#fnref:14" rev="footnote" title="Jump back to footnote 14 in the text">↩</a></p>
+</li>
+<li id="fn:15">
+<p>Another thing <a class="footnote-backref" href="#fnref:15" rev="footnote" title="Jump back to footnote 15 in the text">↩</a></p>
+</li>
+<li id="fn:16">
+<p>Another thing <a class="footnote-backref" href="#fnref:16" rev="footnote" title="Jump back to footnote 16 in the text">↩</a></p>
+</li>
+<li id="fn:17">
+<p>Another thing <a class="footnote-backref" href="#fnref:17" rev="footnote" title="Jump back to footnote 17 in the text">↩</a></p>
+</li>
+<li id="fn:18">
+<p>Another thing <a class="footnote-backref" href="#fnref:18" rev="footnote" title="Jump back to footnote 18 in the text">↩</a></p>
+</li>
+<li id="fn:19">
+<p>Another thing <a class="footnote-backref" href="#fnref:19" rev="footnote" title="Jump back to footnote 19 in the text">↩</a></p>
+</li>
+<li id="fn:20">
+<p>Another thing <a class="footnote-backref" href="#fnref:20" rev="footnote" title="Jump back to footnote 20 in the text">↩</a></p>
+</li>
+<li id="fn:21">
+<p>Another thing <a class="footnote-backref" href="#fnref:21" rev="footnote" title="Jump back to footnote 21 in the text">↩</a></p>
+</li>
+<li id="fn:22">
+<p>Another thing <a class="footnote-backref" href="#fnref:22" rev="footnote" title="Jump back to footnote 22 in the text">↩</a></p>
+</li>
+<li id="fn:23">
+<p>Another thing <a class="footnote-backref" href="#fnref:23" rev="footnote" title="Jump back to footnote 23 in the text">↩</a></p>
+</li>
+<li id="fn:24">
+<p>Another thing <a class="footnote-backref" href="#fnref:24" rev="footnote" title="Jump back to footnote 24 in the text">↩</a></p>
+</li>
+<li id="fn:25">
+<p>Another thing <a class="footnote-backref" href="#fnref:25" rev="footnote" title="Jump back to footnote 25 in the text">↩</a></p>
+</li>
+<li id="fn:26">
+<p>Another thing <a class="footnote-backref" href="#fnref:26" rev="footnote" title="Jump back to footnote 26 in the text">↩</a></p>
+</li>
+<li id="fn:27">
+<p>Another thing <a class="footnote-backref" href="#fnref:27" rev="footnote" title="Jump back to footnote 27 in the text">↩</a></p>
+</li>
+<li id="fn:28">
+<p>Another thing <a class="footnote-backref" href="#fnref:28" rev="footnote" title="Jump back to footnote 28 in the text">↩</a></p>
+</li>
+<li id="fn:29">
+<p>Another thing <a class="footnote-backref" href="#fnref:29" rev="footnote" title="Jump back to footnote 29 in the text">↩</a></p>
+</li>
+<li id="fn:30">
+<p>Another thing <a class="footnote-backref" href="#fnref:30" rev="footnote" title="Jump back to footnote 30 in the text">↩</a></p>
+</li>
+<li id="fn:31">
+<p>Another thing <a class="footnote-backref" href="#fnref:31" rev="footnote" title="Jump back to footnote 31 in the text">↩</a></p>
+</li>
+<li id="fn:32">
+<p>Another thing <a class="footnote-backref" href="#fnref:32" rev="footnote" title="Jump back to footnote 32 in the text">↩</a></p>
+</li>
+<li id="fn:33">
+<p>Another thing <a class="footnote-backref" href="#fnref:33" rev="footnote" title="Jump back to footnote 33 in the text">↩</a></p>
+</li>
+<li id="fn:34">
+<p>Another thing <a class="footnote-backref" href="#fnref:34" rev="footnote" title="Jump back to footnote 34 in the text">↩</a></p>
+</li>
+<li id="fn:35">
+<p>Another thing <a class="footnote-backref" href="#fnref:35" rev="footnote" title="Jump back to footnote 35 in the text">↩</a></p>
+</li>
+<li id="fn:36">
+<p>Another thing <a class="footnote-backref" href="#fnref:36" rev="footnote" title="Jump back to footnote 36 in the text">↩</a></p>
+</li>
+<li id="fn:37">
+<p>Another thing <a class="footnote-backref" href="#fnref:37" rev="footnote" title="Jump back to footnote 37 in the text">↩</a></p>
+</li>
+<li id="fn:38">
+<p>Another thing <a class="footnote-backref" href="#fnref:38" rev="footnote" title="Jump back to footnote 38 in the text">↩</a></p>
+</li>
+<li id="fn:39">
+<p>Another thing <a class="footnote-backref" href="#fnref:39" rev="footnote" title="Jump back to footnote 39 in the text">↩</a></p>
+</li>
+<li id="fn:40">
+<p>Another thing <a class="footnote-backref" href="#fnref:40" rev="footnote" title="Jump back to footnote 40 in the text">↩</a></p>
+</li>
+<li id="fn:41">
+<p>Another thing <a class="footnote-backref" href="#fnref:41" rev="footnote" title="Jump back to footnote 41 in the text">↩</a></p>
+</li>
+<li id="fn:42">
+<p>Another thing <a class="footnote-backref" href="#fnref:42" rev="footnote" title="Jump back to footnote 42 in the text">↩</a></p>
+</li>
+<li id="fn:43">
+<p>Another thing <a class="footnote-backref" href="#fnref:43" rev="footnote" title="Jump back to footnote 43 in the text">↩</a></p>
+</li>
+<li id="fn:44">
+<p>Another thing <a class="footnote-backref" href="#fnref:44" rev="footnote" title="Jump back to footnote 44 in the text">↩</a></p>
+</li>
+<li id="fn:45">
+<p>Another thing <a class="footnote-backref" href="#fnref:45" rev="footnote" title="Jump back to footnote 45 in the text">↩</a></p>
+</li>
+<li id="fn:46">
+<p>Another thing <a class="footnote-backref" href="#fnref:46" rev="footnote" title="Jump back to footnote 46 in the text">↩</a></p>
+</li>
+<li id="fn:47">
+<p>Another thing <a class="footnote-backref" href="#fnref:47" rev="footnote" title="Jump back to footnote 47 in the text">↩</a></p>
+</li>
+<li id="fn:48">
+<p>Another thing <a class="footnote-backref" href="#fnref:48" rev="footnote" title="Jump back to footnote 48 in the text">↩</a></p>
+</li>
+<li id="fn:49">
+<p>Another thing <a class="footnote-backref" href="#fnref:49" rev="footnote" title="Jump back to footnote 49 in the text">↩</a></p>
+</li>
+<li id="fn:50">
+<p>Another thing <a class="footnote-backref" href="#fnref:50" rev="footnote" title="Jump back to footnote 50 in the text">↩</a></p>
+</li>
+<li id="fn:51">
+<p>Another thing <a class="footnote-backref" href="#fnref:51" rev="footnote" title="Jump back to footnote 51 in the text">↩</a></p>
+</li>
+<li id="fn:52">
+<p>Another thing <a class="footnote-backref" href="#fnref:52" rev="footnote" title="Jump back to footnote 52 in the text">↩</a></p>
+</li>
+<li id="fn:53">
+<p>Another thing <a class="footnote-backref" href="#fnref:53" rev="footnote" title="Jump back to footnote 53 in the text">↩</a></p>
+</li>
+<li id="fn:54">
+<p>Another thing <a class="footnote-backref" href="#fnref:54" rev="footnote" title="Jump back to footnote 54 in the text">↩</a></p>
+</li>
+<li id="fn:55">
+<p>Another thing <a class="footnote-backref" href="#fnref:55" rev="footnote" title="Jump back to footnote 55 in the text">↩</a></p>
+</li>
+<li id="fn:56">
+<p>Another thing <a class="footnote-backref" href="#fnref:56" rev="footnote" title="Jump back to footnote 56 in the text">↩</a></p>
+</li>
+<li id="fn:57">
+<p>Another thing <a class="footnote-backref" href="#fnref:57" rev="footnote" title="Jump back to footnote 57 in the text">↩</a></p>
+</li>
+<li id="fn:58">
+<p>Another thing <a class="footnote-backref" href="#fnref:58" rev="footnote" title="Jump back to footnote 58 in the text">↩</a></p>
+</li>
+<li id="fn:59">
+<p>Another thing <a class="footnote-backref" href="#fnref:59" rev="footnote" title="Jump back to footnote 59 in the text">↩</a></p>
+</li>
+<li id="fn:60">
+<p>Another thing <a class="footnote-backref" href="#fnref:60" rev="footnote" title="Jump back to footnote 60 in the text">↩</a></p>
+</li>
+<li id="fn:61">
+<p>Another thing <a class="footnote-backref" href="#fnref:61" rev="footnote" title="Jump back to footnote 61 in the text">↩</a></p>
+</li>
+<li id="fn:62">
+<p>Another thing <a class="footnote-backref" href="#fnref:62" rev="footnote" title="Jump back to footnote 62 in the text">↩</a></p>
+</li>
+<li id="fn:63">
+<p>Another thing <a class="footnote-backref" href="#fnref:63" rev="footnote" title="Jump back to footnote 63 in the text">↩</a></p>
+</li>
+<li id="fn:64">
+<p>Another thing <a class="footnote-backref" href="#fnref:64" rev="footnote" title="Jump back to footnote 64 in the text">↩</a></p>
+</li>
+<li id="fn:65">
+<p>Another thing <a class="footnote-backref" href="#fnref:65" rev="footnote" title="Jump back to footnote 65 in the text">↩</a></p>
+</li>
+<li id="fn:66">
+<p>Another thing <a class="footnote-backref" href="#fnref:66" rev="footnote" title="Jump back to footnote 66 in the text">↩</a></p>
+</li>
+<li id="fn:67">
+<p>Another thing <a class="footnote-backref" href="#fnref:67" rev="footnote" title="Jump back to footnote 67 in the text">↩</a></p>
+</li>
+<li id="fn:68">
+<p>Another thing <a class="footnote-backref" href="#fnref:68" rev="footnote" title="Jump back to footnote 68 in the text">↩</a></p>
+</li>
+<li id="fn:69">
+<p>Another thing <a class="footnote-backref" href="#fnref:69" rev="footnote" title="Jump back to footnote 69 in the text">↩</a></p>
+</li>
+<li id="fn:70">
+<p>Another thing <a class="footnote-backref" href="#fnref:70" rev="footnote" title="Jump back to footnote 70 in the text">↩</a></p>
+</li>
+<li id="fn:71">
+<p>Another thing <a class="footnote-backref" href="#fnref:71" rev="footnote" title="Jump back to footnote 71 in the text">↩</a></p>
+</li>
+<li id="fn:72">
+<p>Another thing <a class="footnote-backref" href="#fnref:72" rev="footnote" title="Jump back to footnote 72 in the text">↩</a></p>
+</li>
+<li id="fn:73">
+<p>Another thing <a class="footnote-backref" href="#fnref:73" rev="footnote" title="Jump back to footnote 73 in the text">↩</a></p>
+</li>
+<li id="fn:74">
+<p>Another thing <a class="footnote-backref" href="#fnref:74" rev="footnote" title="Jump back to footnote 74 in the text">↩</a></p>
+</li>
+<li id="fn:75">
+<p>Another thing <a class="footnote-backref" href="#fnref:75" rev="footnote" title="Jump back to footnote 75 in the text">↩</a></p>
+</li>
+<li id="fn:76">
+<p>Another thing <a class="footnote-backref" href="#fnref:76" rev="footnote" title="Jump back to footnote 76 in the text">↩</a></p>
+</li>
+<li id="fn:77">
+<p>Another thing <a class="footnote-backref" href="#fnref:77" rev="footnote" title="Jump back to footnote 77 in the text">↩</a></p>
+</li>
+<li id="fn:78">
+<p>Another thing <a class="footnote-backref" href="#fnref:78" rev="footnote" title="Jump back to footnote 78 in the text">↩</a></p>
+</li>
+<li id="fn:79">
+<p>Another thing <a class="footnote-backref" href="#fnref:79" rev="footnote" title="Jump back to footnote 79 in the text">↩</a></p>
+</li>
+<li id="fn:80">
+<p>Another thing <a class="footnote-backref" href="#fnref:80" rev="footnote" title="Jump back to footnote 80 in the text">↩</a></p>
+</li>
+<li id="fn:81">
+<p>Another thing <a class="footnote-backref" href="#fnref:81" rev="footnote" title="Jump back to footnote 81 in the text">↩</a></p>
+</li>
+<li id="fn:82">
+<p>Another thing <a class="footnote-backref" href="#fnref:82" rev="footnote" title="Jump back to footnote 82 in the text">↩</a></p>
+</li>
+<li id="fn:83">
+<p>Another thing <a class="footnote-backref" href="#fnref:83" rev="footnote" title="Jump back to footnote 83 in the text">↩</a></p>
+</li>
+<li id="fn:84">
+<p>Another thing <a class="footnote-backref" href="#fnref:84" rev="footnote" title="Jump back to footnote 84 in the text">↩</a></p>
+</li>
+<li id="fn:85">
+<p>Another thing <a class="footnote-backref" href="#fnref:85" rev="footnote" title="Jump back to footnote 85 in the text">↩</a></p>
+</li>
+<li id="fn:86">
+<p>Another thing <a class="footnote-backref" href="#fnref:86" rev="footnote" title="Jump back to footnote 86 in the text">↩</a></p>
+</li>
+<li id="fn:87">
+<p>Another thing <a class="footnote-backref" href="#fnref:87" rev="footnote" title="Jump back to footnote 87 in the text">↩</a></p>
+</li>
+<li id="fn:88">
+<p>Another thing <a class="footnote-backref" href="#fnref:88" rev="footnote" title="Jump back to footnote 88 in the text">↩</a></p>
+</li>
+<li id="fn:89">
+<p>Another thing <a class="footnote-backref" href="#fnref:89" rev="footnote" title="Jump back to footnote 89 in the text">↩</a></p>
+</li>
+<li id="fn:90">
+<p>Another thing <a class="footnote-backref" href="#fnref:90" rev="footnote" title="Jump back to footnote 90 in the text">↩</a></p>
+</li>
+<li id="fn:91">
+<p>Another thing <a class="footnote-backref" href="#fnref:91" rev="footnote" title="Jump back to footnote 91 in the text">↩</a></p>
+</li>
+<li id="fn:92">
+<p>Another thing <a class="footnote-backref" href="#fnref:92" rev="footnote" title="Jump back to footnote 92 in the text">↩</a></p>
+</li>
+<li id="fn:93">
+<p>Another thing <a class="footnote-backref" href="#fnref:93" rev="footnote" title="Jump back to footnote 93 in the text">↩</a></p>
+</li>
+<li id="fn:94">
+<p>Another thing <a class="footnote-backref" href="#fnref:94" rev="footnote" title="Jump back to footnote 94 in the text">↩</a></p>
+</li>
+<li id="fn:95">
+<p>Another thing <a class="footnote-backref" href="#fnref:95" rev="footnote" title="Jump back to footnote 95 in the text">↩</a></p>
+</li>
+<li id="fn:96">
+<p>Another thing <a class="footnote-backref" href="#fnref:96" rev="footnote" title="Jump back to footnote 96 in the text">↩</a></p>
+</li>
+<li id="fn:97">
+<p>Another thing <a class="footnote-backref" href="#fnref:97" rev="footnote" title="Jump back to footnote 97 in the text">↩</a></p>
+</li>
+<li id="fn:98">
+<p>Another thing <a class="footnote-backref" href="#fnref:98" rev="footnote" title="Jump back to footnote 98 in the text">↩</a></p>
+</li>
+<li id="fn:99">
+<p>Another thing <a class="footnote-backref" href="#fnref:99" rev="footnote" title="Jump back to footnote 99 in the text">↩</a></p>
+</li>
+<li id="fn:100">
+<p>Another thing <a class="footnote-backref" href="#fnref:100" rev="footnote" title="Jump back to footnote 100 in the text">↩</a></p>
+</li>
+<li id="fn:101">
+<p>Another thing <a class="footnote-backref" href="#fnref:101" rev="footnote" title="Jump back to footnote 101 in the text">↩</a></p>
+</li>
+<li id="fn:102">
+<p>Another thing <a class="footnote-backref" href="#fnref:102" rev="footnote" title="Jump back to footnote 102 in the text">↩</a></p>
+</li>
+<li id="fn:103">
+<p>Another thing <a class="footnote-backref" href="#fnref:103" rev="footnote" title="Jump back to footnote 103 in the text">↩</a></p>
+</li>
+<li id="fn:104">
+<p>Another thing <a class="footnote-backref" href="#fnref:104" rev="footnote" title="Jump back to footnote 104 in the text">↩</a></p>
+</li>
+<li id="fn:105">
+<p>Another thing <a class="footnote-backref" href="#fnref:105" rev="footnote" title="Jump back to footnote 105 in the text">↩</a></p>
+</li>
+<li id="fn:106">
+<p>Another thing <a class="footnote-backref" href="#fnref:106" rev="footnote" title="Jump back to footnote 106 in the text">↩</a></p>
+</li>
+<li id="fn:107">
+<p>Another thing <a class="footnote-backref" href="#fnref:107" rev="footnote" title="Jump back to footnote 107 in the text">↩</a></p>
+</li>
+<li id="fn:108">
+<p>Another thing <a class="footnote-backref" href="#fnref:108" rev="footnote" title="Jump back to footnote 108 in the text">↩</a></p>
+</li>
+<li id="fn:109">
+<p>Another thing <a class="footnote-backref" href="#fnref:109" rev="footnote" title="Jump back to footnote 109 in the text">↩</a></p>
+</li>
+<li id="fn:110">
+<p>Another thing <a class="footnote-backref" href="#fnref:110" rev="footnote" title="Jump back to footnote 110 in the text">↩</a></p>
+</li>
+<li id="fn:111">
+<p>Another thing <a class="footnote-backref" href="#fnref:111" rev="footnote" title="Jump back to footnote 111 in the text">↩</a></p>
+</li>
+<li id="fn:112">
+<p>Another thing <a class="footnote-backref" href="#fnref:112" rev="footnote" title="Jump back to footnote 112 in the text">↩</a></p>
+</li>
+<li id="fn:113">
+<p>Another thing <a class="footnote-backref" href="#fnref:113" rev="footnote" title="Jump back to footnote 113 in the text">↩</a></p>
+</li>
+<li id="fn:114">
+<p>Another thing <a class="footnote-backref" href="#fnref:114" rev="footnote" title="Jump back to footnote 114 in the text">↩</a></p>
+</li>
+<li id="fn:115">
+<p>Another thing <a class="footnote-backref" href="#fnref:115" rev="footnote" title="Jump back to footnote 115 in the text">↩</a></p>
+</li>
+<li id="fn:116">
+<p>Another thing <a class="footnote-backref" href="#fnref:116" rev="footnote" title="Jump back to footnote 116 in the text">↩</a></p>
+</li>
+<li id="fn:117">
+<p>Another thing <a class="footnote-backref" href="#fnref:117" rev="footnote" title="Jump back to footnote 117 in the text">↩</a></p>
+</li>
+<li id="fn:118">
+<p>Another thing <a class="footnote-backref" href="#fnref:118" rev="footnote" title="Jump back to footnote 118 in the text">↩</a></p>
+</li>
+<li id="fn:119">
+<p>Another thing <a class="footnote-backref" href="#fnref:119" rev="footnote" title="Jump back to footnote 119 in the text">↩</a></p>
+</li>
+<li id="fn:120">
+<p>Another thing <a class="footnote-backref" href="#fnref:120" rev="footnote" title="Jump back to footnote 120 in the text">↩</a></p>
+</li>
+<li id="fn:121">
+<p>Another thing <a class="footnote-backref" href="#fnref:121" rev="footnote" title="Jump back to footnote 121 in the text">↩</a></p>
+</li>
+<li id="fn:122">
+<p>Another thing <a class="footnote-backref" href="#fnref:122" rev="footnote" title="Jump back to footnote 122 in the text">↩</a></p>
+</li>
+<li id="fn:123">
+<p>Another thing <a class="footnote-backref" href="#fnref:123" rev="footnote" title="Jump back to footnote 123 in the text">↩</a></p>
+</li>
+<li id="fn:124">
+<p>Another thing <a class="footnote-backref" href="#fnref:124" rev="footnote" title="Jump back to footnote 124 in the text">↩</a></p>
+</li>
+<li id="fn:125">
+<p>Another thing <a class="footnote-backref" href="#fnref:125" rev="footnote" title="Jump back to footnote 125 in the text">↩</a></p>
+</li>
+<li id="fn:126">
+<p>Another thing <a class="footnote-backref" href="#fnref:126" rev="footnote" title="Jump back to footnote 126 in the text">↩</a></p>
+</li>
+<li id="fn:127">
+<p>Another thing <a class="footnote-backref" href="#fnref:127" rev="footnote" title="Jump back to footnote 127 in the text">↩</a></p>
+</li>
+<li id="fn:128">
+<p>Another thing <a class="footnote-backref" href="#fnref:128" rev="footnote" title="Jump back to footnote 128 in the text">↩</a></p>
+</li>
+<li id="fn:129">
+<p>Another thing <a class="footnote-backref" href="#fnref:129" rev="footnote" title="Jump back to footnote 129 in the text">↩</a></p>
+</li>
+<li id="fn:130">
+<p>Another thing <a class="footnote-backref" href="#fnref:130" rev="footnote" title="Jump back to footnote 130 in the text">↩</a></p>
+</li>
+<li id="fn:131">
+<p>Another thing <a class="footnote-backref" href="#fnref:131" rev="footnote" title="Jump back to footnote 131 in the text">↩</a></p>
+</li>
+<li id="fn:132">
+<p>Another thing <a class="footnote-backref" href="#fnref:132" rev="footnote" title="Jump back to footnote 132 in the text">↩</a></p>
+</li>
+<li id="fn:133">
+<p>Another thing <a class="footnote-backref" href="#fnref:133" rev="footnote" title="Jump back to footnote 133 in the text">↩</a></p>
+</li>
+<li id="fn:134">
+<p>Another thing <a class="footnote-backref" href="#fnref:134" rev="footnote" title="Jump back to footnote 134 in the text">↩</a></p>
+</li>
+<li id="fn:135">
+<p>Another thing <a class="footnote-backref" href="#fnref:135" rev="footnote" title="Jump back to footnote 135 in the text">↩</a></p>
+</li>
+<li id="fn:136">
+<p>Another thing <a class="footnote-backref" href="#fnref:136" rev="footnote" title="Jump back to footnote 136 in the text">↩</a></p>
+</li>
+<li id="fn:137">
+<p>Another thing <a class="footnote-backref" href="#fnref:137" rev="footnote" title="Jump back to footnote 137 in the text">↩</a></p>
+</li>
+<li id="fn:138">
+<p>Another thing <a class="footnote-backref" href="#fnref:138" rev="footnote" title="Jump back to footnote 138 in the text">↩</a></p>
+</li>
+<li id="fn:139">
+<p>Another thing <a class="footnote-backref" href="#fnref:139" rev="footnote" title="Jump back to footnote 139 in the text">↩</a></p>
+</li>
+<li id="fn:140">
+<p>Another thing <a class="footnote-backref" href="#fnref:140" rev="footnote" title="Jump back to footnote 140 in the text">↩</a></p>
+</li>
+<li id="fn:141">
+<p>Another thing <a class="footnote-backref" href="#fnref:141" rev="footnote" title="Jump back to footnote 141 in the text">↩</a></p>
+</li>
+<li id="fn:142">
+<p>Another thing <a class="footnote-backref" href="#fnref:142" rev="footnote" title="Jump back to footnote 142 in the text">↩</a></p>
+</li>
+<li id="fn:143">
+<p>Another thing <a class="footnote-backref" href="#fnref:143" rev="footnote" title="Jump back to footnote 143 in the text">↩</a></p>
+</li>
+<li id="fn:144">
+<p>Another thing <a class="footnote-backref" href="#fnref:144" rev="footnote" title="Jump back to footnote 144 in the text">↩</a></p>
+</li>
+<li id="fn:145">
+<p>Another thing <a class="footnote-backref" href="#fnref:145" rev="footnote" title="Jump back to footnote 145 in the text">↩</a></p>
+</li>
+<li id="fn:146">
+<p>Another thing <a class="footnote-backref" href="#fnref:146" rev="footnote" title="Jump back to footnote 146 in the text">↩</a></p>
+</li>
+<li id="fn:147">
+<p>Another thing <a class="footnote-backref" href="#fnref:147" rev="footnote" title="Jump back to footnote 147 in the text">↩</a></p>
+</li>
+<li id="fn:148">
+<p>Another thing <a class="footnote-backref" href="#fnref:148" rev="footnote" title="Jump back to footnote 148 in the text">↩</a></p>
+</li>
+<li id="fn:149">
+<p>Another thing <a class="footnote-backref" href="#fnref:149" rev="footnote" title="Jump back to footnote 149 in the text">↩</a></p>
+</li>
+<li id="fn:150">
+<p>Another thing <a class="footnote-backref" href="#fnref:150" rev="footnote" title="Jump back to footnote 150 in the text">↩</a></p>
+</li>
+<li id="fn:151">
+<p>Another thing <a class="footnote-backref" href="#fnref:151" rev="footnote" title="Jump back to footnote 151 in the text">↩</a></p>
+</li>
+<li id="fn:152">
+<p>Another thing <a class="footnote-backref" href="#fnref:152" rev="footnote" title="Jump back to footnote 152 in the text">↩</a></p>
+</li>
+<li id="fn:153">
+<p>Another thing <a class="footnote-backref" href="#fnref:153" rev="footnote" title="Jump back to footnote 153 in the text">↩</a></p>
+</li>
+<li id="fn:154">
+<p>Another thing <a class="footnote-backref" href="#fnref:154" rev="footnote" title="Jump back to footnote 154 in the text">↩</a></p>
+</li>
+<li id="fn:155">
+<p>Another thing <a class="footnote-backref" href="#fnref:155" rev="footnote" title="Jump back to footnote 155 in the text">↩</a></p>
+</li>
+<li id="fn:156">
+<p>Another thing <a class="footnote-backref" href="#fnref:156" rev="footnote" title="Jump back to footnote 156 in the text">↩</a></p>
+</li>
+<li id="fn:157">
+<p>Another thing <a class="footnote-backref" href="#fnref:157" rev="footnote" title="Jump back to footnote 157 in the text">↩</a></p>
+</li>
+<li id="fn:158">
+<p>Another thing <a class="footnote-backref" href="#fnref:158" rev="footnote" title="Jump back to footnote 158 in the text">↩</a></p>
+</li>
+<li id="fn:159">
+<p>Another thing <a class="footnote-backref" href="#fnref:159" rev="footnote" title="Jump back to footnote 159 in the text">↩</a></p>
+</li>
+<li id="fn:160">
+<p>Another thing <a class="footnote-backref" href="#fnref:160" rev="footnote" title="Jump back to footnote 160 in the text">↩</a></p>
+</li>
+<li id="fn:161">
+<p>Another thing <a class="footnote-backref" href="#fnref:161" rev="footnote" title="Jump back to footnote 161 in the text">↩</a></p>
+</li>
+<li id="fn:162">
+<p>Another thing <a class="footnote-backref" href="#fnref:162" rev="footnote" title="Jump back to footnote 162 in the text">↩</a></p>
+</li>
+<li id="fn:163">
+<p>Another thing <a class="footnote-backref" href="#fnref:163" rev="footnote" title="Jump back to footnote 163 in the text">↩</a></p>
+</li>
+<li id="fn:164">
+<p>Another thing <a class="footnote-backref" href="#fnref:164" rev="footnote" title="Jump back to footnote 164 in the text">↩</a></p>
+</li>
+<li id="fn:165">
+<p>Another thing <a class="footnote-backref" href="#fnref:165" rev="footnote" title="Jump back to footnote 165 in the text">↩</a></p>
+</li>
+<li id="fn:166">
+<p>Another thing <a class="footnote-backref" href="#fnref:166" rev="footnote" title="Jump back to footnote 166 in the text">↩</a></p>
+</li>
+<li id="fn:167">
+<p>Another thing <a class="footnote-backref" href="#fnref:167" rev="footnote" title="Jump back to footnote 167 in the text">↩</a></p>
+</li>
+<li id="fn:168">
+<p>Another thing <a class="footnote-backref" href="#fnref:168" rev="footnote" title="Jump back to footnote 168 in the text">↩</a></p>
+</li>
+<li id="fn:169">
+<p>Another thing <a class="footnote-backref" href="#fnref:169" rev="footnote" title="Jump back to footnote 169 in the text">↩</a></p>
+</li>
+<li id="fn:170">
+<p>Another thing <a class="footnote-backref" href="#fnref:170" rev="footnote" title="Jump back to footnote 170 in the text">↩</a></p>
+</li>
+<li id="fn:171">
+<p>Another thing <a class="footnote-backref" href="#fnref:171" rev="footnote" title="Jump back to footnote 171 in the text">↩</a></p>
+</li>
+<li id="fn:172">
+<p>Another thing <a class="footnote-backref" href="#fnref:172" rev="footnote" title="Jump back to footnote 172 in the text">↩</a></p>
+</li>
+<li id="fn:173">
+<p>Another thing <a class="footnote-backref" href="#fnref:173" rev="footnote" title="Jump back to footnote 173 in the text">↩</a></p>
+</li>
+<li id="fn:174">
+<p>Another thing <a class="footnote-backref" href="#fnref:174" rev="footnote" title="Jump back to footnote 174 in the text">↩</a></p>
+</li>
+<li id="fn:175">
+<p>Another thing <a class="footnote-backref" href="#fnref:175" rev="footnote" title="Jump back to footnote 175 in the text">↩</a></p>
+</li>
+<li id="fn:176">
+<p>Another thing <a class="footnote-backref" href="#fnref:176" rev="footnote" title="Jump back to footnote 176 in the text">↩</a></p>
+</li>
+<li id="fn:177">
+<p>Another thing <a class="footnote-backref" href="#fnref:177" rev="footnote" title="Jump back to footnote 177 in the text">↩</a></p>
+</li>
+<li id="fn:178">
+<p>Another thing <a class="footnote-backref" href="#fnref:178" rev="footnote" title="Jump back to footnote 178 in the text">↩</a></p>
+</li>
+<li id="fn:179">
+<p>Another thing <a class="footnote-backref" href="#fnref:179" rev="footnote" title="Jump back to footnote 179 in the text">↩</a></p>
+</li>
+<li id="fn:180">
+<p>Another thing <a class="footnote-backref" href="#fnref:180" rev="footnote" title="Jump back to footnote 180 in the text">↩</a></p>
+</li>
+<li id="fn:181">
+<p>Another thing <a class="footnote-backref" href="#fnref:181" rev="footnote" title="Jump back to footnote 181 in the text">↩</a></p>
+</li>
+<li id="fn:182">
+<p>Another thing <a class="footnote-backref" href="#fnref:182" rev="footnote" title="Jump back to footnote 182 in the text">↩</a></p>
+</li>
+<li id="fn:183">
+<p>Another thing <a class="footnote-backref" href="#fnref:183" rev="footnote" title="Jump back to footnote 183 in the text">↩</a></p>
+</li>
+<li id="fn:184">
+<p>Another thing <a class="footnote-backref" href="#fnref:184" rev="footnote" title="Jump back to footnote 184 in the text">↩</a></p>
+</li>
+<li id="fn:185">
+<p>Another thing <a class="footnote-backref" href="#fnref:185" rev="footnote" title="Jump back to footnote 185 in the text">↩</a></p>
+</li>
+<li id="fn:186">
+<p>Another thing <a class="footnote-backref" href="#fnref:186" rev="footnote" title="Jump back to footnote 186 in the text">↩</a></p>
+</li>
+<li id="fn:187">
+<p>Another thing <a class="footnote-backref" href="#fnref:187" rev="footnote" title="Jump back to footnote 187 in the text">↩</a></p>
+</li>
+<li id="fn:188">
+<p>Another thing <a class="footnote-backref" href="#fnref:188" rev="footnote" title="Jump back to footnote 188 in the text">↩</a></p>
+</li>
+<li id="fn:189">
+<p>Another thing <a class="footnote-backref" href="#fnref:189" rev="footnote" title="Jump back to footnote 189 in the text">↩</a></p>
+</li>
+<li id="fn:190">
+<p>Another thing <a class="footnote-backref" href="#fnref:190" rev="footnote" title="Jump back to footnote 190 in the text">↩</a></p>
+</li>
+<li id="fn:191">
+<p>Another thing <a class="footnote-backref" href="#fnref:191" rev="footnote" title="Jump back to footnote 191 in the text">↩</a></p>
+</li>
+<li id="fn:192">
+<p>Another thing <a class="footnote-backref" href="#fnref:192" rev="footnote" title="Jump back to footnote 192 in the text">↩</a></p>
+</li>
+<li id="fn:193">
+<p>Another thing <a class="footnote-backref" href="#fnref:193" rev="footnote" title="Jump back to footnote 193 in the text">↩</a></p>
+</li>
+<li id="fn:194">
+<p>Another thing <a class="footnote-backref" href="#fnref:194" rev="footnote" title="Jump back to footnote 194 in the text">↩</a></p>
+</li>
+<li id="fn:195">
+<p>Another thing <a class="footnote-backref" href="#fnref:195" rev="footnote" title="Jump back to footnote 195 in the text">↩</a></p>
+</li>
+<li id="fn:196">
+<p>Another thing <a class="footnote-backref" href="#fnref:196" rev="footnote" title="Jump back to footnote 196 in the text">↩</a></p>
+</li>
+<li id="fn:197">
+<p>Another thing <a class="footnote-backref" href="#fnref:197" rev="footnote" title="Jump back to footnote 197 in the text">↩</a></p>
+</li>
+<li id="fn:198">
+<p>Another thing <a class="footnote-backref" href="#fnref:198" rev="footnote" title="Jump back to footnote 198 in the text">↩</a></p>
+</li>
+<li id="fn:199">
+<p>Another thing <a class="footnote-backref" href="#fnref:199" rev="footnote" title="Jump back to footnote 199 in the text">↩</a></p>
+</li>
+<li id="fn:200">
+<p>Another thing <a class="footnote-backref" href="#fnref:200" rev="footnote" title="Jump back to footnote 200 in the text">↩</a></p>
+</li>
+<li id="fn:201">
+<p>Another thing <a class="footnote-backref" href="#fnref:201" rev="footnote" title="Jump back to footnote 201 in the text">↩</a></p>
+</li>
+<li id="fn:202">
+<p>Another thing <a class="footnote-backref" href="#fnref:202" rev="footnote" title="Jump back to footnote 202 in the text">↩</a></p>
+</li>
+<li id="fn:203">
+<p>Another thing <a class="footnote-backref" href="#fnref:203" rev="footnote" title="Jump back to footnote 203 in the text">↩</a></p>
+</li>
+<li id="fn:204">
+<p>Another thing <a class="footnote-backref" href="#fnref:204" rev="footnote" title="Jump back to footnote 204 in the text">↩</a></p>
+</li>
+<li id="fn:205">
+<p>Another thing <a class="footnote-backref" href="#fnref:205" rev="footnote" title="Jump back to footnote 205 in the text">↩</a></p>
+</li>
+<li id="fn:206">
+<p>Another thing <a class="footnote-backref" href="#fnref:206" rev="footnote" title="Jump back to footnote 206 in the text">↩</a></p>
+</li>
+<li id="fn:207">
+<p>Another thing <a class="footnote-backref" href="#fnref:207" rev="footnote" title="Jump back to footnote 207 in the text">↩</a></p>
+</li>
+<li id="fn:208">
+<p>Another thing <a class="footnote-backref" href="#fnref:208" rev="footnote" title="Jump back to footnote 208 in the text">↩</a></p>
+</li>
+<li id="fn:209">
+<p>Another thing <a class="footnote-backref" href="#fnref:209" rev="footnote" title="Jump back to footnote 209 in the text">↩</a></p>
+</li>
+<li id="fn:210">
+<p>Another thing <a class="footnote-backref" href="#fnref:210" rev="footnote" title="Jump back to footnote 210 in the text">↩</a></p>
+</li>
+<li id="fn:211">
+<p>Another thing <a class="footnote-backref" href="#fnref:211" rev="footnote" title="Jump back to footnote 211 in the text">↩</a></p>
+</li>
+<li id="fn:212">
+<p>Another thing <a class="footnote-backref" href="#fnref:212" rev="footnote" title="Jump back to footnote 212 in the text">↩</a></p>
+</li>
+<li id="fn:213">
+<p>Another thing <a class="footnote-backref" href="#fnref:213" rev="footnote" title="Jump back to footnote 213 in the text">↩</a></p>
+</li>
+<li id="fn:214">
+<p>Another thing <a class="footnote-backref" href="#fnref:214" rev="footnote" title="Jump back to footnote 214 in the text">↩</a></p>
+</li>
+<li id="fn:215">
+<p>Another thing <a class="footnote-backref" href="#fnref:215" rev="footnote" title="Jump back to footnote 215 in the text">↩</a></p>
+</li>
+<li id="fn:216">
+<p>Another thing <a class="footnote-backref" href="#fnref:216" rev="footnote" title="Jump back to footnote 216 in the text">↩</a></p>
+</li>
+<li id="fn:217">
+<p>Another thing <a class="footnote-backref" href="#fnref:217" rev="footnote" title="Jump back to footnote 217 in the text">↩</a></p>
+</li>
+<li id="fn:218">
+<p>Another thing <a class="footnote-backref" href="#fnref:218" rev="footnote" title="Jump back to footnote 218 in the text">↩</a></p>
+</li>
+<li id="fn:219">
+<p>Another thing <a class="footnote-backref" href="#fnref:219" rev="footnote" title="Jump back to footnote 219 in the text">↩</a></p>
+</li>
+<li id="fn:220">
+<p>Another thing <a class="footnote-backref" href="#fnref:220" rev="footnote" title="Jump back to footnote 220 in the text">↩</a></p>
+</li>
+<li id="fn:221">
+<p>Another thing <a class="footnote-backref" href="#fnref:221" rev="footnote" title="Jump back to footnote 221 in the text">↩</a></p>
+</li>
+<li id="fn:222">
+<p>Another thing <a class="footnote-backref" href="#fnref:222" rev="footnote" title="Jump back to footnote 222 in the text">↩</a></p>
+</li>
+<li id="fn:223">
+<p>Another thing <a class="footnote-backref" href="#fnref:223" rev="footnote" title="Jump back to footnote 223 in the text">↩</a></p>
+</li>
+<li id="fn:224">
+<p>Another thing <a class="footnote-backref" href="#fnref:224" rev="footnote" title="Jump back to footnote 224 in the text">↩</a></p>
+</li>
+<li id="fn:225">
+<p>Another thing <a class="footnote-backref" href="#fnref:225" rev="footnote" title="Jump back to footnote 225 in the text">↩</a></p>
+</li>
+<li id="fn:226">
+<p>Another thing <a class="footnote-backref" href="#fnref:226" rev="footnote" title="Jump back to footnote 226 in the text">↩</a></p>
+</li>
+<li id="fn:227">
+<p>Another thing <a class="footnote-backref" href="#fnref:227" rev="footnote" title="Jump back to footnote 227 in the text">↩</a></p>
+</li>
+<li id="fn:228">
+<p>Another thing <a class="footnote-backref" href="#fnref:228" rev="footnote" title="Jump back to footnote 228 in the text">↩</a></p>
+</li>
+<li id="fn:229">
+<p>Another thing <a class="footnote-backref" href="#fnref:229" rev="footnote" title="Jump back to footnote 229 in the text">↩</a></p>
+</li>
+<li id="fn:230">
+<p>Another thing <a class="footnote-backref" href="#fnref:230" rev="footnote" title="Jump back to footnote 230 in the text">↩</a></p>
+</li>
+<li id="fn:231">
+<p>Another thing <a class="footnote-backref" href="#fnref:231" rev="footnote" title="Jump back to footnote 231 in the text">↩</a></p>
+</li>
+<li id="fn:232">
+<p>Another thing <a class="footnote-backref" href="#fnref:232" rev="footnote" title="Jump back to footnote 232 in the text">↩</a></p>
+</li>
+<li id="fn:233">
+<p>Another thing <a class="footnote-backref" href="#fnref:233" rev="footnote" title="Jump back to footnote 233 in the text">↩</a></p>
+</li>
+<li id="fn:234">
+<p>Another thing <a class="footnote-backref" href="#fnref:234" rev="footnote" title="Jump back to footnote 234 in the text">↩</a></p>
+</li>
+<li id="fn:235">
+<p>Another thing <a class="footnote-backref" href="#fnref:235" rev="footnote" title="Jump back to footnote 235 in the text">↩</a></p>
+</li>
+<li id="fn:236">
+<p>Another thing <a class="footnote-backref" href="#fnref:236" rev="footnote" title="Jump back to footnote 236 in the text">↩</a></p>
+</li>
+<li id="fn:237">
+<p>Another thing <a class="footnote-backref" href="#fnref:237" rev="footnote" title="Jump back to footnote 237 in the text">↩</a></p>
+</li>
+<li id="fn:238">
+<p>Another thing <a class="footnote-backref" href="#fnref:238" rev="footnote" title="Jump back to footnote 238 in the text">↩</a></p>
+</li>
+<li id="fn:239">
+<p>Another thing <a class="footnote-backref" href="#fnref:239" rev="footnote" title="Jump back to footnote 239 in the text">↩</a></p>
+</li>
+<li id="fn:240">
+<p>Another thing <a class="footnote-backref" href="#fnref:240" rev="footnote" title="Jump back to footnote 240 in the text">↩</a></p>
+</li>
+<li id="fn:241">
+<p>Another thing <a class="footnote-backref" href="#fnref:241" rev="footnote" title="Jump back to footnote 241 in the text">↩</a></p>
+</li>
+<li id="fn:242">
+<p>Another thing <a class="footnote-backref" href="#fnref:242" rev="footnote" title="Jump back to footnote 242 in the text">↩</a></p>
+</li>
+<li id="fn:243">
+<p>Another thing <a class="footnote-backref" href="#fnref:243" rev="footnote" title="Jump back to footnote 243 in the text">↩</a></p>
+</li>
+<li id="fn:244">
+<p>Another thing <a class="footnote-backref" href="#fnref:244" rev="footnote" title="Jump back to footnote 244 in the text">↩</a></p>
+</li>
+<li id="fn:245">
+<p>Another thing <a class="footnote-backref" href="#fnref:245" rev="footnote" title="Jump back to footnote 245 in the text">↩</a></p>
+</li>
+<li id="fn:246">
+<p>Another thing <a class="footnote-backref" href="#fnref:246" rev="footnote" title="Jump back to footnote 246 in the text">↩</a></p>
+</li>
+<li id="fn:247">
+<p>Another thing <a class="footnote-backref" href="#fnref:247" rev="footnote" title="Jump back to footnote 247 in the text">↩</a></p>
+</li>
+<li id="fn:248">
+<p>Another thing <a class="footnote-backref" href="#fnref:248" rev="footnote" title="Jump back to footnote 248 in the text">↩</a></p>
+</li>
+<li id="fn:249">
+<p>Another thing <a class="footnote-backref" href="#fnref:249" rev="footnote" title="Jump back to footnote 249 in the text">↩</a></p>
+</li>
+<li id="fn:250">
+<p>Another thing <a class="footnote-backref" href="#fnref:250" rev="footnote" title="Jump back to footnote 250 in the text">↩</a></p>
+</li>
+<li id="fn:251">
+<p>Another thing <a class="footnote-backref" href="#fnref:251" rev="footnote" title="Jump back to footnote 251 in the text">↩</a></p>
+</li>
+<li id="fn:252">
+<p>Another thing <a class="footnote-backref" href="#fnref:252" rev="footnote" title="Jump back to footnote 252 in the text">↩</a></p>
+</li>
+<li id="fn:253">
+<p>Another thing <a class="footnote-backref" href="#fnref:253" rev="footnote" title="Jump back to footnote 253 in the text">↩</a></p>
+</li>
+<li id="fn:254">
+<p>Another thing <a class="footnote-backref" href="#fnref:254" rev="footnote" title="Jump back to footnote 254 in the text">↩</a></p>
+</li>
+<li id="fn:255">
+<p>Another thing <a class="footnote-backref" href="#fnref:255" rev="footnote" title="Jump back to footnote 255 in the text">↩</a></p>
+</li>
+<li id="fn:256">
+<p>Another thing <a class="footnote-backref" href="#fnref:256" rev="footnote" title="Jump back to footnote 256 in the text">↩</a></p>
+</li>
+<li id="fn:257">
+<p>Another thing <a class="footnote-backref" href="#fnref:257" rev="footnote" title="Jump back to footnote 257 in the text">↩</a></p>
+</li>
+<li id="fn:258">
+<p>Another thing <a class="footnote-backref" href="#fnref:258" rev="footnote" title="Jump back to footnote 258 in the text">↩</a></p>
+</li>
+<li id="fn:259">
+<p>Another thing <a class="footnote-backref" href="#fnref:259" rev="footnote" title="Jump back to footnote 259 in the text">↩</a></p>
+</li>
+<li id="fn:260">
+<p>Another thing <a class="footnote-backref" href="#fnref:260" rev="footnote" title="Jump back to footnote 260 in the text">↩</a></p>
+</li>
+<li id="fn:261">
+<p>Another thing <a class="footnote-backref" href="#fnref:261" rev="footnote" title="Jump back to footnote 261 in the text">↩</a></p>
+</li>
+<li id="fn:262">
+<p>Another thing <a class="footnote-backref" href="#fnref:262" rev="footnote" title="Jump back to footnote 262 in the text">↩</a></p>
+</li>
+<li id="fn:263">
+<p>Another thing <a class="footnote-backref" href="#fnref:263" rev="footnote" title="Jump back to footnote 263 in the text">↩</a></p>
+</li>
+<li id="fn:264">
+<p>Another thing <a class="footnote-backref" href="#fnref:264" rev="footnote" title="Jump back to footnote 264 in the text">↩</a></p>
+</li>
+<li id="fn:265">
+<p>Another thing <a class="footnote-backref" href="#fnref:265" rev="footnote" title="Jump back to footnote 265 in the text">↩</a></p>
+</li>
+<li id="fn:266">
+<p>Another thing <a class="footnote-backref" href="#fnref:266" rev="footnote" title="Jump back to footnote 266 in the text">↩</a></p>
+</li>
+<li id="fn:267">
+<p>Another thing <a class="footnote-backref" href="#fnref:267" rev="footnote" title="Jump back to footnote 267 in the text">↩</a></p>
+</li>
+<li id="fn:268">
+<p>Another thing <a class="footnote-backref" href="#fnref:268" rev="footnote" title="Jump back to footnote 268 in the text">↩</a></p>
+</li>
+<li id="fn:269">
+<p>Another thing <a class="footnote-backref" href="#fnref:269" rev="footnote" title="Jump back to footnote 269 in the text">↩</a></p>
+</li>
+<li id="fn:270">
+<p>Another thing <a class="footnote-backref" href="#fnref:270" rev="footnote" title="Jump back to footnote 270 in the text">↩</a></p>
+</li>
+<li id="fn:271">
+<p>Another thing <a class="footnote-backref" href="#fnref:271" rev="footnote" title="Jump back to footnote 271 in the text">↩</a></p>
+</li>
+<li id="fn:272">
+<p>Another thing <a class="footnote-backref" href="#fnref:272" rev="footnote" title="Jump back to footnote 272 in the text">↩</a></p>
+</li>
+<li id="fn:273">
+<p>Another thing <a class="footnote-backref" href="#fnref:273" rev="footnote" title="Jump back to footnote 273 in the text">↩</a></p>
+</li>
+<li id="fn:274">
+<p>Another thing <a class="footnote-backref" href="#fnref:274" rev="footnote" title="Jump back to footnote 274 in the text">↩</a></p>
+</li>
+<li id="fn:275">
+<p>Another thing <a class="footnote-backref" href="#fnref:275" rev="footnote" title="Jump back to footnote 275 in the text">↩</a></p>
+</li>
+<li id="fn:276">
+<p>Another thing <a class="footnote-backref" href="#fnref:276" rev="footnote" title="Jump back to footnote 276 in the text">↩</a></p>
+</li>
+<li id="fn:277">
+<p>Another thing <a class="footnote-backref" href="#fnref:277" rev="footnote" title="Jump back to footnote 277 in the text">↩</a></p>
+</li>
+<li id="fn:278">
+<p>Another thing <a class="footnote-backref" href="#fnref:278" rev="footnote" title="Jump back to footnote 278 in the text">↩</a></p>
+</li>
+<li id="fn:279">
+<p>Another thing <a class="footnote-backref" href="#fnref:279" rev="footnote" title="Jump back to footnote 279 in the text">↩</a></p>
+</li>
+<li id="fn:280">
+<p>Another thing <a class="footnote-backref" href="#fnref:280" rev="footnote" title="Jump back to footnote 280 in the text">↩</a></p>
+</li>
+<li id="fn:281">
+<p>Another thing <a class="footnote-backref" href="#fnref:281" rev="footnote" title="Jump back to footnote 281 in the text">↩</a></p>
+</li>
+<li id="fn:282">
+<p>Another thing <a class="footnote-backref" href="#fnref:282" rev="footnote" title="Jump back to footnote 282 in the text">↩</a></p>
+</li>
+<li id="fn:283">
+<p>Another thing <a class="footnote-backref" href="#fnref:283" rev="footnote" title="Jump back to footnote 283 in the text">↩</a></p>
+</li>
+<li id="fn:284">
+<p>Another thing <a class="footnote-backref" href="#fnref:284" rev="footnote" title="Jump back to footnote 284 in the text">↩</a></p>
+</li>
+<li id="fn:285">
+<p>Another thing <a class="footnote-backref" href="#fnref:285" rev="footnote" title="Jump back to footnote 285 in the text">↩</a></p>
+</li>
+<li id="fn:286">
+<p>Another thing <a class="footnote-backref" href="#fnref:286" rev="footnote" title="Jump back to footnote 286 in the text">↩</a></p>
+</li>
+<li id="fn:287">
+<p>Another thing <a class="footnote-backref" href="#fnref:287" rev="footnote" title="Jump back to footnote 287 in the text">↩</a></p>
+</li>
+<li id="fn:288">
+<p>Another thing <a class="footnote-backref" href="#fnref:288" rev="footnote" title="Jump back to footnote 288 in the text">↩</a></p>
+</li>
+<li id="fn:289">
+<p>Another thing <a class="footnote-backref" href="#fnref:289" rev="footnote" title="Jump back to footnote 289 in the text">↩</a></p>
+</li>
+<li id="fn:290">
+<p>Another thing <a class="footnote-backref" href="#fnref:290" rev="footnote" title="Jump back to footnote 290 in the text">↩</a></p>
+</li>
+<li id="fn:291">
+<p>Another thing <a class="footnote-backref" href="#fnref:291" rev="footnote" title="Jump back to footnote 291 in the text">↩</a></p>
+</li>
+<li id="fn:292">
+<p>Another thing <a class="footnote-backref" href="#fnref:292" rev="footnote" title="Jump back to footnote 292 in the text">↩</a></p>
+</li>
+<li id="fn:293">
+<p>Another thing <a class="footnote-backref" href="#fnref:293" rev="footnote" title="Jump back to footnote 293 in the text">↩</a></p>
+</li>
+<li id="fn:294">
+<p>Another thing <a class="footnote-backref" href="#fnref:294" rev="footnote" title="Jump back to footnote 294 in the text">↩</a></p>
+</li>
+<li id="fn:295">
+<p>Another thing <a class="footnote-backref" href="#fnref:295" rev="footnote" title="Jump back to footnote 295 in the text">↩</a></p>
+</li>
+<li id="fn:296">
+<p>Another thing <a class="footnote-backref" href="#fnref:296" rev="footnote" title="Jump back to footnote 296 in the text">↩</a></p>
+</li>
+<li id="fn:297">
+<p>Another thing <a class="footnote-backref" href="#fnref:297" rev="footnote" title="Jump back to footnote 297 in the text">↩</a></p>
+</li>
+<li id="fn:298">
+<p>Another thing <a class="footnote-backref" href="#fnref:298" rev="footnote" title="Jump back to footnote 298 in the text">↩</a></p>
+</li>
+<li id="fn:299">
+<p>Another thing <a class="footnote-backref" href="#fnref:299" rev="footnote" title="Jump back to footnote 299 in the text">↩</a></p>
+</li>
+<li id="fn:300">
+<p>Another thing <a class="footnote-backref" href="#fnref:300" rev="footnote" title="Jump back to footnote 300 in the text">↩</a></p>
+</li>
+<li id="fn:301">
+<p>Another thing <a class="footnote-backref" href="#fnref:301" rev="footnote" title="Jump back to footnote 301 in the text">↩</a></p>
+</li>
+<li id="fn:302">
+<p>Another thing <a class="footnote-backref" href="#fnref:302" rev="footnote" title="Jump back to footnote 302 in the text">↩</a></p>
+</li>
+<li id="fn:303">
+<p>Another thing <a class="footnote-backref" href="#fnref:303" rev="footnote" title="Jump back to footnote 303 in the text">↩</a></p>
+</li>
+<li id="fn:304">
+<p>Another thing <a class="footnote-backref" href="#fnref:304" rev="footnote" title="Jump back to footnote 304 in the text">↩</a></p>
+</li>
+<li id="fn:305">
+<p>Another thing <a class="footnote-backref" href="#fnref:305" rev="footnote" title="Jump back to footnote 305 in the text">↩</a></p>
+</li>
+<li id="fn:306">
+<p>Another thing <a class="footnote-backref" href="#fnref:306" rev="footnote" title="Jump back to footnote 306 in the text">↩</a></p>
+</li>
+<li id="fn:307">
+<p>Another thing <a class="footnote-backref" href="#fnref:307" rev="footnote" title="Jump back to footnote 307 in the text">↩</a></p>
+</li>
+<li id="fn:308">
+<p>Another thing <a class="footnote-backref" href="#fnref:308" rev="footnote" title="Jump back to footnote 308 in the text">↩</a></p>
+</li>
+<li id="fn:309">
+<p>Another thing <a class="footnote-backref" href="#fnref:309" rev="footnote" title="Jump back to footnote 309 in the text">↩</a></p>
+</li>
+<li id="fn:310">
+<p>Another thing <a class="footnote-backref" href="#fnref:310" rev="footnote" title="Jump back to footnote 310 in the text">↩</a></p>
+</li>
+<li id="fn:311">
+<p>Another thing <a class="footnote-backref" href="#fnref:311" rev="footnote" title="Jump back to footnote 311 in the text">↩</a></p>
+</li>
+<li id="fn:312">
+<p>Another thing <a class="footnote-backref" href="#fnref:312" rev="footnote" title="Jump back to footnote 312 in the text">↩</a></p>
+</li>
+<li id="fn:313">
+<p>Another thing <a class="footnote-backref" href="#fnref:313" rev="footnote" title="Jump back to footnote 313 in the text">↩</a></p>
+</li>
+<li id="fn:314">
+<p>Another thing <a class="footnote-backref" href="#fnref:314" rev="footnote" title="Jump back to footnote 314 in the text">↩</a></p>
+</li>
+<li id="fn:315">
+<p>Another thing <a class="footnote-backref" href="#fnref:315" rev="footnote" title="Jump back to footnote 315 in the text">↩</a></p>
+</li>
+<li id="fn:316">
+<p>Another thing <a class="footnote-backref" href="#fnref:316" rev="footnote" title="Jump back to footnote 316 in the text">↩</a></p>
+</li>
+<li id="fn:317">
+<p>Another thing <a class="footnote-backref" href="#fnref:317" rev="footnote" title="Jump back to footnote 317 in the text">↩</a></p>
+</li>
+<li id="fn:318">
+<p>Another thing <a class="footnote-backref" href="#fnref:318" rev="footnote" title="Jump back to footnote 318 in the text">↩</a></p>
+</li>
+<li id="fn:319">
+<p>Another thing <a class="footnote-backref" href="#fnref:319" rev="footnote" title="Jump back to footnote 319 in the text">↩</a></p>
+</li>
+<li id="fn:320">
+<p>Another thing <a class="footnote-backref" href="#fnref:320" rev="footnote" title="Jump back to footnote 320 in the text">↩</a></p>
+</li>
+<li id="fn:321">
+<p>Another thing <a class="footnote-backref" href="#fnref:321" rev="footnote" title="Jump back to footnote 321 in the text">↩</a></p>
+</li>
+<li id="fn:322">
+<p>Another thing <a class="footnote-backref" href="#fnref:322" rev="footnote" title="Jump back to footnote 322 in the text">↩</a></p>
+</li>
+<li id="fn:323">
+<p>Another thing <a class="footnote-backref" href="#fnref:323" rev="footnote" title="Jump back to footnote 323 in the text">↩</a></p>
+</li>
+<li id="fn:324">
+<p>Another thing <a class="footnote-backref" href="#fnref:324" rev="footnote" title="Jump back to footnote 324 in the text">↩</a></p>
+</li>
+<li id="fn:325">
+<p>Another thing <a class="footnote-backref" href="#fnref:325" rev="footnote" title="Jump back to footnote 325 in the text">↩</a></p>
+</li>
+<li id="fn:326">
+<p>Another thing <a class="footnote-backref" href="#fnref:326" rev="footnote" title="Jump back to footnote 326 in the text">↩</a></p>
+</li>
+<li id="fn:327">
+<p>Another thing <a class="footnote-backref" href="#fnref:327" rev="footnote" title="Jump back to footnote 327 in the text">↩</a></p>
+</li>
+<li id="fn:328">
+<p>Another thing <a class="footnote-backref" href="#fnref:328" rev="footnote" title="Jump back to footnote 328 in the text">↩</a></p>
+</li>
+<li id="fn:329">
+<p>Another thing <a class="footnote-backref" href="#fnref:329" rev="footnote" title="Jump back to footnote 329 in the text">↩</a></p>
+</li>
+<li id="fn:330">
+<p>Another thing <a class="footnote-backref" href="#fnref:330" rev="footnote" title="Jump back to footnote 330 in the text">↩</a></p>
+</li>
+<li id="fn:331">
+<p>Another thing <a class="footnote-backref" href="#fnref:331" rev="footnote" title="Jump back to footnote 331 in the text">↩</a></p>
+</li>
+<li id="fn:332">
+<p>Another thing <a class="footnote-backref" href="#fnref:332" rev="footnote" title="Jump back to footnote 332 in the text">↩</a></p>
+</li>
+<li id="fn:333">
+<p>Another thing <a class="footnote-backref" href="#fnref:333" rev="footnote" title="Jump back to footnote 333 in the text">↩</a></p>
+</li>
+<li id="fn:334">
+<p>Another thing <a class="footnote-backref" href="#fnref:334" rev="footnote" title="Jump back to footnote 334 in the text">↩</a></p>
+</li>
+<li id="fn:335">
+<p>Another thing <a class="footnote-backref" href="#fnref:335" rev="footnote" title="Jump back to footnote 335 in the text">↩</a></p>
+</li>
+<li id="fn:336">
+<p>Another thing <a class="footnote-backref" href="#fnref:336" rev="footnote" title="Jump back to footnote 336 in the text">↩</a></p>
+</li>
+<li id="fn:337">
+<p>Another thing <a class="footnote-backref" href="#fnref:337" rev="footnote" title="Jump back to footnote 337 in the text">↩</a></p>
+</li>
+<li id="fn:338">
+<p>Another thing <a class="footnote-backref" href="#fnref:338" rev="footnote" title="Jump back to footnote 338 in the text">↩</a></p>
+</li>
+<li id="fn:339">
+<p>Another thing <a class="footnote-backref" href="#fnref:339" rev="footnote" title="Jump back to footnote 339 in the text">↩</a></p>
+</li>
+<li id="fn:340">
+<p>Another thing <a class="footnote-backref" href="#fnref:340" rev="footnote" title="Jump back to footnote 340 in the text">↩</a></p>
+</li>
+<li id="fn:341">
+<p>Another thing <a class="footnote-backref" href="#fnref:341" rev="footnote" title="Jump back to footnote 341 in the text">↩</a></p>
+</li>
+<li id="fn:342">
+<p>Another thing <a class="footnote-backref" href="#fnref:342" rev="footnote" title="Jump back to footnote 342 in the text">↩</a></p>
+</li>
+<li id="fn:343">
+<p>Another thing <a class="footnote-backref" href="#fnref:343" rev="footnote" title="Jump back to footnote 343 in the text">↩</a></p>
+</li>
+<li id="fn:344">
+<p>Another thing <a class="footnote-backref" href="#fnref:344" rev="footnote" title="Jump back to footnote 344 in the text">↩</a></p>
+</li>
+<li id="fn:345">
+<p>Another thing <a class="footnote-backref" href="#fnref:345" rev="footnote" title="Jump back to footnote 345 in the text">↩</a></p>
+</li>
+<li id="fn:346">
+<p>Another thing <a class="footnote-backref" href="#fnref:346" rev="footnote" title="Jump back to footnote 346 in the text">↩</a></p>
+</li>
+<li id="fn:347">
+<p>Another thing <a class="footnote-backref" href="#fnref:347" rev="footnote" title="Jump back to footnote 347 in the text">↩</a></p>
+</li>
+<li id="fn:348">
+<p>Another thing <a class="footnote-backref" href="#fnref:348" rev="footnote" title="Jump back to footnote 348 in the text">↩</a></p>
+</li>
+<li id="fn:349">
+<p>Another thing <a class="footnote-backref" href="#fnref:349" rev="footnote" title="Jump back to footnote 349 in the text">↩</a></p>
+</li>
+<li id="fn:350">
+<p>Another thing <a class="footnote-backref" href="#fnref:350" rev="footnote" title="Jump back to footnote 350 in the text">↩</a></p>
+</li>
+<li id="fn:351">
+<p>Another thing <a class="footnote-backref" href="#fnref:351" rev="footnote" title="Jump back to footnote 351 in the text">↩</a></p>
+</li>
+<li id="fn:352">
+<p>Another thing <a class="footnote-backref" href="#fnref:352" rev="footnote" title="Jump back to footnote 352 in the text">↩</a></p>
+</li>
+<li id="fn:353">
+<p>Another thing <a class="footnote-backref" href="#fnref:353" rev="footnote" title="Jump back to footnote 353 in the text">↩</a></p>
+</li>
+<li id="fn:354">
+<p>Another thing <a class="footnote-backref" href="#fnref:354" rev="footnote" title="Jump back to footnote 354 in the text">↩</a></p>
+</li>
+<li id="fn:355">
+<p>Another thing <a class="footnote-backref" href="#fnref:355" rev="footnote" title="Jump back to footnote 355 in the text">↩</a></p>
+</li>
+<li id="fn:356">
+<p>Another thing <a class="footnote-backref" href="#fnref:356" rev="footnote" title="Jump back to footnote 356 in the text">↩</a></p>
+</li>
+<li id="fn:357">
+<p>Another thing <a class="footnote-backref" href="#fnref:357" rev="footnote" title="Jump back to footnote 357 in the text">↩</a></p>
+</li>
+<li id="fn:358">
+<p>Another thing <a class="footnote-backref" href="#fnref:358" rev="footnote" title="Jump back to footnote 358 in the text">↩</a></p>
+</li>
+<li id="fn:359">
+<p>Another thing <a class="footnote-backref" href="#fnref:359" rev="footnote" title="Jump back to footnote 359 in the text">↩</a></p>
+</li>
+<li id="fn:360">
+<p>Another thing <a class="footnote-backref" href="#fnref:360" rev="footnote" title="Jump back to footnote 360 in the text">↩</a></p>
+</li>
+<li id="fn:361">
+<p>Another thing <a class="footnote-backref" href="#fnref:361" rev="footnote" title="Jump back to footnote 361 in the text">↩</a></p>
+</li>
+<li id="fn:362">
+<p>Another thing <a class="footnote-backref" href="#fnref:362" rev="footnote" title="Jump back to footnote 362 in the text">↩</a></p>
+</li>
+<li id="fn:363">
+<p>Another thing <a class="footnote-backref" href="#fnref:363" rev="footnote" title="Jump back to footnote 363 in the text">↩</a></p>
+</li>
+<li id="fn:364">
+<p>Another thing <a class="footnote-backref" href="#fnref:364" rev="footnote" title="Jump back to footnote 364 in the text">↩</a></p>
+</li>
+<li id="fn:365">
+<p>Another thing <a class="footnote-backref" href="#fnref:365" rev="footnote" title="Jump back to footnote 365 in the text">↩</a></p>
+</li>
+<li id="fn:366">
+<p>Another thing <a class="footnote-backref" href="#fnref:366" rev="footnote" title="Jump back to footnote 366 in the text">↩</a></p>
+</li>
+<li id="fn:367">
+<p>Another thing <a class="footnote-backref" href="#fnref:367" rev="footnote" title="Jump back to footnote 367 in the text">↩</a></p>
+</li>
+<li id="fn:368">
+<p>Another thing <a class="footnote-backref" href="#fnref:368" rev="footnote" title="Jump back to footnote 368 in the text">↩</a></p>
+</li>
+<li id="fn:369">
+<p>Another thing <a class="footnote-backref" href="#fnref:369" rev="footnote" title="Jump back to footnote 369 in the text">↩</a></p>
+</li>
+<li id="fn:370">
+<p>Another thing <a class="footnote-backref" href="#fnref:370" rev="footnote" title="Jump back to footnote 370 in the text">↩</a></p>
+</li>
+<li id="fn:371">
+<p>Another thing <a class="footnote-backref" href="#fnref:371" rev="footnote" title="Jump back to footnote 371 in the text">↩</a></p>
+</li>
+<li id="fn:372">
+<p>Another thing <a class="footnote-backref" href="#fnref:372" rev="footnote" title="Jump back to footnote 372 in the text">↩</a></p>
+</li>
+<li id="fn:373">
+<p>Another thing <a class="footnote-backref" href="#fnref:373" rev="footnote" title="Jump back to footnote 373 in the text">↩</a></p>
+</li>
+<li id="fn:374">
+<p>Another thing <a class="footnote-backref" href="#fnref:374" rev="footnote" title="Jump back to footnote 374 in the text">↩</a></p>
+</li>
+<li id="fn:375">
+<p>Another thing <a class="footnote-backref" href="#fnref:375" rev="footnote" title="Jump back to footnote 375 in the text">↩</a></p>
+</li>
+<li id="fn:376">
+<p>Another thing <a class="footnote-backref" href="#fnref:376" rev="footnote" title="Jump back to footnote 376 in the text">↩</a></p>
+</li>
+<li id="fn:377">
+<p>Another thing <a class="footnote-backref" href="#fnref:377" rev="footnote" title="Jump back to footnote 377 in the text">↩</a></p>
+</li>
+<li id="fn:378">
+<p>Another thing <a class="footnote-backref" href="#fnref:378" rev="footnote" title="Jump back to footnote 378 in the text">↩</a></p>
+</li>
+<li id="fn:379">
+<p>Another thing <a class="footnote-backref" href="#fnref:379" rev="footnote" title="Jump back to footnote 379 in the text">↩</a></p>
+</li>
+<li id="fn:380">
+<p>Another thing <a class="footnote-backref" href="#fnref:380" rev="footnote" title="Jump back to footnote 380 in the text">↩</a></p>
+</li>
+<li id="fn:381">
+<p>Another thing <a class="footnote-backref" href="#fnref:381" rev="footnote" title="Jump back to footnote 381 in the text">↩</a></p>
+</li>
+<li id="fn:382">
+<p>Another thing <a class="footnote-backref" href="#fnref:382" rev="footnote" title="Jump back to footnote 382 in the text">↩</a></p>
+</li>
+<li id="fn:383">
+<p>Another thing <a class="footnote-backref" href="#fnref:383" rev="footnote" title="Jump back to footnote 383 in the text">↩</a></p>
+</li>
+<li id="fn:384">
+<p>Another thing <a class="footnote-backref" href="#fnref:384" rev="footnote" title="Jump back to footnote 384 in the text">↩</a></p>
+</li>
+<li id="fn:385">
+<p>Another thing <a class="footnote-backref" href="#fnref:385" rev="footnote" title="Jump back to footnote 385 in the text">↩</a></p>
+</li>
+<li id="fn:386">
+<p>Another thing <a class="footnote-backref" href="#fnref:386" rev="footnote" title="Jump back to footnote 386 in the text">↩</a></p>
+</li>
+<li id="fn:387">
+<p>Another thing <a class="footnote-backref" href="#fnref:387" rev="footnote" title="Jump back to footnote 387 in the text">↩</a></p>
+</li>
+<li id="fn:388">
+<p>Another thing <a class="footnote-backref" href="#fnref:388" rev="footnote" title="Jump back to footnote 388 in the text">↩</a></p>
+</li>
+<li id="fn:389">
+<p>Another thing <a class="footnote-backref" href="#fnref:389" rev="footnote" title="Jump back to footnote 389 in the text">↩</a></p>
+</li>
+<li id="fn:390">
+<p>Another thing <a class="footnote-backref" href="#fnref:390" rev="footnote" title="Jump back to footnote 390 in the text">↩</a></p>
+</li>
+<li id="fn:391">
+<p>Another thing <a class="footnote-backref" href="#fnref:391" rev="footnote" title="Jump back to footnote 391 in the text">↩</a></p>
+</li>
+<li id="fn:392">
+<p>Another thing <a class="footnote-backref" href="#fnref:392" rev="footnote" title="Jump back to footnote 392 in the text">↩</a></p>
+</li>
+<li id="fn:393">
+<p>Another thing <a class="footnote-backref" href="#fnref:393" rev="footnote" title="Jump back to footnote 393 in the text">↩</a></p>
+</li>
+<li id="fn:394">
+<p>Another thing <a class="footnote-backref" href="#fnref:394" rev="footnote" title="Jump back to footnote 394 in the text">↩</a></p>
+</li>
+<li id="fn:395">
+<p>Another thing <a class="footnote-backref" href="#fnref:395" rev="footnote" title="Jump back to footnote 395 in the text">↩</a></p>
+</li>
+<li id="fn:396">
+<p>Another thing <a class="footnote-backref" href="#fnref:396" rev="footnote" title="Jump back to footnote 396 in the text">↩</a></p>
+</li>
+<li id="fn:397">
+<p>Another thing <a class="footnote-backref" href="#fnref:397" rev="footnote" title="Jump back to footnote 397 in the text">↩</a></p>
+</li>
+<li id="fn:398">
+<p>Another thing <a class="footnote-backref" href="#fnref:398" rev="footnote" title="Jump back to footnote 398 in the text">↩</a></p>
+</li>
+<li id="fn:399">
+<p>Another thing <a class="footnote-backref" href="#fnref:399" rev="footnote" title="Jump back to footnote 399 in the text">↩</a></p>
+</li>
+<li id="fn:400">
+<p>Another thing <a class="footnote-backref" href="#fnref:400" rev="footnote" title="Jump back to footnote 400 in the text">↩</a></p>
+</li>
+<li id="fn:401">
+<p>Another thing <a class="footnote-backref" href="#fnref:401" rev="footnote" title="Jump back to footnote 401 in the text">↩</a></p>
+</li>
+<li id="fn:402">
+<p>Another thing <a class="footnote-backref" href="#fnref:402" rev="footnote" title="Jump back to footnote 402 in the text">↩</a></p>
+</li>
+<li id="fn:403">
+<p>Another thing <a class="footnote-backref" href="#fnref:403" rev="footnote" title="Jump back to footnote 403 in the text">↩</a></p>
+</li>
+<li id="fn:404">
+<p>Another thing <a class="footnote-backref" href="#fnref:404" rev="footnote" title="Jump back to footnote 404 in the text">↩</a></p>
+</li>
+<li id="fn:405">
+<p>Another thing <a class="footnote-backref" href="#fnref:405" rev="footnote" title="Jump back to footnote 405 in the text">↩</a></p>
+</li>
+<li id="fn:406">
+<p>Another thing <a class="footnote-backref" href="#fnref:406" rev="footnote" title="Jump back to footnote 406 in the text">↩</a></p>
+</li>
+<li id="fn:407">
+<p>Another thing <a class="footnote-backref" href="#fnref:407" rev="footnote" title="Jump back to footnote 407 in the text">↩</a></p>
+</li>
+<li id="fn:408">
+<p>Another thing <a class="footnote-backref" href="#fnref:408" rev="footnote" title="Jump back to footnote 408 in the text">↩</a></p>
+</li>
+<li id="fn:409">
+<p>Another thing <a class="footnote-backref" href="#fnref:409" rev="footnote" title="Jump back to footnote 409 in the text">↩</a></p>
+</li>
+<li id="fn:410">
+<p>Another thing <a class="footnote-backref" href="#fnref:410" rev="footnote" title="Jump back to footnote 410 in the text">↩</a></p>
+</li>
+<li id="fn:411">
+<p>Another thing <a class="footnote-backref" href="#fnref:411" rev="footnote" title="Jump back to footnote 411 in the text">↩</a></p>
+</li>
+<li id="fn:412">
+<p>Another thing <a class="footnote-backref" href="#fnref:412" rev="footnote" title="Jump back to footnote 412 in the text">↩</a></p>
+</li>
+<li id="fn:413">
+<p>Another thing <a class="footnote-backref" href="#fnref:413" rev="footnote" title="Jump back to footnote 413 in the text">↩</a></p>
+</li>
+<li id="fn:414">
+<p>Another thing <a class="footnote-backref" href="#fnref:414" rev="footnote" title="Jump back to footnote 414 in the text">↩</a></p>
+</li>
+<li id="fn:415">
+<p>Another thing <a class="footnote-backref" href="#fnref:415" rev="footnote" title="Jump back to footnote 415 in the text">↩</a></p>
+</li>
+<li id="fn:416">
+<p>Another thing <a class="footnote-backref" href="#fnref:416" rev="footnote" title="Jump back to footnote 416 in the text">↩</a></p>
+</li>
+<li id="fn:417">
+<p>Another thing <a class="footnote-backref" href="#fnref:417" rev="footnote" title="Jump back to footnote 417 in the text">↩</a></p>
+</li>
+<li id="fn:418">
+<p>Another thing <a class="footnote-backref" href="#fnref:418" rev="footnote" title="Jump back to footnote 418 in the text">↩</a></p>
+</li>
+<li id="fn:419">
+<p>Another thing <a class="footnote-backref" href="#fnref:419" rev="footnote" title="Jump back to footnote 419 in the text">↩</a></p>
+</li>
+<li id="fn:420">
+<p>Another thing <a class="footnote-backref" href="#fnref:420" rev="footnote" title="Jump back to footnote 420 in the text">↩</a></p>
+</li>
+<li id="fn:421">
+<p>Another thing <a class="footnote-backref" href="#fnref:421" rev="footnote" title="Jump back to footnote 421 in the text">↩</a></p>
+</li>
+<li id="fn:422">
+<p>Another thing <a class="footnote-backref" href="#fnref:422" rev="footnote" title="Jump back to footnote 422 in the text">↩</a></p>
+</li>
+<li id="fn:423">
+<p>Another thing <a class="footnote-backref" href="#fnref:423" rev="footnote" title="Jump back to footnote 423 in the text">↩</a></p>
+</li>
+<li id="fn:424">
+<p>Another thing <a class="footnote-backref" href="#fnref:424" rev="footnote" title="Jump back to footnote 424 in the text">↩</a></p>
+</li>
+<li id="fn:425">
+<p>Another thing <a class="footnote-backref" href="#fnref:425" rev="footnote" title="Jump back to footnote 425 in the text">↩</a></p>
+</li>
+<li id="fn:426">
+<p>Another thing <a class="footnote-backref" href="#fnref:426" rev="footnote" title="Jump back to footnote 426 in the text">↩</a></p>
+</li>
+<li id="fn:427">
+<p>Another thing <a class="footnote-backref" href="#fnref:427" rev="footnote" title="Jump back to footnote 427 in the text">↩</a></p>
+</li>
+<li id="fn:428">
+<p>Another thing <a class="footnote-backref" href="#fnref:428" rev="footnote" title="Jump back to footnote 428 in the text">↩</a></p>
+</li>
+<li id="fn:429">
+<p>Another thing <a class="footnote-backref" href="#fnref:429" rev="footnote" title="Jump back to footnote 429 in the text">↩</a></p>
+</li>
+<li id="fn:430">
+<p>Another thing <a class="footnote-backref" href="#fnref:430" rev="footnote" title="Jump back to footnote 430 in the text">↩</a></p>
+</li>
+<li id="fn:431">
+<p>Another thing <a class="footnote-backref" href="#fnref:431" rev="footnote" title="Jump back to footnote 431 in the text">↩</a></p>
+</li>
+<li id="fn:432">
+<p>Another thing <a class="footnote-backref" href="#fnref:432" rev="footnote" title="Jump back to footnote 432 in the text">↩</a></p>
+</li>
+<li id="fn:433">
+<p>Another thing <a class="footnote-backref" href="#fnref:433" rev="footnote" title="Jump back to footnote 433 in the text">↩</a></p>
+</li>
+<li id="fn:434">
+<p>Another thing <a class="footnote-backref" href="#fnref:434" rev="footnote" title="Jump back to footnote 434 in the text">↩</a></p>
+</li>
+<li id="fn:435">
+<p>Another thing <a class="footnote-backref" href="#fnref:435" rev="footnote" title="Jump back to footnote 435 in the text">↩</a></p>
+</li>
+<li id="fn:436">
+<p>Another thing <a class="footnote-backref" href="#fnref:436" rev="footnote" title="Jump back to footnote 436 in the text">↩</a></p>
+</li>
+<li id="fn:437">
+<p>Another thing <a class="footnote-backref" href="#fnref:437" rev="footnote" title="Jump back to footnote 437 in the text">↩</a></p>
+</li>
+<li id="fn:438">
+<p>Another thing <a class="footnote-backref" href="#fnref:438" rev="footnote" title="Jump back to footnote 438 in the text">↩</a></p>
+</li>
+<li id="fn:439">
+<p>Another thing <a class="footnote-backref" href="#fnref:439" rev="footnote" title="Jump back to footnote 439 in the text">↩</a></p>
+</li>
+<li id="fn:440">
+<p>Another thing <a class="footnote-backref" href="#fnref:440" rev="footnote" title="Jump back to footnote 440 in the text">↩</a></p>
+</li>
+<li id="fn:441">
+<p>Another thing <a class="footnote-backref" href="#fnref:441" rev="footnote" title="Jump back to footnote 441 in the text">↩</a></p>
+</li>
+<li id="fn:442">
+<p>Another thing <a class="footnote-backref" href="#fnref:442" rev="footnote" title="Jump back to footnote 442 in the text">↩</a></p>
+</li>
+<li id="fn:443">
+<p>Another thing <a class="footnote-backref" href="#fnref:443" rev="footnote" title="Jump back to footnote 443 in the text">↩</a></p>
+</li>
+<li id="fn:444">
+<p>Another thing <a class="footnote-backref" href="#fnref:444" rev="footnote" title="Jump back to footnote 444 in the text">↩</a></p>
+</li>
+<li id="fn:445">
+<p>Another thing <a class="footnote-backref" href="#fnref:445" rev="footnote" title="Jump back to footnote 445 in the text">↩</a></p>
+</li>
+<li id="fn:446">
+<p>Another thing <a class="footnote-backref" href="#fnref:446" rev="footnote" title="Jump back to footnote 446 in the text">↩</a></p>
+</li>
+<li id="fn:447">
+<p>Another thing <a class="footnote-backref" href="#fnref:447" rev="footnote" title="Jump back to footnote 447 in the text">↩</a></p>
+</li>
+<li id="fn:448">
+<p>Another thing <a class="footnote-backref" href="#fnref:448" rev="footnote" title="Jump back to footnote 448 in the text">↩</a></p>
+</li>
+<li id="fn:449">
+<p>Another thing <a class="footnote-backref" href="#fnref:449" rev="footnote" title="Jump back to footnote 449 in the text">↩</a></p>
+</li>
+<li id="fn:450">
+<p>Another thing <a class="footnote-backref" href="#fnref:450" rev="footnote" title="Jump back to footnote 450 in the text">↩</a></p>
+</li>
+<li id="fn:451">
+<p>Another thing <a class="footnote-backref" href="#fnref:451" rev="footnote" title="Jump back to footnote 451 in the text">↩</a></p>
+</li>
+<li id="fn:452">
+<p>Another thing <a class="footnote-backref" href="#fnref:452" rev="footnote" title="Jump back to footnote 452 in the text">↩</a></p>
+</li>
+<li id="fn:453">
+<p>Another thing <a class="footnote-backref" href="#fnref:453" rev="footnote" title="Jump back to footnote 453 in the text">↩</a></p>
+</li>
+<li id="fn:454">
+<p>Another thing <a class="footnote-backref" href="#fnref:454" rev="footnote" title="Jump back to footnote 454 in the text">↩</a></p>
+</li>
+<li id="fn:455">
+<p>Another thing <a class="footnote-backref" href="#fnref:455" rev="footnote" title="Jump back to footnote 455 in the text">↩</a></p>
+</li>
+<li id="fn:456">
+<p>Another thing <a class="footnote-backref" href="#fnref:456" rev="footnote" title="Jump back to footnote 456 in the text">↩</a></p>
+</li>
+<li id="fn:457">
+<p>Another thing <a class="footnote-backref" href="#fnref:457" rev="footnote" title="Jump back to footnote 457 in the text">↩</a></p>
+</li>
+<li id="fn:458">
+<p>Another thing <a class="footnote-backref" href="#fnref:458" rev="footnote" title="Jump back to footnote 458 in the text">↩</a></p>
+</li>
+<li id="fn:459">
+<p>Another thing <a class="footnote-backref" href="#fnref:459" rev="footnote" title="Jump back to footnote 459 in the text">↩</a></p>
+</li>
+<li id="fn:460">
+<p>Another thing <a class="footnote-backref" href="#fnref:460" rev="footnote" title="Jump back to footnote 460 in the text">↩</a></p>
+</li>
+<li id="fn:461">
+<p>Another thing <a class="footnote-backref" href="#fnref:461" rev="footnote" title="Jump back to footnote 461 in the text">↩</a></p>
+</li>
+<li id="fn:462">
+<p>Another thing <a class="footnote-backref" href="#fnref:462" rev="footnote" title="Jump back to footnote 462 in the text">↩</a></p>
+</li>
+<li id="fn:463">
+<p>Another thing <a class="footnote-backref" href="#fnref:463" rev="footnote" title="Jump back to footnote 463 in the text">↩</a></p>
+</li>
+<li id="fn:464">
+<p>Another thing <a class="footnote-backref" href="#fnref:464" rev="footnote" title="Jump back to footnote 464 in the text">↩</a></p>
+</li>
+<li id="fn:465">
+<p>Another thing <a class="footnote-backref" href="#fnref:465" rev="footnote" title="Jump back to footnote 465 in the text">↩</a></p>
+</li>
+<li id="fn:466">
+<p>Another thing <a class="footnote-backref" href="#fnref:466" rev="footnote" title="Jump back to footnote 466 in the text">↩</a></p>
+</li>
+<li id="fn:467">
+<p>Another thing <a class="footnote-backref" href="#fnref:467" rev="footnote" title="Jump back to footnote 467 in the text">↩</a></p>
+</li>
+<li id="fn:468">
+<p>Another thing <a class="footnote-backref" href="#fnref:468" rev="footnote" title="Jump back to footnote 468 in the text">↩</a></p>
+</li>
+<li id="fn:469">
+<p>Another thing <a class="footnote-backref" href="#fnref:469" rev="footnote" title="Jump back to footnote 469 in the text">↩</a></p>
+</li>
+<li id="fn:470">
+<p>Another thing <a class="footnote-backref" href="#fnref:470" rev="footnote" title="Jump back to footnote 470 in the text">↩</a></p>
+</li>
+<li id="fn:471">
+<p>Another thing <a class="footnote-backref" href="#fnref:471" rev="footnote" title="Jump back to footnote 471 in the text">↩</a></p>
+</li>
+<li id="fn:472">
+<p>Another thing <a class="footnote-backref" href="#fnref:472" rev="footnote" title="Jump back to footnote 472 in the text">↩</a></p>
+</li>
+<li id="fn:473">
+<p>Another thing <a class="footnote-backref" href="#fnref:473" rev="footnote" title="Jump back to footnote 473 in the text">↩</a></p>
+</li>
+<li id="fn:474">
+<p>Another thing <a class="footnote-backref" href="#fnref:474" rev="footnote" title="Jump back to footnote 474 in the text">↩</a></p>
+</li>
+<li id="fn:475">
+<p>Another thing <a class="footnote-backref" href="#fnref:475" rev="footnote" title="Jump back to footnote 475 in the text">↩</a></p>
+</li>
+<li id="fn:476">
+<p>Another thing <a class="footnote-backref" href="#fnref:476" rev="footnote" title="Jump back to footnote 476 in the text">↩</a></p>
+</li>
+<li id="fn:477">
+<p>Another thing <a class="footnote-backref" href="#fnref:477" rev="footnote" title="Jump back to footnote 477 in the text">↩</a></p>
+</li>
+<li id="fn:478">
+<p>Another thing <a class="footnote-backref" href="#fnref:478" rev="footnote" title="Jump back to footnote 478 in the text">↩</a></p>
+</li>
+<li id="fn:479">
+<p>Another thing <a class="footnote-backref" href="#fnref:479" rev="footnote" title="Jump back to footnote 479 in the text">↩</a></p>
+</li>
+<li id="fn:480">
+<p>Another thing <a class="footnote-backref" href="#fnref:480" rev="footnote" title="Jump back to footnote 480 in the text">↩</a></p>
+</li>
+<li id="fn:481">
+<p>Another thing <a class="footnote-backref" href="#fnref:481" rev="footnote" title="Jump back to footnote 481 in the text">↩</a></p>
+</li>
+<li id="fn:482">
+<p>Another thing <a class="footnote-backref" href="#fnref:482" rev="footnote" title="Jump back to footnote 482 in the text">↩</a></p>
+</li>
+<li id="fn:483">
+<p>Another thing <a class="footnote-backref" href="#fnref:483" rev="footnote" title="Jump back to footnote 483 in the text">↩</a></p>
+</li>
+<li id="fn:484">
+<p>Another thing <a class="footnote-backref" href="#fnref:484" rev="footnote" title="Jump back to footnote 484 in the text">↩</a></p>
+</li>
+<li id="fn:485">
+<p>Another thing <a class="footnote-backref" href="#fnref:485" rev="footnote" title="Jump back to footnote 485 in the text">↩</a></p>
+</li>
+<li id="fn:486">
+<p>Another thing <a class="footnote-backref" href="#fnref:486" rev="footnote" title="Jump back to footnote 486 in the text">↩</a></p>
+</li>
+<li id="fn:487">
+<p>Another thing <a class="footnote-backref" href="#fnref:487" rev="footnote" title="Jump back to footnote 487 in the text">↩</a></p>
+</li>
+<li id="fn:488">
+<p>Another thing <a class="footnote-backref" href="#fnref:488" rev="footnote" title="Jump back to footnote 488 in the text">↩</a></p>
+</li>
+<li id="fn:489">
+<p>Another thing <a class="footnote-backref" href="#fnref:489" rev="footnote" title="Jump back to footnote 489 in the text">↩</a></p>
+</li>
+<li id="fn:490">
+<p>Another thing <a class="footnote-backref" href="#fnref:490" rev="footnote" title="Jump back to footnote 490 in the text">↩</a></p>
+</li>
+<li id="fn:491">
+<p>Another thing <a class="footnote-backref" href="#fnref:491" rev="footnote" title="Jump back to footnote 491 in the text">↩</a></p>
+</li>
+<li id="fn:492">
+<p>Another thing <a class="footnote-backref" href="#fnref:492" rev="footnote" title="Jump back to footnote 492 in the text">↩</a></p>
+</li>
+<li id="fn:493">
+<p>Another thing <a class="footnote-backref" href="#fnref:493" rev="footnote" title="Jump back to footnote 493 in the text">↩</a></p>
+</li>
+<li id="fn:494">
+<p>Another thing <a class="footnote-backref" href="#fnref:494" rev="footnote" title="Jump back to footnote 494 in the text">↩</a></p>
+</li>
+<li id="fn:495">
+<p>Another thing <a class="footnote-backref" href="#fnref:495" rev="footnote" title="Jump back to footnote 495 in the text">↩</a></p>
+</li>
+<li id="fn:496">
+<p>Another thing <a class="footnote-backref" href="#fnref:496" rev="footnote" title="Jump back to footnote 496 in the text">↩</a></p>
+</li>
+<li id="fn:497">
+<p>Another thing <a class="footnote-backref" href="#fnref:497" rev="footnote" title="Jump back to footnote 497 in the text">↩</a></p>
+</li>
+<li id="fn:498">
+<p>Another thing <a class="footnote-backref" href="#fnref:498" rev="footnote" title="Jump back to footnote 498 in the text">↩</a></p>
+</li>
+<li id="fn:499">
+<p>Another thing <a class="footnote-backref" href="#fnref:499" rev="footnote" title="Jump back to footnote 499 in the text">↩</a></p>
+</li>
+<li id="fn:500">
+<p>Another thing <a class="footnote-backref" href="#fnref:500" rev="footnote" title="Jump back to footnote 500 in the text">↩</a></p>
+</li>
+<li id="fn:501">
+<p>Another thing <a class="footnote-backref" href="#fnref:501" rev="footnote" title="Jump back to footnote 501 in the text">↩</a></p>
+</li>
+<li id="fn:502">
+<p>Another thing <a class="footnote-backref" href="#fnref:502" rev="footnote" title="Jump back to footnote 502 in the text">↩</a></p>
+</li>
+<li id="fn:503">
+<p>Another thing <a class="footnote-backref" href="#fnref:503" rev="footnote" title="Jump back to footnote 503 in the text">↩</a></p>
+</li>
+<li id="fn:504">
+<p>Another thing <a class="footnote-backref" href="#fnref:504" rev="footnote" title="Jump back to footnote 504 in the text">↩</a></p>
+</li>
+<li id="fn:505">
+<p>Another thing <a class="footnote-backref" href="#fnref:505" rev="footnote" title="Jump back to footnote 505 in the text">↩</a></p>
+</li>
+<li id="fn:506">
+<p>Another thing <a class="footnote-backref" href="#fnref:506" rev="footnote" title="Jump back to footnote 506 in the text">↩</a></p>
+</li>
+<li id="fn:507">
+<p>Another thing <a class="footnote-backref" href="#fnref:507" rev="footnote" title="Jump back to footnote 507 in the text">↩</a></p>
+</li>
+<li id="fn:508">
+<p>Another thing <a class="footnote-backref" href="#fnref:508" rev="footnote" title="Jump back to footnote 508 in the text">↩</a></p>
+</li>
+<li id="fn:509">
+<p>Another thing <a class="footnote-backref" href="#fnref:509" rev="footnote" title="Jump back to footnote 509 in the text">↩</a></p>
+</li>
+<li id="fn:510">
+<p>Another thing <a class="footnote-backref" href="#fnref:510" rev="footnote" title="Jump back to footnote 510 in the text">↩</a></p>
+</li>
+<li id="fn:511">
+<p>Another thing <a class="footnote-backref" href="#fnref:511" rev="footnote" title="Jump back to footnote 511 in the text">↩</a></p>
+</li>
+<li id="fn:512">
+<p>Another thing <a class="footnote-backref" href="#fnref:512" rev="footnote" title="Jump back to footnote 512 in the text">↩</a></p>
+</li>
+<li id="fn:513">
+<p>Another thing <a class="footnote-backref" href="#fnref:513" rev="footnote" title="Jump back to footnote 513 in the text">↩</a></p>
+</li>
+<li id="fn:514">
+<p>Another thing <a class="footnote-backref" href="#fnref:514" rev="footnote" title="Jump back to footnote 514 in the text">↩</a></p>
+</li>
+<li id="fn:515">
+<p>Another thing <a class="footnote-backref" href="#fnref:515" rev="footnote" title="Jump back to footnote 515 in the text">↩</a></p>
+</li>
+<li id="fn:516">
+<p>Another thing <a class="footnote-backref" href="#fnref:516" rev="footnote" title="Jump back to footnote 516 in the text">↩</a></p>
+</li>
+<li id="fn:517">
+<p>Another thing <a class="footnote-backref" href="#fnref:517" rev="footnote" title="Jump back to footnote 517 in the text">↩</a></p>
+</li>
+<li id="fn:518">
+<p>Another thing <a class="footnote-backref" href="#fnref:518" rev="footnote" title="Jump back to footnote 518 in the text">↩</a></p>
+</li>
+<li id="fn:519">
+<p>Another thing <a class="footnote-backref" href="#fnref:519" rev="footnote" title="Jump back to footnote 519 in the text">↩</a></p>
+</li>
+<li id="fn:520">
+<p>Another thing <a class="footnote-backref" href="#fnref:520" rev="footnote" title="Jump back to footnote 520 in the text">↩</a></p>
+</li>
+<li id="fn:521">
+<p>Another thing <a class="footnote-backref" href="#fnref:521" rev="footnote" title="Jump back to footnote 521 in the text">↩</a></p>
+</li>
+<li id="fn:522">
+<p>Another thing <a class="footnote-backref" href="#fnref:522" rev="footnote" title="Jump back to footnote 522 in the text">↩</a></p>
+</li>
+<li id="fn:523">
+<p>Another thing <a class="footnote-backref" href="#fnref:523" rev="footnote" title="Jump back to footnote 523 in the text">↩</a></p>
+</li>
+<li id="fn:524">
+<p>Another thing <a class="footnote-backref" href="#fnref:524" rev="footnote" title="Jump back to footnote 524 in the text">↩</a></p>
+</li>
+<li id="fn:525">
+<p>Another thing <a class="footnote-backref" href="#fnref:525" rev="footnote" title="Jump back to footnote 525 in the text">↩</a></p>
+</li>
+<li id="fn:526">
+<p>Another thing <a class="footnote-backref" href="#fnref:526" rev="footnote" title="Jump back to footnote 526 in the text">↩</a></p>
+</li>
+<li id="fn:527">
+<p>Another thing <a class="footnote-backref" href="#fnref:527" rev="footnote" title="Jump back to footnote 527 in the text">↩</a></p>
+</li>
+<li id="fn:528">
+<p>Another thing <a class="footnote-backref" href="#fnref:528" rev="footnote" title="Jump back to footnote 528 in the text">↩</a></p>
+</li>
+<li id="fn:529">
+<p>Another thing <a class="footnote-backref" href="#fnref:529" rev="footnote" title="Jump back to footnote 529 in the text">↩</a></p>
+</li>
+<li id="fn:530">
+<p>Another thing <a class="footnote-backref" href="#fnref:530" rev="footnote" title="Jump back to footnote 530 in the text">↩</a></p>
+</li>
+<li id="fn:531">
+<p>Another thing <a class="footnote-backref" href="#fnref:531" rev="footnote" title="Jump back to footnote 531 in the text">↩</a></p>
+</li>
+<li id="fn:532">
+<p>Another thing <a class="footnote-backref" href="#fnref:532" rev="footnote" title="Jump back to footnote 532 in the text">↩</a></p>
+</li>
+<li id="fn:533">
+<p>Another thing <a class="footnote-backref" href="#fnref:533" rev="footnote" title="Jump back to footnote 533 in the text">↩</a></p>
+</li>
+<li id="fn:534">
+<p>Another thing <a class="footnote-backref" href="#fnref:534" rev="footnote" title="Jump back to footnote 534 in the text">↩</a></p>
+</li>
+<li id="fn:535">
+<p>Another thing <a class="footnote-backref" href="#fnref:535" rev="footnote" title="Jump back to footnote 535 in the text">↩</a></p>
+</li>
+<li id="fn:536">
+<p>Another thing <a class="footnote-backref" href="#fnref:536" rev="footnote" title="Jump back to footnote 536 in the text">↩</a></p>
+</li>
+<li id="fn:537">
+<p>Another thing <a class="footnote-backref" href="#fnref:537" rev="footnote" title="Jump back to footnote 537 in the text">↩</a></p>
+</li>
+<li id="fn:538">
+<p>Another thing <a class="footnote-backref" href="#fnref:538" rev="footnote" title="Jump back to footnote 538 in the text">↩</a></p>
+</li>
+<li id="fn:539">
+<p>Another thing <a class="footnote-backref" href="#fnref:539" rev="footnote" title="Jump back to footnote 539 in the text">↩</a></p>
+</li>
+<li id="fn:540">
+<p>Another thing <a class="footnote-backref" href="#fnref:540" rev="footnote" title="Jump back to footnote 540 in the text">↩</a></p>
+</li>
+<li id="fn:541">
+<p>Another thing <a class="footnote-backref" href="#fnref:541" rev="footnote" title="Jump back to footnote 541 in the text">↩</a></p>
+</li>
+<li id="fn:542">
+<p>Another thing <a class="footnote-backref" href="#fnref:542" rev="footnote" title="Jump back to footnote 542 in the text">↩</a></p>
+</li>
+<li id="fn:543">
+<p>Another thing <a class="footnote-backref" href="#fnref:543" rev="footnote" title="Jump back to footnote 543 in the text">↩</a></p>
+</li>
+<li id="fn:544">
+<p>Another thing <a class="footnote-backref" href="#fnref:544" rev="footnote" title="Jump back to footnote 544 in the text">↩</a></p>
+</li>
+<li id="fn:545">
+<p>Another thing <a class="footnote-backref" href="#fnref:545" rev="footnote" title="Jump back to footnote 545 in the text">↩</a></p>
+</li>
+<li id="fn:546">
+<p>Another thing <a class="footnote-backref" href="#fnref:546" rev="footnote" title="Jump back to footnote 546 in the text">↩</a></p>
+</li>
+<li id="fn:547">
+<p>Another thing <a class="footnote-backref" href="#fnref:547" rev="footnote" title="Jump back to footnote 547 in the text">↩</a></p>
+</li>
+<li id="fn:548">
+<p>Another thing <a class="footnote-backref" href="#fnref:548" rev="footnote" title="Jump back to footnote 548 in the text">↩</a></p>
+</li>
+<li id="fn:549">
+<p>Another thing <a class="footnote-backref" href="#fnref:549" rev="footnote" title="Jump back to footnote 549 in the text">↩</a></p>
+</li>
+<li id="fn:550">
+<p>Another thing <a class="footnote-backref" href="#fnref:550" rev="footnote" title="Jump back to footnote 550 in the text">↩</a></p>
+</li>
+<li id="fn:551">
+<p>Another thing <a class="footnote-backref" href="#fnref:551" rev="footnote" title="Jump back to footnote 551 in the text">↩</a></p>
+</li>
+<li id="fn:552">
+<p>Another thing <a class="footnote-backref" href="#fnref:552" rev="footnote" title="Jump back to footnote 552 in the text">↩</a></p>
+</li>
+<li id="fn:553">
+<p>Another thing <a class="footnote-backref" href="#fnref:553" rev="footnote" title="Jump back to footnote 553 in the text">↩</a></p>
+</li>
+<li id="fn:554">
+<p>Another thing <a class="footnote-backref" href="#fnref:554" rev="footnote" title="Jump back to footnote 554 in the text">↩</a></p>
+</li>
+<li id="fn:555">
+<p>Another thing <a class="footnote-backref" href="#fnref:555" rev="footnote" title="Jump back to footnote 555 in the text">↩</a></p>
+</li>
+<li id="fn:556">
+<p>Another thing <a class="footnote-backref" href="#fnref:556" rev="footnote" title="Jump back to footnote 556 in the text">↩</a></p>
+</li>
+<li id="fn:557">
+<p>Another thing <a class="footnote-backref" href="#fnref:557" rev="footnote" title="Jump back to footnote 557 in the text">↩</a></p>
+</li>
+<li id="fn:558">
+<p>Another thing <a class="footnote-backref" href="#fnref:558" rev="footnote" title="Jump back to footnote 558 in the text">↩</a></p>
+</li>
+<li id="fn:559">
+<p>Another thing <a class="footnote-backref" href="#fnref:559" rev="footnote" title="Jump back to footnote 559 in the text">↩</a></p>
+</li>
+<li id="fn:560">
+<p>Another thing <a class="footnote-backref" href="#fnref:560" rev="footnote" title="Jump back to footnote 560 in the text">↩</a></p>
+</li>
+<li id="fn:561">
+<p>Another thing <a class="footnote-backref" href="#fnref:561" rev="footnote" title="Jump back to footnote 561 in the text">↩</a></p>
+</li>
+<li id="fn:562">
+<p>Another thing <a class="footnote-backref" href="#fnref:562" rev="footnote" title="Jump back to footnote 562 in the text">↩</a></p>
+</li>
+<li id="fn:563">
+<p>Another thing <a class="footnote-backref" href="#fnref:563" rev="footnote" title="Jump back to footnote 563 in the text">↩</a></p>
+</li>
+<li id="fn:564">
+<p>Another thing <a class="footnote-backref" href="#fnref:564" rev="footnote" title="Jump back to footnote 564 in the text">↩</a></p>
+</li>
+<li id="fn:565">
+<p>Another thing <a class="footnote-backref" href="#fnref:565" rev="footnote" title="Jump back to footnote 565 in the text">↩</a></p>
+</li>
+<li id="fn:566">
+<p>Another thing <a class="footnote-backref" href="#fnref:566" rev="footnote" title="Jump back to footnote 566 in the text">↩</a></p>
+</li>
+<li id="fn:567">
+<p>Another thing <a class="footnote-backref" href="#fnref:567" rev="footnote" title="Jump back to footnote 567 in the text">↩</a></p>
+</li>
+<li id="fn:568">
+<p>Another thing <a class="footnote-backref" href="#fnref:568" rev="footnote" title="Jump back to footnote 568 in the text">↩</a></p>
+</li>
+<li id="fn:569">
+<p>Another thing <a class="footnote-backref" href="#fnref:569" rev="footnote" title="Jump back to footnote 569 in the text">↩</a></p>
+</li>
+<li id="fn:570">
+<p>Another thing <a class="footnote-backref" href="#fnref:570" rev="footnote" title="Jump back to footnote 570 in the text">↩</a></p>
+</li>
+<li id="fn:571">
+<p>Another thing <a class="footnote-backref" href="#fnref:571" rev="footnote" title="Jump back to footnote 571 in the text">↩</a></p>
+</li>
+<li id="fn:572">
+<p>Another thing <a class="footnote-backref" href="#fnref:572" rev="footnote" title="Jump back to footnote 572 in the text">↩</a></p>
+</li>
+<li id="fn:573">
+<p>Another thing <a class="footnote-backref" href="#fnref:573" rev="footnote" title="Jump back to footnote 573 in the text">↩</a></p>
+</li>
+<li id="fn:574">
+<p>Another thing <a class="footnote-backref" href="#fnref:574" rev="footnote" title="Jump back to footnote 574 in the text">↩</a></p>
+</li>
+<li id="fn:575">
+<p>Another thing <a class="footnote-backref" href="#fnref:575" rev="footnote" title="Jump back to footnote 575 in the text">↩</a></p>
+</li>
+<li id="fn:576">
+<p>Another thing <a class="footnote-backref" href="#fnref:576" rev="footnote" title="Jump back to footnote 576 in the text">↩</a></p>
+</li>
+<li id="fn:577">
+<p>Another thing <a class="footnote-backref" href="#fnref:577" rev="footnote" title="Jump back to footnote 577 in the text">↩</a></p>
+</li>
+<li id="fn:578">
+<p>Another thing <a class="footnote-backref" href="#fnref:578" rev="footnote" title="Jump back to footnote 578 in the text">↩</a></p>
+</li>
+<li id="fn:579">
+<p>Another thing <a class="footnote-backref" href="#fnref:579" rev="footnote" title="Jump back to footnote 579 in the text">↩</a></p>
+</li>
+<li id="fn:580">
+<p>Another thing <a class="footnote-backref" href="#fnref:580" rev="footnote" title="Jump back to footnote 580 in the text">↩</a></p>
+</li>
+<li id="fn:581">
+<p>Another thing <a class="footnote-backref" href="#fnref:581" rev="footnote" title="Jump back to footnote 581 in the text">↩</a></p>
+</li>
+<li id="fn:582">
+<p>Another thing <a class="footnote-backref" href="#fnref:582" rev="footnote" title="Jump back to footnote 582 in the text">↩</a></p>
+</li>
+<li id="fn:583">
+<p>Another thing <a class="footnote-backref" href="#fnref:583" rev="footnote" title="Jump back to footnote 583 in the text">↩</a></p>
+</li>
+<li id="fn:584">
+<p>Another thing <a class="footnote-backref" href="#fnref:584" rev="footnote" title="Jump back to footnote 584 in the text">↩</a></p>
+</li>
+<li id="fn:585">
+<p>Another thing <a class="footnote-backref" href="#fnref:585" rev="footnote" title="Jump back to footnote 585 in the text">↩</a></p>
+</li>
+<li id="fn:586">
+<p>Another thing <a class="footnote-backref" href="#fnref:586" rev="footnote" title="Jump back to footnote 586 in the text">↩</a></p>
+</li>
+<li id="fn:587">
+<p>Another thing <a class="footnote-backref" href="#fnref:587" rev="footnote" title="Jump back to footnote 587 in the text">↩</a></p>
+</li>
+<li id="fn:588">
+<p>Another thing <a class="footnote-backref" href="#fnref:588" rev="footnote" title="Jump back to footnote 588 in the text">↩</a></p>
+</li>
+<li id="fn:589">
+<p>Another thing <a class="footnote-backref" href="#fnref:589" rev="footnote" title="Jump back to footnote 589 in the text">↩</a></p>
+</li>
+<li id="fn:590">
+<p>Another thing <a class="footnote-backref" href="#fnref:590" rev="footnote" title="Jump back to footnote 590 in the text">↩</a></p>
+</li>
+<li id="fn:591">
+<p>Another thing <a class="footnote-backref" href="#fnref:591" rev="footnote" title="Jump back to footnote 591 in the text">↩</a></p>
+</li>
+<li id="fn:592">
+<p>Another thing <a class="footnote-backref" href="#fnref:592" rev="footnote" title="Jump back to footnote 592 in the text">↩</a></p>
+</li>
+<li id="fn:593">
+<p>Another thing <a class="footnote-backref" href="#fnref:593" rev="footnote" title="Jump back to footnote 593 in the text">↩</a></p>
+</li>
+<li id="fn:594">
+<p>Another thing <a class="footnote-backref" href="#fnref:594" rev="footnote" title="Jump back to footnote 594 in the text">↩</a></p>
+</li>
+<li id="fn:595">
+<p>Another thing <a class="footnote-backref" href="#fnref:595" rev="footnote" title="Jump back to footnote 595 in the text">↩</a></p>
+</li>
+<li id="fn:596">
+<p>Another thing <a class="footnote-backref" href="#fnref:596" rev="footnote" title="Jump back to footnote 596 in the text">↩</a></p>
+</li>
+<li id="fn:597">
+<p>Another thing <a class="footnote-backref" href="#fnref:597" rev="footnote" title="Jump back to footnote 597 in the text">↩</a></p>
+</li>
+<li id="fn:598">
+<p>Another thing <a class="footnote-backref" href="#fnref:598" rev="footnote" title="Jump back to footnote 598 in the text">↩</a></p>
+</li>
+<li id="fn:599">
+<p>Another thing <a class="footnote-backref" href="#fnref:599" rev="footnote" title="Jump back to footnote 599 in the text">↩</a></p>
+</li>
+<li id="fn:600">
+<p>Another thing <a class="footnote-backref" href="#fnref:600" rev="footnote" title="Jump back to footnote 600 in the text">↩</a></p>
+</li>
+<li id="fn:601">
+<p>Another thing <a class="footnote-backref" href="#fnref:601" rev="footnote" title="Jump back to footnote 601 in the text">↩</a></p>
+</li>
+<li id="fn:602">
+<p>Another thing <a class="footnote-backref" href="#fnref:602" rev="footnote" title="Jump back to footnote 602 in the text">↩</a></p>
+</li>
+<li id="fn:603">
+<p>Another thing <a class="footnote-backref" href="#fnref:603" rev="footnote" title="Jump back to footnote 603 in the text">↩</a></p>
+</li>
+<li id="fn:604">
+<p>Another thing <a class="footnote-backref" href="#fnref:604" rev="footnote" title="Jump back to footnote 604 in the text">↩</a></p>
+</li>
+<li id="fn:605">
+<p>Another thing <a class="footnote-backref" href="#fnref:605" rev="footnote" title="Jump back to footnote 605 in the text">↩</a></p>
+</li>
+<li id="fn:606">
+<p>Another thing <a class="footnote-backref" href="#fnref:606" rev="footnote" title="Jump back to footnote 606 in the text">↩</a></p>
+</li>
+<li id="fn:607">
+<p>Another thing <a class="footnote-backref" href="#fnref:607" rev="footnote" title="Jump back to footnote 607 in the text">↩</a></p>
+</li>
+<li id="fn:608">
+<p>Another thing <a class="footnote-backref" href="#fnref:608" rev="footnote" title="Jump back to footnote 608 in the text">↩</a></p>
+</li>
+<li id="fn:609">
+<p>Another thing <a class="footnote-backref" href="#fnref:609" rev="footnote" title="Jump back to footnote 609 in the text">↩</a></p>
+</li>
+<li id="fn:610">
+<p>Another thing <a class="footnote-backref" href="#fnref:610" rev="footnote" title="Jump back to footnote 610 in the text">↩</a></p>
+</li>
+<li id="fn:611">
+<p>Another thing <a class="footnote-backref" href="#fnref:611" rev="footnote" title="Jump back to footnote 611 in the text">↩</a></p>
+</li>
+<li id="fn:612">
+<p>Another thing <a class="footnote-backref" href="#fnref:612" rev="footnote" title="Jump back to footnote 612 in the text">↩</a></p>
+</li>
+<li id="fn:613">
+<p>Another thing <a class="footnote-backref" href="#fnref:613" rev="footnote" title="Jump back to footnote 613 in the text">↩</a></p>
+</li>
+<li id="fn:614">
+<p>Another thing <a class="footnote-backref" href="#fnref:614" rev="footnote" title="Jump back to footnote 614 in the text">↩</a></p>
+</li>
+<li id="fn:615">
+<p>Another thing <a class="footnote-backref" href="#fnref:615" rev="footnote" title="Jump back to footnote 615 in the text">↩</a></p>
+</li>
+<li id="fn:616">
+<p>Another thing <a class="footnote-backref" href="#fnref:616" rev="footnote" title="Jump back to footnote 616 in the text">↩</a></p>
+</li>
+<li id="fn:617">
+<p>Another thing <a class="footnote-backref" href="#fnref:617" rev="footnote" title="Jump back to footnote 617 in the text">↩</a></p>
+</li>
+<li id="fn:618">
+<p>Another thing <a class="footnote-backref" href="#fnref:618" rev="footnote" title="Jump back to footnote 618 in the text">↩</a></p>
+</li>
+<li id="fn:619">
+<p>Another thing <a class="footnote-backref" href="#fnref:619" rev="footnote" title="Jump back to footnote 619 in the text">↩</a></p>
+</li>
+<li id="fn:620">
+<p>Another thing <a class="footnote-backref" href="#fnref:620" rev="footnote" title="Jump back to footnote 620 in the text">↩</a></p>
+</li>
+<li id="fn:621">
+<p>Another thing <a class="footnote-backref" href="#fnref:621" rev="footnote" title="Jump back to footnote 621 in the text">↩</a></p>
+</li>
+<li id="fn:622">
+<p>Another thing <a class="footnote-backref" href="#fnref:622" rev="footnote" title="Jump back to footnote 622 in the text">↩</a></p>
+</li>
+<li id="fn:623">
+<p>Another thing <a class="footnote-backref" href="#fnref:623" rev="footnote" title="Jump back to footnote 623 in the text">↩</a></p>
+</li>
+<li id="fn:624">
+<p>Another thing <a class="footnote-backref" href="#fnref:624" rev="footnote" title="Jump back to footnote 624 in the text">↩</a></p>
+</li>
+<li id="fn:625">
+<p>Another thing <a class="footnote-backref" href="#fnref:625" rev="footnote" title="Jump back to footnote 625 in the text">↩</a></p>
+</li>
+<li id="fn:626">
+<p>Another thing <a class="footnote-backref" href="#fnref:626" rev="footnote" title="Jump back to footnote 626 in the text">↩</a></p>
+</li>
+<li id="fn:627">
+<p>Another thing <a class="footnote-backref" href="#fnref:627" rev="footnote" title="Jump back to footnote 627 in the text">↩</a></p>
+</li>
+<li id="fn:628">
+<p>Another thing <a class="footnote-backref" href="#fnref:628" rev="footnote" title="Jump back to footnote 628 in the text">↩</a></p>
+</li>
+<li id="fn:629">
+<p>Another thing <a class="footnote-backref" href="#fnref:629" rev="footnote" title="Jump back to footnote 629 in the text">↩</a></p>
+</li>
+<li id="fn:630">
+<p>Another thing <a class="footnote-backref" href="#fnref:630" rev="footnote" title="Jump back to footnote 630 in the text">↩</a></p>
+</li>
+<li id="fn:631">
+<p>Another thing <a class="footnote-backref" href="#fnref:631" rev="footnote" title="Jump back to footnote 631 in the text">↩</a></p>
+</li>
+<li id="fn:632">
+<p>Another thing <a class="footnote-backref" href="#fnref:632" rev="footnote" title="Jump back to footnote 632 in the text">↩</a></p>
+</li>
+<li id="fn:633">
+<p>Another thing <a class="footnote-backref" href="#fnref:633" rev="footnote" title="Jump back to footnote 633 in the text">↩</a></p>
+</li>
+<li id="fn:634">
+<p>Another thing <a class="footnote-backref" href="#fnref:634" rev="footnote" title="Jump back to footnote 634 in the text">↩</a></p>
+</li>
+<li id="fn:635">
+<p>Another thing <a class="footnote-backref" href="#fnref:635" rev="footnote" title="Jump back to footnote 635 in the text">↩</a></p>
+</li>
+<li id="fn:636">
+<p>Another thing <a class="footnote-backref" href="#fnref:636" rev="footnote" title="Jump back to footnote 636 in the text">↩</a></p>
+</li>
+<li id="fn:637">
+<p>Another thing <a class="footnote-backref" href="#fnref:637" rev="footnote" title="Jump back to footnote 637 in the text">↩</a></p>
+</li>
+<li id="fn:638">
+<p>Another thing <a class="footnote-backref" href="#fnref:638" rev="footnote" title="Jump back to footnote 638 in the text">↩</a></p>
+</li>
+<li id="fn:639">
+<p>Another thing <a class="footnote-backref" href="#fnref:639" rev="footnote" title="Jump back to footnote 639 in the text">↩</a></p>
+</li>
+<li id="fn:640">
+<p>Another thing <a class="footnote-backref" href="#fnref:640" rev="footnote" title="Jump back to footnote 640 in the text">↩</a></p>
+</li>
+<li id="fn:641">
+<p>Another thing <a class="footnote-backref" href="#fnref:641" rev="footnote" title="Jump back to footnote 641 in the text">↩</a></p>
+</li>
+<li id="fn:642">
+<p>Another thing <a class="footnote-backref" href="#fnref:642" rev="footnote" title="Jump back to footnote 642 in the text">↩</a></p>
+</li>
+<li id="fn:643">
+<p>Another thing <a class="footnote-backref" href="#fnref:643" rev="footnote" title="Jump back to footnote 643 in the text">↩</a></p>
+</li>
+<li id="fn:644">
+<p>Another thing <a class="footnote-backref" href="#fnref:644" rev="footnote" title="Jump back to footnote 644 in the text">↩</a></p>
+</li>
+<li id="fn:645">
+<p>Another thing <a class="footnote-backref" href="#fnref:645" rev="footnote" title="Jump back to footnote 645 in the text">↩</a></p>
+</li>
+<li id="fn:646">
+<p>Another thing <a class="footnote-backref" href="#fnref:646" rev="footnote" title="Jump back to footnote 646 in the text">↩</a></p>
+</li>
+<li id="fn:647">
+<p>Another thing <a class="footnote-backref" href="#fnref:647" rev="footnote" title="Jump back to footnote 647 in the text">↩</a></p>
+</li>
+<li id="fn:648">
+<p>Another thing <a class="footnote-backref" href="#fnref:648" rev="footnote" title="Jump back to footnote 648 in the text">↩</a></p>
+</li>
+<li id="fn:649">
+<p>Another thing <a class="footnote-backref" href="#fnref:649" rev="footnote" title="Jump back to footnote 649 in the text">↩</a></p>
+</li>
+<li id="fn:650">
+<p>Another thing <a class="footnote-backref" href="#fnref:650" rev="footnote" title="Jump back to footnote 650 in the text">↩</a></p>
+</li>
+<li id="fn:651">
+<p>Another thing <a class="footnote-backref" href="#fnref:651" rev="footnote" title="Jump back to footnote 651 in the text">↩</a></p>
+</li>
+<li id="fn:652">
+<p>Another thing <a class="footnote-backref" href="#fnref:652" rev="footnote" title="Jump back to footnote 652 in the text">↩</a></p>
+</li>
+<li id="fn:653">
+<p>Another thing <a class="footnote-backref" href="#fnref:653" rev="footnote" title="Jump back to footnote 653 in the text">↩</a></p>
+</li>
+<li id="fn:654">
+<p>Another thing <a class="footnote-backref" href="#fnref:654" rev="footnote" title="Jump back to footnote 654 in the text">↩</a></p>
+</li>
+<li id="fn:655">
+<p>Another thing <a class="footnote-backref" href="#fnref:655" rev="footnote" title="Jump back to footnote 655 in the text">↩</a></p>
+</li>
+<li id="fn:656">
+<p>Another thing <a class="footnote-backref" href="#fnref:656" rev="footnote" title="Jump back to footnote 656 in the text">↩</a></p>
+</li>
+<li id="fn:657">
+<p>Another thing <a class="footnote-backref" href="#fnref:657" rev="footnote" title="Jump back to footnote 657 in the text">↩</a></p>
+</li>
+<li id="fn:658">
+<p>Another thing <a class="footnote-backref" href="#fnref:658" rev="footnote" title="Jump back to footnote 658 in the text">↩</a></p>
+</li>
+<li id="fn:659">
+<p>Another thing <a class="footnote-backref" href="#fnref:659" rev="footnote" title="Jump back to footnote 659 in the text">↩</a></p>
+</li>
+<li id="fn:660">
+<p>Another thing <a class="footnote-backref" href="#fnref:660" rev="footnote" title="Jump back to footnote 660 in the text">↩</a></p>
+</li>
+<li id="fn:661">
+<p>Another thing <a class="footnote-backref" href="#fnref:661" rev="footnote" title="Jump back to footnote 661 in the text">↩</a></p>
+</li>
+<li id="fn:662">
+<p>Another thing <a class="footnote-backref" href="#fnref:662" rev="footnote" title="Jump back to footnote 662 in the text">↩</a></p>
+</li>
+<li id="fn:663">
+<p>Another thing <a class="footnote-backref" href="#fnref:663" rev="footnote" title="Jump back to footnote 663 in the text">↩</a></p>
+</li>
+<li id="fn:664">
+<p>Another thing <a class="footnote-backref" href="#fnref:664" rev="footnote" title="Jump back to footnote 664 in the text">↩</a></p>
+</li>
+<li id="fn:665">
+<p>Another thing <a class="footnote-backref" href="#fnref:665" rev="footnote" title="Jump back to footnote 665 in the text">↩</a></p>
+</li>
+<li id="fn:666">
+<p>Another thing <a class="footnote-backref" href="#fnref:666" rev="footnote" title="Jump back to footnote 666 in the text">↩</a></p>
+</li>
+<li id="fn:667">
+<p>Another thing <a class="footnote-backref" href="#fnref:667" rev="footnote" title="Jump back to footnote 667 in the text">↩</a></p>
+</li>
+<li id="fn:668">
+<p>Another thing <a class="footnote-backref" href="#fnref:668" rev="footnote" title="Jump back to footnote 668 in the text">↩</a></p>
+</li>
+<li id="fn:669">
+<p>Another thing <a class="footnote-backref" href="#fnref:669" rev="footnote" title="Jump back to footnote 669 in the text">↩</a></p>
+</li>
+<li id="fn:670">
+<p>Another thing <a class="footnote-backref" href="#fnref:670" rev="footnote" title="Jump back to footnote 670 in the text">↩</a></p>
+</li>
+<li id="fn:671">
+<p>Another thing <a class="footnote-backref" href="#fnref:671" rev="footnote" title="Jump back to footnote 671 in the text">↩</a></p>
+</li>
+<li id="fn:672">
+<p>Another thing <a class="footnote-backref" href="#fnref:672" rev="footnote" title="Jump back to footnote 672 in the text">↩</a></p>
+</li>
+<li id="fn:673">
+<p>Another thing <a class="footnote-backref" href="#fnref:673" rev="footnote" title="Jump back to footnote 673 in the text">↩</a></p>
+</li>
+<li id="fn:674">
+<p>Another thing <a class="footnote-backref" href="#fnref:674" rev="footnote" title="Jump back to footnote 674 in the text">↩</a></p>
+</li>
+<li id="fn:675">
+<p>Another thing <a class="footnote-backref" href="#fnref:675" rev="footnote" title="Jump back to footnote 675 in the text">↩</a></p>
+</li>
+<li id="fn:676">
+<p>Another thing <a class="footnote-backref" href="#fnref:676" rev="footnote" title="Jump back to footnote 676 in the text">↩</a></p>
+</li>
+<li id="fn:677">
+<p>Another thing <a class="footnote-backref" href="#fnref:677" rev="footnote" title="Jump back to footnote 677 in the text">↩</a></p>
+</li>
+<li id="fn:678">
+<p>Another thing <a class="footnote-backref" href="#fnref:678" rev="footnote" title="Jump back to footnote 678 in the text">↩</a></p>
+</li>
+<li id="fn:679">
+<p>Another thing <a class="footnote-backref" href="#fnref:679" rev="footnote" title="Jump back to footnote 679 in the text">↩</a></p>
+</li>
+<li id="fn:680">
+<p>Another thing <a class="footnote-backref" href="#fnref:680" rev="footnote" title="Jump back to footnote 680 in the text">↩</a></p>
+</li>
+<li id="fn:681">
+<p>Another thing <a class="footnote-backref" href="#fnref:681" rev="footnote" title="Jump back to footnote 681 in the text">↩</a></p>
+</li>
+<li id="fn:682">
+<p>Another thing <a class="footnote-backref" href="#fnref:682" rev="footnote" title="Jump back to footnote 682 in the text">↩</a></p>
+</li>
+<li id="fn:683">
+<p>Another thing <a class="footnote-backref" href="#fnref:683" rev="footnote" title="Jump back to footnote 683 in the text">↩</a></p>
+</li>
+<li id="fn:684">
+<p>Another thing <a class="footnote-backref" href="#fnref:684" rev="footnote" title="Jump back to footnote 684 in the text">↩</a></p>
+</li>
+<li id="fn:685">
+<p>Another thing <a class="footnote-backref" href="#fnref:685" rev="footnote" title="Jump back to footnote 685 in the text">↩</a></p>
+</li>
+<li id="fn:686">
+<p>Another thing <a class="footnote-backref" href="#fnref:686" rev="footnote" title="Jump back to footnote 686 in the text">↩</a></p>
+</li>
+<li id="fn:687">
+<p>Another thing <a class="footnote-backref" href="#fnref:687" rev="footnote" title="Jump back to footnote 687 in the text">↩</a></p>
+</li>
+<li id="fn:688">
+<p>Another thing <a class="footnote-backref" href="#fnref:688" rev="footnote" title="Jump back to footnote 688 in the text">↩</a></p>
+</li>
+<li id="fn:689">
+<p>Another thing <a class="footnote-backref" href="#fnref:689" rev="footnote" title="Jump back to footnote 689 in the text">↩</a></p>
+</li>
+<li id="fn:690">
+<p>Another thing <a class="footnote-backref" href="#fnref:690" rev="footnote" title="Jump back to footnote 690 in the text">↩</a></p>
+</li>
+<li id="fn:691">
+<p>Another thing <a class="footnote-backref" href="#fnref:691" rev="footnote" title="Jump back to footnote 691 in the text">↩</a></p>
+</li>
+<li id="fn:692">
+<p>Another thing <a class="footnote-backref" href="#fnref:692" rev="footnote" title="Jump back to footnote 692 in the text">↩</a></p>
+</li>
+<li id="fn:693">
+<p>Another thing <a class="footnote-backref" href="#fnref:693" rev="footnote" title="Jump back to footnote 693 in the text">↩</a></p>
+</li>
+<li id="fn:694">
+<p>Another thing <a class="footnote-backref" href="#fnref:694" rev="footnote" title="Jump back to footnote 694 in the text">↩</a></p>
+</li>
+<li id="fn:695">
+<p>Another thing <a class="footnote-backref" href="#fnref:695" rev="footnote" title="Jump back to footnote 695 in the text">↩</a></p>
+</li>
+<li id="fn:696">
+<p>Another thing <a class="footnote-backref" href="#fnref:696" rev="footnote" title="Jump back to footnote 696 in the text">↩</a></p>
+</li>
+<li id="fn:697">
+<p>Another thing <a class="footnote-backref" href="#fnref:697" rev="footnote" title="Jump back to footnote 697 in the text">↩</a></p>
+</li>
+<li id="fn:698">
+<p>Another thing <a class="footnote-backref" href="#fnref:698" rev="footnote" title="Jump back to footnote 698 in the text">↩</a></p>
+</li>
+<li id="fn:699">
+<p>Another thing <a class="footnote-backref" href="#fnref:699" rev="footnote" title="Jump back to footnote 699 in the text">↩</a></p>
+</li>
+<li id="fn:700">
+<p>Another thing <a class="footnote-backref" href="#fnref:700" rev="footnote" title="Jump back to footnote 700 in the text">↩</a></p>
+</li>
+<li id="fn:701">
+<p>Another thing <a class="footnote-backref" href="#fnref:701" rev="footnote" title="Jump back to footnote 701 in the text">↩</a></p>
+</li>
+<li id="fn:702">
+<p>Another thing <a class="footnote-backref" href="#fnref:702" rev="footnote" title="Jump back to footnote 702 in the text">↩</a></p>
+</li>
+<li id="fn:703">
+<p>Another thing <a class="footnote-backref" href="#fnref:703" rev="footnote" title="Jump back to footnote 703 in the text">↩</a></p>
+</li>
+<li id="fn:704">
+<p>Another thing <a class="footnote-backref" href="#fnref:704" rev="footnote" title="Jump back to footnote 704 in the text">↩</a></p>
+</li>
+<li id="fn:705">
+<p>Another thing <a class="footnote-backref" href="#fnref:705" rev="footnote" title="Jump back to footnote 705 in the text">↩</a></p>
+</li>
+<li id="fn:706">
+<p>Another thing <a class="footnote-backref" href="#fnref:706" rev="footnote" title="Jump back to footnote 706 in the text">↩</a></p>
+</li>
+<li id="fn:707">
+<p>Another thing <a class="footnote-backref" href="#fnref:707" rev="footnote" title="Jump back to footnote 707 in the text">↩</a></p>
+</li>
+<li id="fn:708">
+<p>Another thing <a class="footnote-backref" href="#fnref:708" rev="footnote" title="Jump back to footnote 708 in the text">↩</a></p>
+</li>
+<li id="fn:709">
+<p>Another thing <a class="footnote-backref" href="#fnref:709" rev="footnote" title="Jump back to footnote 709 in the text">↩</a></p>
+</li>
+<li id="fn:710">
+<p>Another thing <a class="footnote-backref" href="#fnref:710" rev="footnote" title="Jump back to footnote 710 in the text">↩</a></p>
+</li>
+<li id="fn:711">
+<p>Another thing <a class="footnote-backref" href="#fnref:711" rev="footnote" title="Jump back to footnote 711 in the text">↩</a></p>
+</li>
+<li id="fn:712">
+<p>Another thing <a class="footnote-backref" href="#fnref:712" rev="footnote" title="Jump back to footnote 712 in the text">↩</a></p>
+</li>
+<li id="fn:713">
+<p>Another thing <a class="footnote-backref" href="#fnref:713" rev="footnote" title="Jump back to footnote 713 in the text">↩</a></p>
+</li>
+<li id="fn:714">
+<p>Another thing <a class="footnote-backref" href="#fnref:714" rev="footnote" title="Jump back to footnote 714 in the text">↩</a></p>
+</li>
+<li id="fn:715">
+<p>Another thing <a class="footnote-backref" href="#fnref:715" rev="footnote" title="Jump back to footnote 715 in the text">↩</a></p>
+</li>
+<li id="fn:716">
+<p>Another thing <a class="footnote-backref" href="#fnref:716" rev="footnote" title="Jump back to footnote 716 in the text">↩</a></p>
+</li>
+<li id="fn:717">
+<p>Another thing <a class="footnote-backref" href="#fnref:717" rev="footnote" title="Jump back to footnote 717 in the text">↩</a></p>
+</li>
+<li id="fn:718">
+<p>Another thing <a class="footnote-backref" href="#fnref:718" rev="footnote" title="Jump back to footnote 718 in the text">↩</a></p>
+</li>
+<li id="fn:719">
+<p>Another thing <a class="footnote-backref" href="#fnref:719" rev="footnote" title="Jump back to footnote 719 in the text">↩</a></p>
+</li>
+<li id="fn:720">
+<p>Another thing <a class="footnote-backref" href="#fnref:720" rev="footnote" title="Jump back to footnote 720 in the text">↩</a></p>
+</li>
+<li id="fn:721">
+<p>Another thing <a class="footnote-backref" href="#fnref:721" rev="footnote" title="Jump back to footnote 721 in the text">↩</a></p>
+</li>
+<li id="fn:722">
+<p>Another thing <a class="footnote-backref" href="#fnref:722" rev="footnote" title="Jump back to footnote 722 in the text">↩</a></p>
+</li>
+<li id="fn:723">
+<p>Another thing <a class="footnote-backref" href="#fnref:723" rev="footnote" title="Jump back to footnote 723 in the text">↩</a></p>
+</li>
+<li id="fn:724">
+<p>Another thing <a class="footnote-backref" href="#fnref:724" rev="footnote" title="Jump back to footnote 724 in the text">↩</a></p>
+</li>
+<li id="fn:725">
+<p>Another thing <a class="footnote-backref" href="#fnref:725" rev="footnote" title="Jump back to footnote 725 in the text">↩</a></p>
+</li>
+<li id="fn:726">
+<p>Another thing <a class="footnote-backref" href="#fnref:726" rev="footnote" title="Jump back to footnote 726 in the text">↩</a></p>
+</li>
+<li id="fn:727">
+<p>Another thing <a class="footnote-backref" href="#fnref:727" rev="footnote" title="Jump back to footnote 727 in the text">↩</a></p>
+</li>
+<li id="fn:728">
+<p>Another thing <a class="footnote-backref" href="#fnref:728" rev="footnote" title="Jump back to footnote 728 in the text">↩</a></p>
+</li>
+<li id="fn:729">
+<p>Another thing <a class="footnote-backref" href="#fnref:729" rev="footnote" title="Jump back to footnote 729 in the text">↩</a></p>
+</li>
+<li id="fn:730">
+<p>Another thing <a class="footnote-backref" href="#fnref:730" rev="footnote" title="Jump back to footnote 730 in the text">↩</a></p>
+</li>
+<li id="fn:731">
+<p>Another thing <a class="footnote-backref" href="#fnref:731" rev="footnote" title="Jump back to footnote 731 in the text">↩</a></p>
+</li>
+<li id="fn:732">
+<p>Another thing <a class="footnote-backref" href="#fnref:732" rev="footnote" title="Jump back to footnote 732 in the text">↩</a></p>
+</li>
+<li id="fn:733">
+<p>Another thing <a class="footnote-backref" href="#fnref:733" rev="footnote" title="Jump back to footnote 733 in the text">↩</a></p>
+</li>
+<li id="fn:734">
+<p>Another thing <a class="footnote-backref" href="#fnref:734" rev="footnote" title="Jump back to footnote 734 in the text">↩</a></p>
+</li>
+<li id="fn:735">
+<p>Another thing <a class="footnote-backref" href="#fnref:735" rev="footnote" title="Jump back to footnote 735 in the text">↩</a></p>
+</li>
+<li id="fn:736">
+<p>Another thing <a class="footnote-backref" href="#fnref:736" rev="footnote" title="Jump back to footnote 736 in the text">↩</a></p>
+</li>
+<li id="fn:737">
+<p>Another thing <a class="footnote-backref" href="#fnref:737" rev="footnote" title="Jump back to footnote 737 in the text">↩</a></p>
+</li>
+<li id="fn:738">
+<p>Another thing <a class="footnote-backref" href="#fnref:738" rev="footnote" title="Jump back to footnote 738 in the text">↩</a></p>
+</li>
+<li id="fn:739">
+<p>Another thing <a class="footnote-backref" href="#fnref:739" rev="footnote" title="Jump back to footnote 739 in the text">↩</a></p>
+</li>
+<li id="fn:740">
+<p>Another thing <a class="footnote-backref" href="#fnref:740" rev="footnote" title="Jump back to footnote 740 in the text">↩</a></p>
+</li>
+<li id="fn:741">
+<p>Another thing <a class="footnote-backref" href="#fnref:741" rev="footnote" title="Jump back to footnote 741 in the text">↩</a></p>
+</li>
+<li id="fn:742">
+<p>Another thing <a class="footnote-backref" href="#fnref:742" rev="footnote" title="Jump back to footnote 742 in the text">↩</a></p>
+</li>
+<li id="fn:743">
+<p>Another thing <a class="footnote-backref" href="#fnref:743" rev="footnote" title="Jump back to footnote 743 in the text">↩</a></p>
+</li>
+<li id="fn:744">
+<p>Another thing <a class="footnote-backref" href="#fnref:744" rev="footnote" title="Jump back to footnote 744 in the text">↩</a></p>
+</li>
+<li id="fn:745">
+<p>Another thing <a class="footnote-backref" href="#fnref:745" rev="footnote" title="Jump back to footnote 745 in the text">↩</a></p>
+</li>
+<li id="fn:746">
+<p>Another thing <a class="footnote-backref" href="#fnref:746" rev="footnote" title="Jump back to footnote 746 in the text">↩</a></p>
+</li>
+<li id="fn:747">
+<p>Another thing <a class="footnote-backref" href="#fnref:747" rev="footnote" title="Jump back to footnote 747 in the text">↩</a></p>
+</li>
+<li id="fn:748">
+<p>Another thing <a class="footnote-backref" href="#fnref:748" rev="footnote" title="Jump back to footnote 748 in the text">↩</a></p>
+</li>
+<li id="fn:749">
+<p>Another thing <a class="footnote-backref" href="#fnref:749" rev="footnote" title="Jump back to footnote 749 in the text">↩</a></p>
+</li>
+<li id="fn:750">
+<p>Another thing <a class="footnote-backref" href="#fnref:750" rev="footnote" title="Jump back to footnote 750 in the text">↩</a></p>
+</li>
+<li id="fn:751">
+<p>Another thing <a class="footnote-backref" href="#fnref:751" rev="footnote" title="Jump back to footnote 751 in the text">↩</a></p>
+</li>
+<li id="fn:752">
+<p>Another thing <a class="footnote-backref" href="#fnref:752" rev="footnote" title="Jump back to footnote 752 in the text">↩</a></p>
+</li>
+<li id="fn:753">
+<p>Another thing <a class="footnote-backref" href="#fnref:753" rev="footnote" title="Jump back to footnote 753 in the text">↩</a></p>
+</li>
+<li id="fn:754">
+<p>Another thing <a class="footnote-backref" href="#fnref:754" rev="footnote" title="Jump back to footnote 754 in the text">↩</a></p>
+</li>
+<li id="fn:755">
+<p>Another thing <a class="footnote-backref" href="#fnref:755" rev="footnote" title="Jump back to footnote 755 in the text">↩</a></p>
+</li>
+<li id="fn:756">
+<p>Another thing <a class="footnote-backref" href="#fnref:756" rev="footnote" title="Jump back to footnote 756 in the text">↩</a></p>
+</li>
+<li id="fn:757">
+<p>Another thing <a class="footnote-backref" href="#fnref:757" rev="footnote" title="Jump back to footnote 757 in the text">↩</a></p>
+</li>
+<li id="fn:758">
+<p>Another thing <a class="footnote-backref" href="#fnref:758" rev="footnote" title="Jump back to footnote 758 in the text">↩</a></p>
+</li>
+<li id="fn:759">
+<p>Another thing <a class="footnote-backref" href="#fnref:759" rev="footnote" title="Jump back to footnote 759 in the text">↩</a></p>
+</li>
+<li id="fn:760">
+<p>Another thing <a class="footnote-backref" href="#fnref:760" rev="footnote" title="Jump back to footnote 760 in the text">↩</a></p>
+</li>
+<li id="fn:761">
+<p>Another thing <a class="footnote-backref" href="#fnref:761" rev="footnote" title="Jump back to footnote 761 in the text">↩</a></p>
+</li>
+<li id="fn:762">
+<p>Another thing <a class="footnote-backref" href="#fnref:762" rev="footnote" title="Jump back to footnote 762 in the text">↩</a></p>
+</li>
+<li id="fn:763">
+<p>Another thing <a class="footnote-backref" href="#fnref:763" rev="footnote" title="Jump back to footnote 763 in the text">↩</a></p>
+</li>
+<li id="fn:764">
+<p>Another thing <a class="footnote-backref" href="#fnref:764" rev="footnote" title="Jump back to footnote 764 in the text">↩</a></p>
+</li>
+<li id="fn:765">
+<p>Another thing <a class="footnote-backref" href="#fnref:765" rev="footnote" title="Jump back to footnote 765 in the text">↩</a></p>
+</li>
+<li id="fn:766">
+<p>Another thing <a class="footnote-backref" href="#fnref:766" rev="footnote" title="Jump back to footnote 766 in the text">↩</a></p>
+</li>
+<li id="fn:767">
+<p>Another thing <a class="footnote-backref" href="#fnref:767" rev="footnote" title="Jump back to footnote 767 in the text">↩</a></p>
+</li>
+<li id="fn:768">
+<p>Another thing <a class="footnote-backref" href="#fnref:768" rev="footnote" title="Jump back to footnote 768 in the text">↩</a></p>
+</li>
+<li id="fn:769">
+<p>Another thing <a class="footnote-backref" href="#fnref:769" rev="footnote" title="Jump back to footnote 769 in the text">↩</a></p>
+</li>
+<li id="fn:770">
+<p>Another thing <a class="footnote-backref" href="#fnref:770" rev="footnote" title="Jump back to footnote 770 in the text">↩</a></p>
+</li>
+<li id="fn:771">
+<p>Another thing <a class="footnote-backref" href="#fnref:771" rev="footnote" title="Jump back to footnote 771 in the text">↩</a></p>
+</li>
+<li id="fn:772">
+<p>Another thing <a class="footnote-backref" href="#fnref:772" rev="footnote" title="Jump back to footnote 772 in the text">↩</a></p>
+</li>
+<li id="fn:773">
+<p>Another thing <a class="footnote-backref" href="#fnref:773" rev="footnote" title="Jump back to footnote 773 in the text">↩</a></p>
+</li>
+<li id="fn:774">
+<p>Another thing <a class="footnote-backref" href="#fnref:774" rev="footnote" title="Jump back to footnote 774 in the text">↩</a></p>
+</li>
+<li id="fn:775">
+<p>Another thing <a class="footnote-backref" href="#fnref:775" rev="footnote" title="Jump back to footnote 775 in the text">↩</a></p>
+</li>
+<li id="fn:776">
+<p>Another thing <a class="footnote-backref" href="#fnref:776" rev="footnote" title="Jump back to footnote 776 in the text">↩</a></p>
+</li>
+<li id="fn:777">
+<p>Another thing <a class="footnote-backref" href="#fnref:777" rev="footnote" title="Jump back to footnote 777 in the text">↩</a></p>
+</li>
+<li id="fn:778">
+<p>Another thing <a class="footnote-backref" href="#fnref:778" rev="footnote" title="Jump back to footnote 778 in the text">↩</a></p>
+</li>
+<li id="fn:779">
+<p>Another thing <a class="footnote-backref" href="#fnref:779" rev="footnote" title="Jump back to footnote 779 in the text">↩</a></p>
+</li>
+<li id="fn:780">
+<p>Another thing <a class="footnote-backref" href="#fnref:780" rev="footnote" title="Jump back to footnote 780 in the text">↩</a></p>
+</li>
+<li id="fn:781">
+<p>Another thing <a class="footnote-backref" href="#fnref:781" rev="footnote" title="Jump back to footnote 781 in the text">↩</a></p>
+</li>
+<li id="fn:782">
+<p>Another thing <a class="footnote-backref" href="#fnref:782" rev="footnote" title="Jump back to footnote 782 in the text">↩</a></p>
+</li>
+<li id="fn:783">
+<p>Another thing <a class="footnote-backref" href="#fnref:783" rev="footnote" title="Jump back to footnote 783 in the text">↩</a></p>
+</li>
+<li id="fn:784">
+<p>Another thing <a class="footnote-backref" href="#fnref:784" rev="footnote" title="Jump back to footnote 784 in the text">↩</a></p>
+</li>
+<li id="fn:785">
+<p>Another thing <a class="footnote-backref" href="#fnref:785" rev="footnote" title="Jump back to footnote 785 in the text">↩</a></p>
+</li>
+<li id="fn:786">
+<p>Another thing <a class="footnote-backref" href="#fnref:786" rev="footnote" title="Jump back to footnote 786 in the text">↩</a></p>
+</li>
+<li id="fn:787">
+<p>Another thing <a class="footnote-backref" href="#fnref:787" rev="footnote" title="Jump back to footnote 787 in the text">↩</a></p>
+</li>
+<li id="fn:788">
+<p>Another thing <a class="footnote-backref" href="#fnref:788" rev="footnote" title="Jump back to footnote 788 in the text">↩</a></p>
+</li>
+<li id="fn:789">
+<p>Another thing <a class="footnote-backref" href="#fnref:789" rev="footnote" title="Jump back to footnote 789 in the text">↩</a></p>
+</li>
+<li id="fn:790">
+<p>Another thing <a class="footnote-backref" href="#fnref:790" rev="footnote" title="Jump back to footnote 790 in the text">↩</a></p>
+</li>
+<li id="fn:791">
+<p>Another thing <a class="footnote-backref" href="#fnref:791" rev="footnote" title="Jump back to footnote 791 in the text">↩</a></p>
+</li>
+<li id="fn:792">
+<p>Another thing <a class="footnote-backref" href="#fnref:792" rev="footnote" title="Jump back to footnote 792 in the text">↩</a></p>
+</li>
+<li id="fn:793">
+<p>Another thing <a class="footnote-backref" href="#fnref:793" rev="footnote" title="Jump back to footnote 793 in the text">↩</a></p>
+</li>
+<li id="fn:794">
+<p>Another thing <a class="footnote-backref" href="#fnref:794" rev="footnote" title="Jump back to footnote 794 in the text">↩</a></p>
+</li>
+<li id="fn:795">
+<p>Another thing <a class="footnote-backref" href="#fnref:795" rev="footnote" title="Jump back to footnote 795 in the text">↩</a></p>
+</li>
+<li id="fn:796">
+<p>Another thing <a class="footnote-backref" href="#fnref:796" rev="footnote" title="Jump back to footnote 796 in the text">↩</a></p>
+</li>
+<li id="fn:797">
+<p>Another thing <a class="footnote-backref" href="#fnref:797" rev="footnote" title="Jump back to footnote 797 in the text">↩</a></p>
+</li>
+<li id="fn:798">
+<p>Another thing <a class="footnote-backref" href="#fnref:798" rev="footnote" title="Jump back to footnote 798 in the text">↩</a></p>
+</li>
+<li id="fn:799">
+<p>Another thing <a class="footnote-backref" href="#fnref:799" rev="footnote" title="Jump back to footnote 799 in the text">↩</a></p>
+</li>
+<li id="fn:800">
+<p>Another thing <a class="footnote-backref" href="#fnref:800" rev="footnote" title="Jump back to footnote 800 in the text">↩</a></p>
+</li>
+<li id="fn:801">
+<p>Another thing <a class="footnote-backref" href="#fnref:801" rev="footnote" title="Jump back to footnote 801 in the text">↩</a></p>
+</li>
+<li id="fn:802">
+<p>Another thing <a class="footnote-backref" href="#fnref:802" rev="footnote" title="Jump back to footnote 802 in the text">↩</a></p>
+</li>
+<li id="fn:803">
+<p>Another thing <a class="footnote-backref" href="#fnref:803" rev="footnote" title="Jump back to footnote 803 in the text">↩</a></p>
+</li>
+<li id="fn:804">
+<p>Another thing <a class="footnote-backref" href="#fnref:804" rev="footnote" title="Jump back to footnote 804 in the text">↩</a></p>
+</li>
+<li id="fn:805">
+<p>Another thing <a class="footnote-backref" href="#fnref:805" rev="footnote" title="Jump back to footnote 805 in the text">↩</a></p>
+</li>
+<li id="fn:806">
+<p>Another thing <a class="footnote-backref" href="#fnref:806" rev="footnote" title="Jump back to footnote 806 in the text">↩</a></p>
+</li>
+<li id="fn:807">
+<p>Another thing <a class="footnote-backref" href="#fnref:807" rev="footnote" title="Jump back to footnote 807 in the text">↩</a></p>
+</li>
+<li id="fn:808">
+<p>Another thing <a class="footnote-backref" href="#fnref:808" rev="footnote" title="Jump back to footnote 808 in the text">↩</a></p>
+</li>
+<li id="fn:809">
+<p>Another thing <a class="footnote-backref" href="#fnref:809" rev="footnote" title="Jump back to footnote 809 in the text">↩</a></p>
+</li>
+<li id="fn:810">
+<p>Another thing <a class="footnote-backref" href="#fnref:810" rev="footnote" title="Jump back to footnote 810 in the text">↩</a></p>
+</li>
+<li id="fn:811">
+<p>Another thing <a class="footnote-backref" href="#fnref:811" rev="footnote" title="Jump back to footnote 811 in the text">↩</a></p>
+</li>
+<li id="fn:812">
+<p>Another thing <a class="footnote-backref" href="#fnref:812" rev="footnote" title="Jump back to footnote 812 in the text">↩</a></p>
+</li>
+<li id="fn:813">
+<p>Another thing <a class="footnote-backref" href="#fnref:813" rev="footnote" title="Jump back to footnote 813 in the text">↩</a></p>
+</li>
+<li id="fn:814">
+<p>Another thing <a class="footnote-backref" href="#fnref:814" rev="footnote" title="Jump back to footnote 814 in the text">↩</a></p>
+</li>
+<li id="fn:815">
+<p>Another thing <a class="footnote-backref" href="#fnref:815" rev="footnote" title="Jump back to footnote 815 in the text">↩</a></p>
+</li>
+<li id="fn:816">
+<p>Another thing <a class="footnote-backref" href="#fnref:816" rev="footnote" title="Jump back to footnote 816 in the text">↩</a></p>
+</li>
+<li id="fn:817">
+<p>Another thing <a class="footnote-backref" href="#fnref:817" rev="footnote" title="Jump back to footnote 817 in the text">↩</a></p>
+</li>
+<li id="fn:818">
+<p>Another thing <a class="footnote-backref" href="#fnref:818" rev="footnote" title="Jump back to footnote 818 in the text">↩</a></p>
+</li>
+<li id="fn:819">
+<p>Another thing <a class="footnote-backref" href="#fnref:819" rev="footnote" title="Jump back to footnote 819 in the text">↩</a></p>
+</li>
+<li id="fn:820">
+<p>Another thing <a class="footnote-backref" href="#fnref:820" rev="footnote" title="Jump back to footnote 820 in the text">↩</a></p>
+</li>
+<li id="fn:821">
+<p>Another thing <a class="footnote-backref" href="#fnref:821" rev="footnote" title="Jump back to footnote 821 in the text">↩</a></p>
+</li>
+<li id="fn:822">
+<p>Another thing <a class="footnote-backref" href="#fnref:822" rev="footnote" title="Jump back to footnote 822 in the text">↩</a></p>
+</li>
+<li id="fn:823">
+<p>Another thing <a class="footnote-backref" href="#fnref:823" rev="footnote" title="Jump back to footnote 823 in the text">↩</a></p>
+</li>
+<li id="fn:824">
+<p>Another thing <a class="footnote-backref" href="#fnref:824" rev="footnote" title="Jump back to footnote 824 in the text">↩</a></p>
+</li>
+<li id="fn:825">
+<p>Another thing <a class="footnote-backref" href="#fnref:825" rev="footnote" title="Jump back to footnote 825 in the text">↩</a></p>
+</li>
+<li id="fn:826">
+<p>Another thing <a class="footnote-backref" href="#fnref:826" rev="footnote" title="Jump back to footnote 826 in the text">↩</a></p>
+</li>
+<li id="fn:827">
+<p>Another thing <a class="footnote-backref" href="#fnref:827" rev="footnote" title="Jump back to footnote 827 in the text">↩</a></p>
+</li>
+<li id="fn:828">
+<p>Another thing <a class="footnote-backref" href="#fnref:828" rev="footnote" title="Jump back to footnote 828 in the text">↩</a></p>
+</li>
+<li id="fn:829">
+<p>Another thing <a class="footnote-backref" href="#fnref:829" rev="footnote" title="Jump back to footnote 829 in the text">↩</a></p>
+</li>
+<li id="fn:830">
+<p>Another thing <a class="footnote-backref" href="#fnref:830" rev="footnote" title="Jump back to footnote 830 in the text">↩</a></p>
+</li>
+<li id="fn:831">
+<p>Another thing <a class="footnote-backref" href="#fnref:831" rev="footnote" title="Jump back to footnote 831 in the text">↩</a></p>
+</li>
+<li id="fn:832">
+<p>Another thing <a class="footnote-backref" href="#fnref:832" rev="footnote" title="Jump back to footnote 832 in the text">↩</a></p>
+</li>
+<li id="fn:833">
+<p>Another thing <a class="footnote-backref" href="#fnref:833" rev="footnote" title="Jump back to footnote 833 in the text">↩</a></p>
+</li>
+<li id="fn:834">
+<p>Another thing <a class="footnote-backref" href="#fnref:834" rev="footnote" title="Jump back to footnote 834 in the text">↩</a></p>
+</li>
+<li id="fn:835">
+<p>Another thing <a class="footnote-backref" href="#fnref:835" rev="footnote" title="Jump back to footnote 835 in the text">↩</a></p>
+</li>
+<li id="fn:836">
+<p>Another thing <a class="footnote-backref" href="#fnref:836" rev="footnote" title="Jump back to footnote 836 in the text">↩</a></p>
+</li>
+<li id="fn:837">
+<p>Another thing <a class="footnote-backref" href="#fnref:837" rev="footnote" title="Jump back to footnote 837 in the text">↩</a></p>
+</li>
+<li id="fn:838">
+<p>Another thing <a class="footnote-backref" href="#fnref:838" rev="footnote" title="Jump back to footnote 838 in the text">↩</a></p>
+</li>
+<li id="fn:839">
+<p>Another thing <a class="footnote-backref" href="#fnref:839" rev="footnote" title="Jump back to footnote 839 in the text">↩</a></p>
+</li>
+<li id="fn:840">
+<p>Another thing <a class="footnote-backref" href="#fnref:840" rev="footnote" title="Jump back to footnote 840 in the text">↩</a></p>
+</li>
+<li id="fn:841">
+<p>Another thing <a class="footnote-backref" href="#fnref:841" rev="footnote" title="Jump back to footnote 841 in the text">↩</a></p>
+</li>
+<li id="fn:842">
+<p>Another thing <a class="footnote-backref" href="#fnref:842" rev="footnote" title="Jump back to footnote 842 in the text">↩</a></p>
+</li>
+<li id="fn:843">
+<p>Another thing <a class="footnote-backref" href="#fnref:843" rev="footnote" title="Jump back to footnote 843 in the text">↩</a></p>
+</li>
+<li id="fn:844">
+<p>Another thing <a class="footnote-backref" href="#fnref:844" rev="footnote" title="Jump back to footnote 844 in the text">↩</a></p>
+</li>
+<li id="fn:845">
+<p>Another thing <a class="footnote-backref" href="#fnref:845" rev="footnote" title="Jump back to footnote 845 in the text">↩</a></p>
+</li>
+<li id="fn:846">
+<p>Another thing <a class="footnote-backref" href="#fnref:846" rev="footnote" title="Jump back to footnote 846 in the text">↩</a></p>
+</li>
+<li id="fn:847">
+<p>Another thing <a class="footnote-backref" href="#fnref:847" rev="footnote" title="Jump back to footnote 847 in the text">↩</a></p>
+</li>
+<li id="fn:848">
+<p>Another thing <a class="footnote-backref" href="#fnref:848" rev="footnote" title="Jump back to footnote 848 in the text">↩</a></p>
+</li>
+<li id="fn:849">
+<p>Another thing <a class="footnote-backref" href="#fnref:849" rev="footnote" title="Jump back to footnote 849 in the text">↩</a></p>
+</li>
+<li id="fn:850">
+<p>Another thing <a class="footnote-backref" href="#fnref:850" rev="footnote" title="Jump back to footnote 850 in the text">↩</a></p>
+</li>
+<li id="fn:851">
+<p>Another thing <a class="footnote-backref" href="#fnref:851" rev="footnote" title="Jump back to footnote 851 in the text">↩</a></p>
+</li>
+<li id="fn:852">
+<p>Another thing <a class="footnote-backref" href="#fnref:852" rev="footnote" title="Jump back to footnote 852 in the text">↩</a></p>
+</li>
+<li id="fn:853">
+<p>Another thing <a class="footnote-backref" href="#fnref:853" rev="footnote" title="Jump back to footnote 853 in the text">↩</a></p>
+</li>
+<li id="fn:854">
+<p>Another thing <a class="footnote-backref" href="#fnref:854" rev="footnote" title="Jump back to footnote 854 in the text">↩</a></p>
+</li>
+<li id="fn:855">
+<p>Another thing <a class="footnote-backref" href="#fnref:855" rev="footnote" title="Jump back to footnote 855 in the text">↩</a></p>
+</li>
+<li id="fn:856">
+<p>Another thing <a class="footnote-backref" href="#fnref:856" rev="footnote" title="Jump back to footnote 856 in the text">↩</a></p>
+</li>
+<li id="fn:857">
+<p>Another thing <a class="footnote-backref" href="#fnref:857" rev="footnote" title="Jump back to footnote 857 in the text">↩</a></p>
+</li>
+<li id="fn:858">
+<p>Another thing <a class="footnote-backref" href="#fnref:858" rev="footnote" title="Jump back to footnote 858 in the text">↩</a></p>
+</li>
+<li id="fn:859">
+<p>Another thing <a class="footnote-backref" href="#fnref:859" rev="footnote" title="Jump back to footnote 859 in the text">↩</a></p>
+</li>
+<li id="fn:860">
+<p>Another thing <a class="footnote-backref" href="#fnref:860" rev="footnote" title="Jump back to footnote 860 in the text">↩</a></p>
+</li>
+<li id="fn:861">
+<p>Another thing <a class="footnote-backref" href="#fnref:861" rev="footnote" title="Jump back to footnote 861 in the text">↩</a></p>
+</li>
+<li id="fn:862">
+<p>Another thing <a class="footnote-backref" href="#fnref:862" rev="footnote" title="Jump back to footnote 862 in the text">↩</a></p>
+</li>
+<li id="fn:863">
+<p>Another thing <a class="footnote-backref" href="#fnref:863" rev="footnote" title="Jump back to footnote 863 in the text">↩</a></p>
+</li>
+<li id="fn:864">
+<p>Another thing <a class="footnote-backref" href="#fnref:864" rev="footnote" title="Jump back to footnote 864 in the text">↩</a></p>
+</li>
+<li id="fn:865">
+<p>Another thing <a class="footnote-backref" href="#fnref:865" rev="footnote" title="Jump back to footnote 865 in the text">↩</a></p>
+</li>
+<li id="fn:866">
+<p>Another thing <a class="footnote-backref" href="#fnref:866" rev="footnote" title="Jump back to footnote 866 in the text">↩</a></p>
+</li>
+<li id="fn:867">
+<p>Another thing <a class="footnote-backref" href="#fnref:867" rev="footnote" title="Jump back to footnote 867 in the text">↩</a></p>
+</li>
+<li id="fn:868">
+<p>Another thing <a class="footnote-backref" href="#fnref:868" rev="footnote" title="Jump back to footnote 868 in the text">↩</a></p>
+</li>
+<li id="fn:869">
+<p>Another thing <a class="footnote-backref" href="#fnref:869" rev="footnote" title="Jump back to footnote 869 in the text">↩</a></p>
+</li>
+<li id="fn:870">
+<p>Another thing <a class="footnote-backref" href="#fnref:870" rev="footnote" title="Jump back to footnote 870 in the text">↩</a></p>
+</li>
+<li id="fn:871">
+<p>Another thing <a class="footnote-backref" href="#fnref:871" rev="footnote" title="Jump back to footnote 871 in the text">↩</a></p>
+</li>
+<li id="fn:872">
+<p>Another thing <a class="footnote-backref" href="#fnref:872" rev="footnote" title="Jump back to footnote 872 in the text">↩</a></p>
+</li>
+<li id="fn:873">
+<p>Another thing <a class="footnote-backref" href="#fnref:873" rev="footnote" title="Jump back to footnote 873 in the text">↩</a></p>
+</li>
+<li id="fn:874">
+<p>Another thing <a class="footnote-backref" href="#fnref:874" rev="footnote" title="Jump back to footnote 874 in the text">↩</a></p>
+</li>
+<li id="fn:875">
+<p>Another thing <a class="footnote-backref" href="#fnref:875" rev="footnote" title="Jump back to footnote 875 in the text">↩</a></p>
+</li>
+<li id="fn:876">
+<p>Another thing <a class="footnote-backref" href="#fnref:876" rev="footnote" title="Jump back to footnote 876 in the text">↩</a></p>
+</li>
+<li id="fn:877">
+<p>Another thing <a class="footnote-backref" href="#fnref:877" rev="footnote" title="Jump back to footnote 877 in the text">↩</a></p>
+</li>
+<li id="fn:878">
+<p>Another thing <a class="footnote-backref" href="#fnref:878" rev="footnote" title="Jump back to footnote 878 in the text">↩</a></p>
+</li>
+<li id="fn:879">
+<p>Another thing <a class="footnote-backref" href="#fnref:879" rev="footnote" title="Jump back to footnote 879 in the text">↩</a></p>
+</li>
+<li id="fn:880">
+<p>Another thing <a class="footnote-backref" href="#fnref:880" rev="footnote" title="Jump back to footnote 880 in the text">↩</a></p>
+</li>
+<li id="fn:881">
+<p>Another thing <a class="footnote-backref" href="#fnref:881" rev="footnote" title="Jump back to footnote 881 in the text">↩</a></p>
+</li>
+<li id="fn:882">
+<p>Another thing <a class="footnote-backref" href="#fnref:882" rev="footnote" title="Jump back to footnote 882 in the text">↩</a></p>
+</li>
+<li id="fn:883">
+<p>Another thing <a class="footnote-backref" href="#fnref:883" rev="footnote" title="Jump back to footnote 883 in the text">↩</a></p>
+</li>
+<li id="fn:884">
+<p>Another thing <a class="footnote-backref" href="#fnref:884" rev="footnote" title="Jump back to footnote 884 in the text">↩</a></p>
+</li>
+<li id="fn:885">
+<p>Another thing <a class="footnote-backref" href="#fnref:885" rev="footnote" title="Jump back to footnote 885 in the text">↩</a></p>
+</li>
+<li id="fn:886">
+<p>Another thing <a class="footnote-backref" href="#fnref:886" rev="footnote" title="Jump back to footnote 886 in the text">↩</a></p>
+</li>
+<li id="fn:887">
+<p>Another thing <a class="footnote-backref" href="#fnref:887" rev="footnote" title="Jump back to footnote 887 in the text">↩</a></p>
+</li>
+<li id="fn:888">
+<p>Another thing <a class="footnote-backref" href="#fnref:888" rev="footnote" title="Jump back to footnote 888 in the text">↩</a></p>
+</li>
+<li id="fn:889">
+<p>Another thing <a class="footnote-backref" href="#fnref:889" rev="footnote" title="Jump back to footnote 889 in the text">↩</a></p>
+</li>
+<li id="fn:890">
+<p>Another thing <a class="footnote-backref" href="#fnref:890" rev="footnote" title="Jump back to footnote 890 in the text">↩</a></p>
+</li>
+<li id="fn:891">
+<p>Another thing <a class="footnote-backref" href="#fnref:891" rev="footnote" title="Jump back to footnote 891 in the text">↩</a></p>
+</li>
+<li id="fn:892">
+<p>Another thing <a class="footnote-backref" href="#fnref:892" rev="footnote" title="Jump back to footnote 892 in the text">↩</a></p>
+</li>
+<li id="fn:893">
+<p>Another thing <a class="footnote-backref" href="#fnref:893" rev="footnote" title="Jump back to footnote 893 in the text">↩</a></p>
+</li>
+<li id="fn:894">
+<p>Another thing <a class="footnote-backref" href="#fnref:894" rev="footnote" title="Jump back to footnote 894 in the text">↩</a></p>
+</li>
+<li id="fn:895">
+<p>Another thing <a class="footnote-backref" href="#fnref:895" rev="footnote" title="Jump back to footnote 895 in the text">↩</a></p>
+</li>
+<li id="fn:896">
+<p>Another thing <a class="footnote-backref" href="#fnref:896" rev="footnote" title="Jump back to footnote 896 in the text">↩</a></p>
+</li>
+<li id="fn:897">
+<p>Another thing <a class="footnote-backref" href="#fnref:897" rev="footnote" title="Jump back to footnote 897 in the text">↩</a></p>
+</li>
+<li id="fn:898">
+<p>Another thing <a class="footnote-backref" href="#fnref:898" rev="footnote" title="Jump back to footnote 898 in the text">↩</a></p>
+</li>
+<li id="fn:899">
+<p>Another thing <a class="footnote-backref" href="#fnref:899" rev="footnote" title="Jump back to footnote 899 in the text">↩</a></p>
+</li>
+<li id="fn:900">
+<p>Another thing <a class="footnote-backref" href="#fnref:900" rev="footnote" title="Jump back to footnote 900 in the text">↩</a></p>
+</li>
+<li id="fn:901">
+<p>Another thing <a class="footnote-backref" href="#fnref:901" rev="footnote" title="Jump back to footnote 901 in the text">↩</a></p>
+</li>
+<li id="fn:902">
+<p>Another thing <a class="footnote-backref" href="#fnref:902" rev="footnote" title="Jump back to footnote 902 in the text">↩</a></p>
+</li>
+<li id="fn:903">
+<p>Another thing <a class="footnote-backref" href="#fnref:903" rev="footnote" title="Jump back to footnote 903 in the text">↩</a></p>
+</li>
+<li id="fn:904">
+<p>Another thing <a class="footnote-backref" href="#fnref:904" rev="footnote" title="Jump back to footnote 904 in the text">↩</a></p>
+</li>
+<li id="fn:905">
+<p>Another thing <a class="footnote-backref" href="#fnref:905" rev="footnote" title="Jump back to footnote 905 in the text">↩</a></p>
+</li>
+<li id="fn:906">
+<p>Another thing <a class="footnote-backref" href="#fnref:906" rev="footnote" title="Jump back to footnote 906 in the text">↩</a></p>
+</li>
+<li id="fn:907">
+<p>Another thing <a class="footnote-backref" href="#fnref:907" rev="footnote" title="Jump back to footnote 907 in the text">↩</a></p>
+</li>
+<li id="fn:908">
+<p>Another thing <a class="footnote-backref" href="#fnref:908" rev="footnote" title="Jump back to footnote 908 in the text">↩</a></p>
+</li>
+<li id="fn:909">
+<p>Another thing <a class="footnote-backref" href="#fnref:909" rev="footnote" title="Jump back to footnote 909 in the text">↩</a></p>
+</li>
+<li id="fn:910">
+<p>Another thing <a class="footnote-backref" href="#fnref:910" rev="footnote" title="Jump back to footnote 910 in the text">↩</a></p>
+</li>
+<li id="fn:911">
+<p>Another thing <a class="footnote-backref" href="#fnref:911" rev="footnote" title="Jump back to footnote 911 in the text">↩</a></p>
+</li>
+<li id="fn:912">
+<p>Another thing <a class="footnote-backref" href="#fnref:912" rev="footnote" title="Jump back to footnote 912 in the text">↩</a></p>
+</li>
+<li id="fn:913">
+<p>Another thing <a class="footnote-backref" href="#fnref:913" rev="footnote" title="Jump back to footnote 913 in the text">↩</a></p>
+</li>
+<li id="fn:914">
+<p>Another thing <a class="footnote-backref" href="#fnref:914" rev="footnote" title="Jump back to footnote 914 in the text">↩</a></p>
+</li>
+<li id="fn:915">
+<p>Another thing <a class="footnote-backref" href="#fnref:915" rev="footnote" title="Jump back to footnote 915 in the text">↩</a></p>
+</li>
+<li id="fn:916">
+<p>Another thing <a class="footnote-backref" href="#fnref:916" rev="footnote" title="Jump back to footnote 916 in the text">↩</a></p>
+</li>
+<li id="fn:917">
+<p>Another thing <a class="footnote-backref" href="#fnref:917" rev="footnote" title="Jump back to footnote 917 in the text">↩</a></p>
+</li>
+<li id="fn:918">
+<p>Another thing <a class="footnote-backref" href="#fnref:918" rev="footnote" title="Jump back to footnote 918 in the text">↩</a></p>
+</li>
+<li id="fn:919">
+<p>Another thing <a class="footnote-backref" href="#fnref:919" rev="footnote" title="Jump back to footnote 919 in the text">↩</a></p>
+</li>
+<li id="fn:920">
+<p>Another thing <a class="footnote-backref" href="#fnref:920" rev="footnote" title="Jump back to footnote 920 in the text">↩</a></p>
+</li>
+<li id="fn:921">
+<p>Another thing <a class="footnote-backref" href="#fnref:921" rev="footnote" title="Jump back to footnote 921 in the text">↩</a></p>
+</li>
+<li id="fn:922">
+<p>Another thing <a class="footnote-backref" href="#fnref:922" rev="footnote" title="Jump back to footnote 922 in the text">↩</a></p>
+</li>
+<li id="fn:923">
+<p>Another thing <a class="footnote-backref" href="#fnref:923" rev="footnote" title="Jump back to footnote 923 in the text">↩</a></p>
+</li>
+<li id="fn:924">
+<p>Another thing <a class="footnote-backref" href="#fnref:924" rev="footnote" title="Jump back to footnote 924 in the text">↩</a></p>
+</li>
+<li id="fn:925">
+<p>Another thing <a class="footnote-backref" href="#fnref:925" rev="footnote" title="Jump back to footnote 925 in the text">↩</a></p>
+</li>
+<li id="fn:926">
+<p>Another thing <a class="footnote-backref" href="#fnref:926" rev="footnote" title="Jump back to footnote 926 in the text">↩</a></p>
+</li>
+<li id="fn:927">
+<p>Another thing <a class="footnote-backref" href="#fnref:927" rev="footnote" title="Jump back to footnote 927 in the text">↩</a></p>
+</li>
+<li id="fn:928">
+<p>Another thing <a class="footnote-backref" href="#fnref:928" rev="footnote" title="Jump back to footnote 928 in the text">↩</a></p>
+</li>
+<li id="fn:929">
+<p>Another thing <a class="footnote-backref" href="#fnref:929" rev="footnote" title="Jump back to footnote 929 in the text">↩</a></p>
+</li>
+<li id="fn:930">
+<p>Another thing <a class="footnote-backref" href="#fnref:930" rev="footnote" title="Jump back to footnote 930 in the text">↩</a></p>
+</li>
+<li id="fn:931">
+<p>Another thing <a class="footnote-backref" href="#fnref:931" rev="footnote" title="Jump back to footnote 931 in the text">↩</a></p>
+</li>
+<li id="fn:932">
+<p>Another thing <a class="footnote-backref" href="#fnref:932" rev="footnote" title="Jump back to footnote 932 in the text">↩</a></p>
+</li>
+<li id="fn:933">
+<p>Another thing <a class="footnote-backref" href="#fnref:933" rev="footnote" title="Jump back to footnote 933 in the text">↩</a></p>
+</li>
+<li id="fn:934">
+<p>Another thing <a class="footnote-backref" href="#fnref:934" rev="footnote" title="Jump back to footnote 934 in the text">↩</a></p>
+</li>
+<li id="fn:935">
+<p>Another thing <a class="footnote-backref" href="#fnref:935" rev="footnote" title="Jump back to footnote 935 in the text">↩</a></p>
+</li>
+<li id="fn:936">
+<p>Another thing <a class="footnote-backref" href="#fnref:936" rev="footnote" title="Jump back to footnote 936 in the text">↩</a></p>
+</li>
+<li id="fn:937">
+<p>Another thing <a class="footnote-backref" href="#fnref:937" rev="footnote" title="Jump back to footnote 937 in the text">↩</a></p>
+</li>
+<li id="fn:938">
+<p>Another thing <a class="footnote-backref" href="#fnref:938" rev="footnote" title="Jump back to footnote 938 in the text">↩</a></p>
+</li>
+<li id="fn:939">
+<p>Another thing <a class="footnote-backref" href="#fnref:939" rev="footnote" title="Jump back to footnote 939 in the text">↩</a></p>
+</li>
+<li id="fn:940">
+<p>Another thing <a class="footnote-backref" href="#fnref:940" rev="footnote" title="Jump back to footnote 940 in the text">↩</a></p>
+</li>
+<li id="fn:941">
+<p>Another thing <a class="footnote-backref" href="#fnref:941" rev="footnote" title="Jump back to footnote 941 in the text">↩</a></p>
+</li>
+<li id="fn:942">
+<p>Another thing <a class="footnote-backref" href="#fnref:942" rev="footnote" title="Jump back to footnote 942 in the text">↩</a></p>
+</li>
+<li id="fn:943">
+<p>Another thing <a class="footnote-backref" href="#fnref:943" rev="footnote" title="Jump back to footnote 943 in the text">↩</a></p>
+</li>
+<li id="fn:944">
+<p>Another thing <a class="footnote-backref" href="#fnref:944" rev="footnote" title="Jump back to footnote 944 in the text">↩</a></p>
+</li>
+<li id="fn:945">
+<p>Another thing <a class="footnote-backref" href="#fnref:945" rev="footnote" title="Jump back to footnote 945 in the text">↩</a></p>
+</li>
+<li id="fn:946">
+<p>Another thing <a class="footnote-backref" href="#fnref:946" rev="footnote" title="Jump back to footnote 946 in the text">↩</a></p>
+</li>
+<li id="fn:947">
+<p>Another thing <a class="footnote-backref" href="#fnref:947" rev="footnote" title="Jump back to footnote 947 in the text">↩</a></p>
+</li>
+<li id="fn:948">
+<p>Another thing <a class="footnote-backref" href="#fnref:948" rev="footnote" title="Jump back to footnote 948 in the text">↩</a></p>
+</li>
+<li id="fn:949">
+<p>Another thing <a class="footnote-backref" href="#fnref:949" rev="footnote" title="Jump back to footnote 949 in the text">↩</a></p>
+</li>
+<li id="fn:950">
+<p>Another thing <a class="footnote-backref" href="#fnref:950" rev="footnote" title="Jump back to footnote 950 in the text">↩</a></p>
+</li>
+<li id="fn:951">
+<p>Another thing <a class="footnote-backref" href="#fnref:951" rev="footnote" title="Jump back to footnote 951 in the text">↩</a></p>
+</li>
+<li id="fn:952">
+<p>Another thing <a class="footnote-backref" href="#fnref:952" rev="footnote" title="Jump back to footnote 952 in the text">↩</a></p>
+</li>
+<li id="fn:953">
+<p>Another thing <a class="footnote-backref" href="#fnref:953" rev="footnote" title="Jump back to footnote 953 in the text">↩</a></p>
+</li>
+<li id="fn:954">
+<p>Another thing <a class="footnote-backref" href="#fnref:954" rev="footnote" title="Jump back to footnote 954 in the text">↩</a></p>
+</li>
+<li id="fn:955">
+<p>Another thing <a class="footnote-backref" href="#fnref:955" rev="footnote" title="Jump back to footnote 955 in the text">↩</a></p>
+</li>
+<li id="fn:956">
+<p>Another thing <a class="footnote-backref" href="#fnref:956" rev="footnote" title="Jump back to footnote 956 in the text">↩</a></p>
+</li>
+<li id="fn:957">
+<p>Another thing <a class="footnote-backref" href="#fnref:957" rev="footnote" title="Jump back to footnote 957 in the text">↩</a></p>
+</li>
+<li id="fn:958">
+<p>Another thing <a class="footnote-backref" href="#fnref:958" rev="footnote" title="Jump back to footnote 958 in the text">↩</a></p>
+</li>
+<li id="fn:959">
+<p>Another thing <a class="footnote-backref" href="#fnref:959" rev="footnote" title="Jump back to footnote 959 in the text">↩</a></p>
+</li>
+<li id="fn:960">
+<p>Another thing <a class="footnote-backref" href="#fnref:960" rev="footnote" title="Jump back to footnote 960 in the text">↩</a></p>
+</li>
+<li id="fn:961">
+<p>Another thing <a class="footnote-backref" href="#fnref:961" rev="footnote" title="Jump back to footnote 961 in the text">↩</a></p>
+</li>
+<li id="fn:962">
+<p>Another thing <a class="footnote-backref" href="#fnref:962" rev="footnote" title="Jump back to footnote 962 in the text">↩</a></p>
+</li>
+<li id="fn:963">
+<p>Another thing <a class="footnote-backref" href="#fnref:963" rev="footnote" title="Jump back to footnote 963 in the text">↩</a></p>
+</li>
+<li id="fn:964">
+<p>Another thing <a class="footnote-backref" href="#fnref:964" rev="footnote" title="Jump back to footnote 964 in the text">↩</a></p>
+</li>
+<li id="fn:965">
+<p>Another thing <a class="footnote-backref" href="#fnref:965" rev="footnote" title="Jump back to footnote 965 in the text">↩</a></p>
+</li>
+<li id="fn:966">
+<p>Another thing <a class="footnote-backref" href="#fnref:966" rev="footnote" title="Jump back to footnote 966 in the text">↩</a></p>
+</li>
+<li id="fn:967">
+<p>Another thing <a class="footnote-backref" href="#fnref:967" rev="footnote" title="Jump back to footnote 967 in the text">↩</a></p>
+</li>
+<li id="fn:968">
+<p>Another thing <a class="footnote-backref" href="#fnref:968" rev="footnote" title="Jump back to footnote 968 in the text">↩</a></p>
+</li>
+<li id="fn:969">
+<p>Another thing <a class="footnote-backref" href="#fnref:969" rev="footnote" title="Jump back to footnote 969 in the text">↩</a></p>
+</li>
+<li id="fn:970">
+<p>Another thing <a class="footnote-backref" href="#fnref:970" rev="footnote" title="Jump back to footnote 970 in the text">↩</a></p>
+</li>
+<li id="fn:971">
+<p>Another thing <a class="footnote-backref" href="#fnref:971" rev="footnote" title="Jump back to footnote 971 in the text">↩</a></p>
+</li>
+<li id="fn:972">
+<p>Another thing <a class="footnote-backref" href="#fnref:972" rev="footnote" title="Jump back to footnote 972 in the text">↩</a></p>
+</li>
+<li id="fn:973">
+<p>Another thing <a class="footnote-backref" href="#fnref:973" rev="footnote" title="Jump back to footnote 973 in the text">↩</a></p>
+</li>
+<li id="fn:974">
+<p>Another thing <a class="footnote-backref" href="#fnref:974" rev="footnote" title="Jump back to footnote 974 in the text">↩</a></p>
+</li>
+<li id="fn:975">
+<p>Another thing <a class="footnote-backref" href="#fnref:975" rev="footnote" title="Jump back to footnote 975 in the text">↩</a></p>
+</li>
+<li id="fn:976">
+<p>Another thing <a class="footnote-backref" href="#fnref:976" rev="footnote" title="Jump back to footnote 976 in the text">↩</a></p>
+</li>
+<li id="fn:977">
+<p>Another thing <a class="footnote-backref" href="#fnref:977" rev="footnote" title="Jump back to footnote 977 in the text">↩</a></p>
+</li>
+<li id="fn:978">
+<p>Another thing <a class="footnote-backref" href="#fnref:978" rev="footnote" title="Jump back to footnote 978 in the text">↩</a></p>
+</li>
+<li id="fn:979">
+<p>Another thing <a class="footnote-backref" href="#fnref:979" rev="footnote" title="Jump back to footnote 979 in the text">↩</a></p>
+</li>
+<li id="fn:980">
+<p>Another thing <a class="footnote-backref" href="#fnref:980" rev="footnote" title="Jump back to footnote 980 in the text">↩</a></p>
+</li>
+<li id="fn:981">
+<p>Another thing <a class="footnote-backref" href="#fnref:981" rev="footnote" title="Jump back to footnote 981 in the text">↩</a></p>
+</li>
+<li id="fn:982">
+<p>Another thing <a class="footnote-backref" href="#fnref:982" rev="footnote" title="Jump back to footnote 982 in the text">↩</a></p>
+</li>
+<li id="fn:983">
+<p>Another thing <a class="footnote-backref" href="#fnref:983" rev="footnote" title="Jump back to footnote 983 in the text">↩</a></p>
+</li>
+<li id="fn:984">
+<p>Another thing <a class="footnote-backref" href="#fnref:984" rev="footnote" title="Jump back to footnote 984 in the text">↩</a></p>
+</li>
+<li id="fn:985">
+<p>Another thing <a class="footnote-backref" href="#fnref:985" rev="footnote" title="Jump back to footnote 985 in the text">↩</a></p>
+</li>
+<li id="fn:986">
+<p>Another thing <a class="footnote-backref" href="#fnref:986" rev="footnote" title="Jump back to footnote 986 in the text">↩</a></p>
+</li>
+<li id="fn:987">
+<p>Another thing <a class="footnote-backref" href="#fnref:987" rev="footnote" title="Jump back to footnote 987 in the text">↩</a></p>
+</li>
+<li id="fn:988">
+<p>Another thing <a class="footnote-backref" href="#fnref:988" rev="footnote" title="Jump back to footnote 988 in the text">↩</a></p>
+</li>
+<li id="fn:989">
+<p>Another thing <a class="footnote-backref" href="#fnref:989" rev="footnote" title="Jump back to footnote 989 in the text">↩</a></p>
+</li>
+<li id="fn:990">
+<p>Another thing <a class="footnote-backref" href="#fnref:990" rev="footnote" title="Jump back to footnote 990 in the text">↩</a></p>
+</li>
+<li id="fn:991">
+<p>Another thing <a class="footnote-backref" href="#fnref:991" rev="footnote" title="Jump back to footnote 991 in the text">↩</a></p>
+</li>
+<li id="fn:992">
+<p>Another thing <a class="footnote-backref" href="#fnref:992" rev="footnote" title="Jump back to footnote 992 in the text">↩</a></p>
+</li>
+<li id="fn:993">
+<p>Another thing <a class="footnote-backref" href="#fnref:993" rev="footnote" title="Jump back to footnote 993 in the text">↩</a></p>
+</li>
+<li id="fn:994">
+<p>Another thing <a class="footnote-backref" href="#fnref:994" rev="footnote" title="Jump back to footnote 994 in the text">↩</a></p>
+</li>
+<li id="fn:995">
+<p>Another thing <a class="footnote-backref" href="#fnref:995" rev="footnote" title="Jump back to footnote 995 in the text">↩</a></p>
+</li>
+<li id="fn:996">
+<p>Another thing <a class="footnote-backref" href="#fnref:996" rev="footnote" title="Jump back to footnote 996 in the text">↩</a></p>
+</li>
+<li id="fn:997">
+<p>Another thing <a class="footnote-backref" href="#fnref:997" rev="footnote" title="Jump back to footnote 997 in the text">↩</a></p>
+</li>
+<li id="fn:998">
+<p>Another thing <a class="footnote-backref" href="#fnref:998" rev="footnote" title="Jump back to footnote 998 in the text">↩</a></p>
+</li>
+<li id="fn:999">
+<p>Another thing <a class="footnote-backref" href="#fnref:999" rev="footnote" title="Jump back to footnote 999 in the text">↩</a></p>
+</li>
+<li id="fn:1000">
+<p>Another thing <a class="footnote-backref" href="#fnref:1000" rev="footnote" title="Jump back to footnote 1000 in the text">↩</a></p>
+</li>
+<li id="fn:1001">
+<p>Another thing <a class="footnote-backref" href="#fnref:1001" rev="footnote" title="Jump back to footnote 1001 in the text">↩</a></p>
+</li>
+<li id="fn:1002">
+<p>Another thing <a class="footnote-backref" href="#fnref:1002" rev="footnote" title="Jump back to footnote 1002 in the text">↩</a></p>
+</li>
+<li id="fn:1003">
+<p>Another thing <a class="footnote-backref" href="#fnref:1003" rev="footnote" title="Jump back to footnote 1003 in the text">↩</a></p>
+</li>
+<li id="fn:1004">
+<p>Another thing <a class="footnote-backref" href="#fnref:1004" rev="footnote" title="Jump back to footnote 1004 in the text">↩</a></p>
+</li>
+<li id="fn:1005">
+<p>Another thing <a class="footnote-backref" href="#fnref:1005" rev="footnote" title="Jump back to footnote 1005 in the text">↩</a></p>
+</li>
+<li id="fn:1006">
+<p>Another thing <a class="footnote-backref" href="#fnref:1006" rev="footnote" title="Jump back to footnote 1006 in the text">↩</a></p>
+</li>
+<li id="fn:1007">
+<p>Another thing <a class="footnote-backref" href="#fnref:1007" rev="footnote" title="Jump back to footnote 1007 in the text">↩</a></p>
+</li>
+<li id="fn:1008">
+<p>Another thing <a class="footnote-backref" href="#fnref:1008" rev="footnote" title="Jump back to footnote 1008 in the text">↩</a></p>
+</li>
+<li id="fn:1009">
+<p>Another thing <a class="footnote-backref" href="#fnref:1009" rev="footnote" title="Jump back to footnote 1009 in the text">↩</a></p>
+</li>
+<li id="fn:1010">
+<p>Another thing <a class="footnote-backref" href="#fnref:1010" rev="footnote" title="Jump back to footnote 1010 in the text">↩</a></p>
+</li>
+<li id="fn:1011">
+<p>Another thing <a class="footnote-backref" href="#fnref:1011" rev="footnote" title="Jump back to footnote 1011 in the text">↩</a></p>
+</li>
+<li id="fn:1012">
+<p>Another thing <a class="footnote-backref" href="#fnref:1012" rev="footnote" title="Jump back to footnote 1012 in the text">↩</a></p>
+</li>
+<li id="fn:1013">
+<p>Another thing <a class="footnote-backref" href="#fnref:1013" rev="footnote" title="Jump back to footnote 1013 in the text">↩</a></p>
+</li>
+<li id="fn:1014">
+<p>Another thing <a class="footnote-backref" href="#fnref:1014" rev="footnote" title="Jump back to footnote 1014 in the text">↩</a></p>
+</li>
+<li id="fn:1015">
+<p>Another thing <a class="footnote-backref" href="#fnref:1015" rev="footnote" title="Jump back to footnote 1015 in the text">↩</a></p>
+</li>
+<li id="fn:1016">
+<p>Another thing <a class="footnote-backref" href="#fnref:1016" rev="footnote" title="Jump back to footnote 1016 in the text">↩</a></p>
+</li>
+<li id="fn:1017">
+<p>Another thing <a class="footnote-backref" href="#fnref:1017" rev="footnote" title="Jump back to footnote 1017 in the text">↩</a></p>
+</li>
+<li id="fn:1018">
+<p>Another thing <a class="footnote-backref" href="#fnref:1018" rev="footnote" title="Jump back to footnote 1018 in the text">↩</a></p>
+</li>
+<li id="fn:1019">
+<p>Another thing <a class="footnote-backref" href="#fnref:1019" rev="footnote" title="Jump back to footnote 1019 in the text">↩</a></p>
+</li>
+<li id="fn:1020">
+<p>Another thing <a class="footnote-backref" href="#fnref:1020" rev="footnote" title="Jump back to footnote 1020 in the text">↩</a></p>
+</li>
+<li id="fn:1021">
+<p>Another thing <a class="footnote-backref" href="#fnref:1021" rev="footnote" title="Jump back to footnote 1021 in the text">↩</a></p>
+</li>
+<li id="fn:1022">
+<p>Another thing <a class="footnote-backref" href="#fnref:1022" rev="footnote" title="Jump back to footnote 1022 in the text">↩</a></p>
+</li>
+<li id="fn:1023">
+<p>Another thing <a class="footnote-backref" href="#fnref:1023" rev="footnote" title="Jump back to footnote 1023 in the text">↩</a></p>
+</li>
+<li id="fn:1024">
+<p>Another thing <a class="footnote-backref" href="#fnref:1024" rev="footnote" title="Jump back to footnote 1024 in the text">↩</a></p>
+</li>
+<li id="fn:1025">
+<p>Another thing <a class="footnote-backref" href="#fnref:1025" rev="footnote" title="Jump back to footnote 1025 in the text">↩</a></p>
+</li>
+<li id="fn:1026">
+<p>Another thing <a class="footnote-backref" href="#fnref:1026" rev="footnote" title="Jump back to footnote 1026 in the text">↩</a></p>
+</li>
+<li id="fn:1027">
+<p>Another thing <a class="footnote-backref" href="#fnref:1027" rev="footnote" title="Jump back to footnote 1027 in the text">↩</a></p>
+</li>
+<li id="fn:1028">
+<p>Another thing <a class="footnote-backref" href="#fnref:1028" rev="footnote" title="Jump back to footnote 1028 in the text">↩</a></p>
+</li>
+<li id="fn:1029">
+<p>Another thing <a class="footnote-backref" href="#fnref:1029" rev="footnote" title="Jump back to footnote 1029 in the text">↩</a></p>
+</li>
+<li id="fn:1030">
+<p>Another thing <a class="footnote-backref" href="#fnref:1030" rev="footnote" title="Jump back to footnote 1030 in the text">↩</a></p>
+</li>
+<li id="fn:1031">
+<p>Another thing <a class="footnote-backref" href="#fnref:1031" rev="footnote" title="Jump back to footnote 1031 in the text">↩</a></p>
+</li>
+<li id="fn:1032">
+<p>Another thing <a class="footnote-backref" href="#fnref:1032" rev="footnote" title="Jump back to footnote 1032 in the text">↩</a></p>
+</li>
+<li id="fn:1033">
+<p>Another thing <a class="footnote-backref" href="#fnref:1033" rev="footnote" title="Jump back to footnote 1033 in the text">↩</a></p>
+</li>
+<li id="fn:1034">
+<p>Another thing <a class="footnote-backref" href="#fnref:1034" rev="footnote" title="Jump back to footnote 1034 in the text">↩</a></p>
+</li>
+<li id="fn:1035">
+<p>Another thing <a class="footnote-backref" href="#fnref:1035" rev="footnote" title="Jump back to footnote 1035 in the text">↩</a></p>
+</li>
+<li id="fn:1036">
+<p>Another thing <a class="footnote-backref" href="#fnref:1036" rev="footnote" title="Jump back to footnote 1036 in the text">↩</a></p>
+</li>
+<li id="fn:1037">
+<p>Another thing <a class="footnote-backref" href="#fnref:1037" rev="footnote" title="Jump back to footnote 1037 in the text">↩</a></p>
+</li>
+<li id="fn:1038">
+<p>Another thing <a class="footnote-backref" href="#fnref:1038" rev="footnote" title="Jump back to footnote 1038 in the text">↩</a></p>
+</li>
+<li id="fn:1039">
+<p>Another thing <a class="footnote-backref" href="#fnref:1039" rev="footnote" title="Jump back to footnote 1039 in the text">↩</a></p>
+</li>
+<li id="fn:1040">
+<p>Another thing <a class="footnote-backref" href="#fnref:1040" rev="footnote" title="Jump back to footnote 1040 in the text">↩</a></p>
+</li>
+<li id="fn:1041">
+<p>Another thing <a class="footnote-backref" href="#fnref:1041" rev="footnote" title="Jump back to footnote 1041 in the text">↩</a></p>
+</li>
+<li id="fn:1042">
+<p>Another thing <a class="footnote-backref" href="#fnref:1042" rev="footnote" title="Jump back to footnote 1042 in the text">↩</a></p>
+</li>
+<li id="fn:1043">
+<p>Another thing <a class="footnote-backref" href="#fnref:1043" rev="footnote" title="Jump back to footnote 1043 in the text">↩</a></p>
+</li>
+<li id="fn:1044">
+<p>Another thing <a class="footnote-backref" href="#fnref:1044" rev="footnote" title="Jump back to footnote 1044 in the text">↩</a></p>
+</li>
+<li id="fn:1045">
+<p>Another thing <a class="footnote-backref" href="#fnref:1045" rev="footnote" title="Jump back to footnote 1045 in the text">↩</a></p>
+</li>
+<li id="fn:1046">
+<p>Another thing <a class="footnote-backref" href="#fnref:1046" rev="footnote" title="Jump back to footnote 1046 in the text">↩</a></p>
+</li>
+<li id="fn:1047">
+<p>Another thing <a class="footnote-backref" href="#fnref:1047" rev="footnote" title="Jump back to footnote 1047 in the text">↩</a></p>
+</li>
+<li id="fn:1048">
+<p>Another thing <a class="footnote-backref" href="#fnref:1048" rev="footnote" title="Jump back to footnote 1048 in the text">↩</a></p>
+</li>
+<li id="fn:1049">
+<p>Another thing <a class="footnote-backref" href="#fnref:1049" rev="footnote" title="Jump back to footnote 1049 in the text">↩</a></p>
+</li>
+<li id="fn:1050">
+<p>Another thing <a class="footnote-backref" href="#fnref:1050" rev="footnote" title="Jump back to footnote 1050 in the text">↩</a></p>
+</li>
+<li id="fn:1051">
+<p>Another thing <a class="footnote-backref" href="#fnref:1051" rev="footnote" title="Jump back to footnote 1051 in the text">↩</a></p>
+</li>
+<li id="fn:1052">
+<p>Another thing <a class="footnote-backref" href="#fnref:1052" rev="footnote" title="Jump back to footnote 1052 in the text">↩</a></p>
+</li>
+<li id="fn:1053">
+<p>Another thing <a class="footnote-backref" href="#fnref:1053" rev="footnote" title="Jump back to footnote 1053 in the text">↩</a></p>
+</li>
+<li id="fn:1054">
+<p>Another thing <a class="footnote-backref" href="#fnref:1054" rev="footnote" title="Jump back to footnote 1054 in the text">↩</a></p>
+</li>
+<li id="fn:1055">
+<p>Another thing <a class="footnote-backref" href="#fnref:1055" rev="footnote" title="Jump back to footnote 1055 in the text">↩</a></p>
+</li>
+<li id="fn:1056">
+<p>Another thing <a class="footnote-backref" href="#fnref:1056" rev="footnote" title="Jump back to footnote 1056 in the text">↩</a></p>
+</li>
+<li id="fn:1057">
+<p>Another thing <a class="footnote-backref" href="#fnref:1057" rev="footnote" title="Jump back to footnote 1057 in the text">↩</a></p>
+</li>
+<li id="fn:1058">
+<p>Another thing <a class="footnote-backref" href="#fnref:1058" rev="footnote" title="Jump back to footnote 1058 in the text">↩</a></p>
+</li>
+<li id="fn:1059">
+<p>Another thing <a class="footnote-backref" href="#fnref:1059" rev="footnote" title="Jump back to footnote 1059 in the text">↩</a></p>
+</li>
+<li id="fn:1060">
+<p>Another thing <a class="footnote-backref" href="#fnref:1060" rev="footnote" title="Jump back to footnote 1060 in the text">↩</a></p>
+</li>
+<li id="fn:1061">
+<p>Another thing <a class="footnote-backref" href="#fnref:1061" rev="footnote" title="Jump back to footnote 1061 in the text">↩</a></p>
+</li>
+<li id="fn:1062">
+<p>Another thing <a class="footnote-backref" href="#fnref:1062" rev="footnote" title="Jump back to footnote 1062 in the text">↩</a></p>
+</li>
+<li id="fn:1063">
+<p>Another thing <a class="footnote-backref" href="#fnref:1063" rev="footnote" title="Jump back to footnote 1063 in the text">↩</a></p>
+</li>
+<li id="fn:1064">
+<p>Another thing <a class="footnote-backref" href="#fnref:1064" rev="footnote" title="Jump back to footnote 1064 in the text">↩</a></p>
+</li>
+<li id="fn:1065">
+<p>Another thing <a class="footnote-backref" href="#fnref:1065" rev="footnote" title="Jump back to footnote 1065 in the text">↩</a></p>
+</li>
+<li id="fn:1066">
+<p>Another thing <a class="footnote-backref" href="#fnref:1066" rev="footnote" title="Jump back to footnote 1066 in the text">↩</a></p>
+</li>
+<li id="fn:1067">
+<p>Another thing <a class="footnote-backref" href="#fnref:1067" rev="footnote" title="Jump back to footnote 1067 in the text">↩</a></p>
+</li>
+<li id="fn:1068">
+<p>Another thing <a class="footnote-backref" href="#fnref:1068" rev="footnote" title="Jump back to footnote 1068 in the text">↩</a></p>
+</li>
+<li id="fn:1069">
+<p>Another thing <a class="footnote-backref" href="#fnref:1069" rev="footnote" title="Jump back to footnote 1069 in the text">↩</a></p>
+</li>
+<li id="fn:1070">
+<p>Another thing <a class="footnote-backref" href="#fnref:1070" rev="footnote" title="Jump back to footnote 1070 in the text">↩</a></p>
+</li>
+<li id="fn:1071">
+<p>Another thing <a class="footnote-backref" href="#fnref:1071" rev="footnote" title="Jump back to footnote 1071 in the text">↩</a></p>
+</li>
+<li id="fn:1072">
+<p>Another thing <a class="footnote-backref" href="#fnref:1072" rev="footnote" title="Jump back to footnote 1072 in the text">↩</a></p>
+</li>
+<li id="fn:1073">
+<p>Another thing <a class="footnote-backref" href="#fnref:1073" rev="footnote" title="Jump back to footnote 1073 in the text">↩</a></p>
+</li>
+<li id="fn:1074">
+<p>Another thing <a class="footnote-backref" href="#fnref:1074" rev="footnote" title="Jump back to footnote 1074 in the text">↩</a></p>
+</li>
+<li id="fn:1075">
+<p>Another thing <a class="footnote-backref" href="#fnref:1075" rev="footnote" title="Jump back to footnote 1075 in the text">↩</a></p>
+</li>
+<li id="fn:1076">
+<p>Another thing <a class="footnote-backref" href="#fnref:1076" rev="footnote" title="Jump back to footnote 1076 in the text">↩</a></p>
+</li>
+<li id="fn:1077">
+<p>Another thing <a class="footnote-backref" href="#fnref:1077" rev="footnote" title="Jump back to footnote 1077 in the text">↩</a></p>
+</li>
+<li id="fn:1078">
+<p>Another thing <a class="footnote-backref" href="#fnref:1078" rev="footnote" title="Jump back to footnote 1078 in the text">↩</a></p>
+</li>
+<li id="fn:1079">
+<p>Another thing <a class="footnote-backref" href="#fnref:1079" rev="footnote" title="Jump back to footnote 1079 in the text">↩</a></p>
+</li>
+<li id="fn:1080">
+<p>Another thing <a class="footnote-backref" href="#fnref:1080" rev="footnote" title="Jump back to footnote 1080 in the text">↩</a></p>
+</li>
+<li id="fn:1081">
+<p>Another thing <a class="footnote-backref" href="#fnref:1081" rev="footnote" title="Jump back to footnote 1081 in the text">↩</a></p>
+</li>
+<li id="fn:1082">
+<p>Another thing <a class="footnote-backref" href="#fnref:1082" rev="footnote" title="Jump back to footnote 1082 in the text">↩</a></p>
+</li>
+<li id="fn:1083">
+<p>Another thing <a class="footnote-backref" href="#fnref:1083" rev="footnote" title="Jump back to footnote 1083 in the text">↩</a></p>
+</li>
+<li id="fn:1084">
+<p>Another thing <a class="footnote-backref" href="#fnref:1084" rev="footnote" title="Jump back to footnote 1084 in the text">↩</a></p>
+</li>
+<li id="fn:1085">
+<p>Another thing <a class="footnote-backref" href="#fnref:1085" rev="footnote" title="Jump back to footnote 1085 in the text">↩</a></p>
+</li>
+<li id="fn:1086">
+<p>Another thing <a class="footnote-backref" href="#fnref:1086" rev="footnote" title="Jump back to footnote 1086 in the text">↩</a></p>
+</li>
+<li id="fn:1087">
+<p>Another thing <a class="footnote-backref" href="#fnref:1087" rev="footnote" title="Jump back to footnote 1087 in the text">↩</a></p>
+</li>
+<li id="fn:1088">
+<p>Another thing <a class="footnote-backref" href="#fnref:1088" rev="footnote" title="Jump back to footnote 1088 in the text">↩</a></p>
+</li>
+<li id="fn:1089">
+<p>Another thing <a class="footnote-backref" href="#fnref:1089" rev="footnote" title="Jump back to footnote 1089 in the text">↩</a></p>
+</li>
+<li id="fn:1090">
+<p>Another thing <a class="footnote-backref" href="#fnref:1090" rev="footnote" title="Jump back to footnote 1090 in the text">↩</a></p>
+</li>
+<li id="fn:1091">
+<p>Another thing <a class="footnote-backref" href="#fnref:1091" rev="footnote" title="Jump back to footnote 1091 in the text">↩</a></p>
+</li>
+<li id="fn:1092">
+<p>Another thing <a class="footnote-backref" href="#fnref:1092" rev="footnote" title="Jump back to footnote 1092 in the text">↩</a></p>
+</li>
+<li id="fn:1093">
+<p>Another thing <a class="footnote-backref" href="#fnref:1093" rev="footnote" title="Jump back to footnote 1093 in the text">↩</a></p>
+</li>
+<li id="fn:1094">
+<p>Another thing <a class="footnote-backref" href="#fnref:1094" rev="footnote" title="Jump back to footnote 1094 in the text">↩</a></p>
+</li>
+<li id="fn:1095">
+<p>Another thing <a class="footnote-backref" href="#fnref:1095" rev="footnote" title="Jump back to footnote 1095 in the text">↩</a></p>
+</li>
+<li id="fn:1096">
+<p>Another thing <a class="footnote-backref" href="#fnref:1096" rev="footnote" title="Jump back to footnote 1096 in the text">↩</a></p>
+</li>
+<li id="fn:1097">
+<p>Another thing <a class="footnote-backref" href="#fnref:1097" rev="footnote" title="Jump back to footnote 1097 in the text">↩</a></p>
+</li>
+<li id="fn:1098">
+<p>Another thing <a class="footnote-backref" href="#fnref:1098" rev="footnote" title="Jump back to footnote 1098 in the text">↩</a></p>
+</li>
+<li id="fn:1099">
+<p>Another thing <a class="footnote-backref" href="#fnref:1099" rev="footnote" title="Jump back to footnote 1099 in the text">↩</a></p>
+</li>
+<li id="fn:1100">
+<p>Another thing <a class="footnote-backref" href="#fnref:1100" rev="footnote" title="Jump back to footnote 1100 in the text">↩</a></p>
+</li>
+<li id="fn:1101">
+<p>Another thing <a class="footnote-backref" href="#fnref:1101" rev="footnote" title="Jump back to footnote 1101 in the text">↩</a></p>
+</li>
+<li id="fn:1102">
+<p>Another thing <a class="footnote-backref" href="#fnref:1102" rev="footnote" title="Jump back to footnote 1102 in the text">↩</a></p>
+</li>
+<li id="fn:1103">
+<p>Another thing <a class="footnote-backref" href="#fnref:1103" rev="footnote" title="Jump back to footnote 1103 in the text">↩</a></p>
+</li>
+<li id="fn:1104">
+<p>Another thing <a class="footnote-backref" href="#fnref:1104" rev="footnote" title="Jump back to footnote 1104 in the text">↩</a></p>
+</li>
+<li id="fn:1105">
+<p>Another thing <a class="footnote-backref" href="#fnref:1105" rev="footnote" title="Jump back to footnote 1105 in the text">↩</a></p>
+</li>
+<li id="fn:1106">
+<p>Another thing <a class="footnote-backref" href="#fnref:1106" rev="footnote" title="Jump back to footnote 1106 in the text">↩</a></p>
+</li>
+<li id="fn:1107">
+<p>Another thing <a class="footnote-backref" href="#fnref:1107" rev="footnote" title="Jump back to footnote 1107 in the text">↩</a></p>
+</li>
+<li id="fn:1108">
+<p>Another thing <a class="footnote-backref" href="#fnref:1108" rev="footnote" title="Jump back to footnote 1108 in the text">↩</a></p>
+</li>
+<li id="fn:1109">
+<p>Another thing <a class="footnote-backref" href="#fnref:1109" rev="footnote" title="Jump back to footnote 1109 in the text">↩</a></p>
+</li>
+<li id="fn:1110">
+<p>Another thing <a class="footnote-backref" href="#fnref:1110" rev="footnote" title="Jump back to footnote 1110 in the text">↩</a></p>
+</li>
+<li id="fn:1111">
+<p>Another thing <a class="footnote-backref" href="#fnref:1111" rev="footnote" title="Jump back to footnote 1111 in the text">↩</a></p>
+</li>
+<li id="fn:1112">
+<p>Another thing <a class="footnote-backref" href="#fnref:1112" rev="footnote" title="Jump back to footnote 1112 in the text">↩</a></p>
+</li>
+<li id="fn:1113">
+<p>Another thing <a class="footnote-backref" href="#fnref:1113" rev="footnote" title="Jump back to footnote 1113 in the text">↩</a></p>
+</li>
+<li id="fn:1114">
+<p>Another thing <a class="footnote-backref" href="#fnref:1114" rev="footnote" title="Jump back to footnote 1114 in the text">↩</a></p>
+</li>
+<li id="fn:1115">
+<p>Another thing <a class="footnote-backref" href="#fnref:1115" rev="footnote" title="Jump back to footnote 1115 in the text">↩</a></p>
+</li>
+<li id="fn:1116">
+<p>Another thing <a class="footnote-backref" href="#fnref:1116" rev="footnote" title="Jump back to footnote 1116 in the text">↩</a></p>
+</li>
+<li id="fn:1117">
+<p>Another thing <a class="footnote-backref" href="#fnref:1117" rev="footnote" title="Jump back to footnote 1117 in the text">↩</a></p>
+</li>
+<li id="fn:1118">
+<p>Another thing <a class="footnote-backref" href="#fnref:1118" rev="footnote" title="Jump back to footnote 1118 in the text">↩</a></p>
+</li>
+<li id="fn:1119">
+<p>Another thing <a class="footnote-backref" href="#fnref:1119" rev="footnote" title="Jump back to footnote 1119 in the text">↩</a></p>
+</li>
+<li id="fn:1120">
+<p>Another thing <a class="footnote-backref" href="#fnref:1120" rev="footnote" title="Jump back to footnote 1120 in the text">↩</a></p>
+</li>
+<li id="fn:1121">
+<p>Another thing <a class="footnote-backref" href="#fnref:1121" rev="footnote" title="Jump back to footnote 1121 in the text">↩</a></p>
+</li>
+<li id="fn:1122">
+<p>Another thing <a class="footnote-backref" href="#fnref:1122" rev="footnote" title="Jump back to footnote 1122 in the text">↩</a></p>
+</li>
+<li id="fn:1123">
+<p>Another thing <a class="footnote-backref" href="#fnref:1123" rev="footnote" title="Jump back to footnote 1123 in the text">↩</a></p>
+</li>
+<li id="fn:1124">
+<p>Another thing <a class="footnote-backref" href="#fnref:1124" rev="footnote" title="Jump back to footnote 1124 in the text">↩</a></p>
+</li>
+<li id="fn:1125">
+<p>Another thing <a class="footnote-backref" href="#fnref:1125" rev="footnote" title="Jump back to footnote 1125 in the text">↩</a></p>
+</li>
+<li id="fn:1126">
+<p>Another thing <a class="footnote-backref" href="#fnref:1126" rev="footnote" title="Jump back to footnote 1126 in the text">↩</a></p>
+</li>
+<li id="fn:1127">
+<p>Another thing <a class="footnote-backref" href="#fnref:1127" rev="footnote" title="Jump back to footnote 1127 in the text">↩</a></p>
+</li>
+<li id="fn:1128">
+<p>Another thing <a class="footnote-backref" href="#fnref:1128" rev="footnote" title="Jump back to footnote 1128 in the text">↩</a></p>
+</li>
+<li id="fn:1129">
+<p>Another thing <a class="footnote-backref" href="#fnref:1129" rev="footnote" title="Jump back to footnote 1129 in the text">↩</a></p>
+</li>
+<li id="fn:1130">
+<p>Another thing <a class="footnote-backref" href="#fnref:1130" rev="footnote" title="Jump back to footnote 1130 in the text">↩</a></p>
+</li>
+<li id="fn:1131">
+<p>Another thing <a class="footnote-backref" href="#fnref:1131" rev="footnote" title="Jump back to footnote 1131 in the text">↩</a></p>
+</li>
+<li id="fn:1132">
+<p>Another thing <a class="footnote-backref" href="#fnref:1132" rev="footnote" title="Jump back to footnote 1132 in the text">↩</a></p>
+</li>
+<li id="fn:1133">
+<p>Another thing <a class="footnote-backref" href="#fnref:1133" rev="footnote" title="Jump back to footnote 1133 in the text">↩</a></p>
+</li>
+<li id="fn:1134">
+<p>Another thing <a class="footnote-backref" href="#fnref:1134" rev="footnote" title="Jump back to footnote 1134 in the text">↩</a></p>
+</li>
+<li id="fn:1135">
+<p>Another thing <a class="footnote-backref" href="#fnref:1135" rev="footnote" title="Jump back to footnote 1135 in the text">↩</a></p>
+</li>
+<li id="fn:1136">
+<p>Another thing <a class="footnote-backref" href="#fnref:1136" rev="footnote" title="Jump back to footnote 1136 in the text">↩</a></p>
+</li>
+<li id="fn:1137">
+<p>Another thing <a class="footnote-backref" href="#fnref:1137" rev="footnote" title="Jump back to footnote 1137 in the text">↩</a></p>
+</li>
+<li id="fn:1138">
+<p>Another thing <a class="footnote-backref" href="#fnref:1138" rev="footnote" title="Jump back to footnote 1138 in the text">↩</a></p>
+</li>
+<li id="fn:1139">
+<p>Another thing <a class="footnote-backref" href="#fnref:1139" rev="footnote" title="Jump back to footnote 1139 in the text">↩</a></p>
+</li>
+<li id="fn:1140">
+<p>Another thing <a class="footnote-backref" href="#fnref:1140" rev="footnote" title="Jump back to footnote 1140 in the text">↩</a></p>
+</li>
+<li id="fn:1141">
+<p>Another thing <a class="footnote-backref" href="#fnref:1141" rev="footnote" title="Jump back to footnote 1141 in the text">↩</a></p>
+</li>
+<li id="fn:1142">
+<p>Another thing <a class="footnote-backref" href="#fnref:1142" rev="footnote" title="Jump back to footnote 1142 in the text">↩</a></p>
+</li>
+<li id="fn:1143">
+<p>Another thing <a class="footnote-backref" href="#fnref:1143" rev="footnote" title="Jump back to footnote 1143 in the text">↩</a></p>
+</li>
+<li id="fn:1144">
+<p>Another thing <a class="footnote-backref" href="#fnref:1144" rev="footnote" title="Jump back to footnote 1144 in the text">↩</a></p>
+</li>
+<li id="fn:1145">
+<p>Another thing <a class="footnote-backref" href="#fnref:1145" rev="footnote" title="Jump back to footnote 1145 in the text">↩</a></p>
+</li>
+<li id="fn:1146">
+<p>Another thing <a class="footnote-backref" href="#fnref:1146" rev="footnote" title="Jump back to footnote 1146 in the text">↩</a></p>
+</li>
+<li id="fn:1147">
+<p>Another thing <a class="footnote-backref" href="#fnref:1147" rev="footnote" title="Jump back to footnote 1147 in the text">↩</a></p>
+</li>
+<li id="fn:1148">
+<p>Another thing <a class="footnote-backref" href="#fnref:1148" rev="footnote" title="Jump back to footnote 1148 in the text">↩</a></p>
+</li>
+<li id="fn:1149">
+<p>Another thing <a class="footnote-backref" href="#fnref:1149" rev="footnote" title="Jump back to footnote 1149 in the text">↩</a></p>
+</li>
+<li id="fn:1150">
+<p>Another thing <a class="footnote-backref" href="#fnref:1150" rev="footnote" title="Jump back to footnote 1150 in the text">↩</a></p>
+</li>
+<li id="fn:1151">
+<p>Another thing <a class="footnote-backref" href="#fnref:1151" rev="footnote" title="Jump back to footnote 1151 in the text">↩</a></p>
+</li>
+<li id="fn:1152">
+<p>Another thing <a class="footnote-backref" href="#fnref:1152" rev="footnote" title="Jump back to footnote 1152 in the text">↩</a></p>
+</li>
+<li id="fn:1153">
+<p>Another thing <a class="footnote-backref" href="#fnref:1153" rev="footnote" title="Jump back to footnote 1153 in the text">↩</a></p>
+</li>
+<li id="fn:1154">
+<p>Another thing <a class="footnote-backref" href="#fnref:1154" rev="footnote" title="Jump back to footnote 1154 in the text">↩</a></p>
+</li>
+<li id="fn:1155">
+<p>Another thing <a class="footnote-backref" href="#fnref:1155" rev="footnote" title="Jump back to footnote 1155 in the text">↩</a></p>
+</li>
+<li id="fn:1156">
+<p>Another thing <a class="footnote-backref" href="#fnref:1156" rev="footnote" title="Jump back to footnote 1156 in the text">↩</a></p>
+</li>
+<li id="fn:1157">
+<p>Another thing <a class="footnote-backref" href="#fnref:1157" rev="footnote" title="Jump back to footnote 1157 in the text">↩</a></p>
+</li>
+<li id="fn:1158">
+<p>Another thing <a class="footnote-backref" href="#fnref:1158" rev="footnote" title="Jump back to footnote 1158 in the text">↩</a></p>
+</li>
+<li id="fn:1159">
+<p>Another thing <a class="footnote-backref" href="#fnref:1159" rev="footnote" title="Jump back to footnote 1159 in the text">↩</a></p>
+</li>
+<li id="fn:1160">
+<p>Another thing <a class="footnote-backref" href="#fnref:1160" rev="footnote" title="Jump back to footnote 1160 in the text">↩</a></p>
+</li>
+<li id="fn:1161">
+<p>Another thing <a class="footnote-backref" href="#fnref:1161" rev="footnote" title="Jump back to footnote 1161 in the text">↩</a></p>
+</li>
+<li id="fn:1162">
+<p>Another thing <a class="footnote-backref" href="#fnref:1162" rev="footnote" title="Jump back to footnote 1162 in the text">↩</a></p>
+</li>
+<li id="fn:1163">
+<p>Another thing <a class="footnote-backref" href="#fnref:1163" rev="footnote" title="Jump back to footnote 1163 in the text">↩</a></p>
+</li>
+<li id="fn:1164">
+<p>Another thing <a class="footnote-backref" href="#fnref:1164" rev="footnote" title="Jump back to footnote 1164 in the text">↩</a></p>
+</li>
+<li id="fn:1165">
+<p>Another thing <a class="footnote-backref" href="#fnref:1165" rev="footnote" title="Jump back to footnote 1165 in the text">↩</a></p>
+</li>
+<li id="fn:1166">
+<p>Another thing <a class="footnote-backref" href="#fnref:1166" rev="footnote" title="Jump back to footnote 1166 in the text">↩</a></p>
+</li>
+<li id="fn:1167">
+<p>Another thing <a class="footnote-backref" href="#fnref:1167" rev="footnote" title="Jump back to footnote 1167 in the text">↩</a></p>
+</li>
+<li id="fn:1168">
+<p>Another thing <a class="footnote-backref" href="#fnref:1168" rev="footnote" title="Jump back to footnote 1168 in the text">↩</a></p>
+</li>
+<li id="fn:1169">
+<p>Another thing <a class="footnote-backref" href="#fnref:1169" rev="footnote" title="Jump back to footnote 1169 in the text">↩</a></p>
+</li>
+<li id="fn:1170">
+<p>Another thing <a class="footnote-backref" href="#fnref:1170" rev="footnote" title="Jump back to footnote 1170 in the text">↩</a></p>
+</li>
+<li id="fn:1171">
+<p>Another thing <a class="footnote-backref" href="#fnref:1171" rev="footnote" title="Jump back to footnote 1171 in the text">↩</a></p>
+</li>
+<li id="fn:1172">
+<p>Another thing <a class="footnote-backref" href="#fnref:1172" rev="footnote" title="Jump back to footnote 1172 in the text">↩</a></p>
+</li>
+<li id="fn:1173">
+<p>Another thing <a class="footnote-backref" href="#fnref:1173" rev="footnote" title="Jump back to footnote 1173 in the text">↩</a></p>
+</li>
+<li id="fn:1174">
+<p>Another thing <a class="footnote-backref" href="#fnref:1174" rev="footnote" title="Jump back to footnote 1174 in the text">↩</a></p>
+</li>
+<li id="fn:1175">
+<p>Another thing <a class="footnote-backref" href="#fnref:1175" rev="footnote" title="Jump back to footnote 1175 in the text">↩</a></p>
+</li>
+<li id="fn:1176">
+<p>Another thing <a class="footnote-backref" href="#fnref:1176" rev="footnote" title="Jump back to footnote 1176 in the text">↩</a></p>
+</li>
+<li id="fn:1177">
+<p>Another thing <a class="footnote-backref" href="#fnref:1177" rev="footnote" title="Jump back to footnote 1177 in the text">↩</a></p>
+</li>
+<li id="fn:1178">
+<p>Another thing <a class="footnote-backref" href="#fnref:1178" rev="footnote" title="Jump back to footnote 1178 in the text">↩</a></p>
+</li>
+<li id="fn:1179">
+<p>Another thing <a class="footnote-backref" href="#fnref:1179" rev="footnote" title="Jump back to footnote 1179 in the text">↩</a></p>
+</li>
+<li id="fn:1180">
+<p>Another thing <a class="footnote-backref" href="#fnref:1180" rev="footnote" title="Jump back to footnote 1180 in the text">↩</a></p>
+</li>
+<li id="fn:1181">
+<p>Another thing <a class="footnote-backref" href="#fnref:1181" rev="footnote" title="Jump back to footnote 1181 in the text">↩</a></p>
+</li>
+<li id="fn:1182">
+<p>Another thing <a class="footnote-backref" href="#fnref:1182" rev="footnote" title="Jump back to footnote 1182 in the text">↩</a></p>
+</li>
+<li id="fn:1183">
+<p>Another thing <a class="footnote-backref" href="#fnref:1183" rev="footnote" title="Jump back to footnote 1183 in the text">↩</a></p>
+</li>
+<li id="fn:1184">
+<p>Another thing <a class="footnote-backref" href="#fnref:1184" rev="footnote" title="Jump back to footnote 1184 in the text">↩</a></p>
+</li>
+<li id="fn:1185">
+<p>Another thing <a class="footnote-backref" href="#fnref:1185" rev="footnote" title="Jump back to footnote 1185 in the text">↩</a></p>
+</li>
+<li id="fn:1186">
+<p>Another thing <a class="footnote-backref" href="#fnref:1186" rev="footnote" title="Jump back to footnote 1186 in the text">↩</a></p>
+</li>
+<li id="fn:1187">
+<p>Another thing <a class="footnote-backref" href="#fnref:1187" rev="footnote" title="Jump back to footnote 1187 in the text">↩</a></p>
+</li>
+<li id="fn:1188">
+<p>Another thing <a class="footnote-backref" href="#fnref:1188" rev="footnote" title="Jump back to footnote 1188 in the text">↩</a></p>
+</li>
+<li id="fn:1189">
+<p>Another thing <a class="footnote-backref" href="#fnref:1189" rev="footnote" title="Jump back to footnote 1189 in the text">↩</a></p>
+</li>
+<li id="fn:1190">
+<p>Another thing <a class="footnote-backref" href="#fnref:1190" rev="footnote" title="Jump back to footnote 1190 in the text">↩</a></p>
+</li>
+<li id="fn:1191">
+<p>Another thing <a class="footnote-backref" href="#fnref:1191" rev="footnote" title="Jump back to footnote 1191 in the text">↩</a></p>
+</li>
+<li id="fn:1192">
+<p>Another thing <a class="footnote-backref" href="#fnref:1192" rev="footnote" title="Jump back to footnote 1192 in the text">↩</a></p>
+</li>
+<li id="fn:1193">
+<p>Another thing <a class="footnote-backref" href="#fnref:1193" rev="footnote" title="Jump back to footnote 1193 in the text">↩</a></p>
+</li>
+<li id="fn:1194">
+<p>Another thing <a class="footnote-backref" href="#fnref:1194" rev="footnote" title="Jump back to footnote 1194 in the text">↩</a></p>
+</li>
+<li id="fn:1195">
+<p>Another thing <a class="footnote-backref" href="#fnref:1195" rev="footnote" title="Jump back to footnote 1195 in the text">↩</a></p>
+</li>
+<li id="fn:1196">
+<p>Another thing <a class="footnote-backref" href="#fnref:1196" rev="footnote" title="Jump back to footnote 1196 in the text">↩</a></p>
+</li>
+<li id="fn:1197">
+<p>Another thing <a class="footnote-backref" href="#fnref:1197" rev="footnote" title="Jump back to footnote 1197 in the text">↩</a></p>
+</li>
+<li id="fn:1198">
+<p>Another thing <a class="footnote-backref" href="#fnref:1198" rev="footnote" title="Jump back to footnote 1198 in the text">↩</a></p>
+</li>
+<li id="fn:1199">
+<p>Another thing <a class="footnote-backref" href="#fnref:1199" rev="footnote" title="Jump back to footnote 1199 in the text">↩</a></p>
+</li>
+</ol>
</div>
\ No newline at end of file
-Something[^1]\r
-\r
-Something[^2]\r
-\r
-Something[^3]\r
-\r
-Something[^4]\r
-\r
-Something[^5]\r
-\r
-Something[^6]\r
-\r
-Something[^7]\r
-\r
-Something[^8]\r
-\r
-Something[^9]\r
-\r
-Something[^10]\r
-\r
-Something[^11]\r
-\r
-Something[^12]\r
-\r
-Something[^13]\r
-\r
-Something[^14]\r
-\r
-Something[^15]\r
-\r
-Something[^16]\r
-\r
-Something[^17]\r
-\r
-Something[^18]\r
-\r
-Something[^19]\r
-\r
-Something[^20]\r
-\r
-Something[^21]\r
-\r
-Something[^22]\r
-\r
-Something[^23]\r
-\r
-Something[^24]\r
-\r
-Something[^25]\r
-\r
-Something[^26]\r
-\r
-Something[^27]\r
-\r
-Something[^28]\r
-\r
-Something[^29]\r
-\r
-Something[^30]\r
-\r
-Something[^31]\r
-\r
-Something[^32]\r
-\r
-Something[^33]\r
-\r
-Something[^34]\r
-\r
-Something[^35]\r
-\r
-Something[^36]\r
-\r
-Something[^37]\r
-\r
-Something[^38]\r
-\r
-Something[^39]\r
-\r
-Something[^40]\r
-\r
-Something[^41]\r
-\r
-Something[^42]\r
-\r
-Something[^43]\r
-\r
-Something[^44]\r
-\r
-Something[^45]\r
-\r
-Something[^46]\r
-\r
-Something[^47]\r
-\r
-Something[^48]\r
-\r
-Something[^49]\r
-\r
-Something[^50]\r
-\r
-Something[^51]\r
-\r
-Something[^52]\r
-\r
-Something[^53]\r
-\r
-Something[^54]\r
-\r
-Something[^55]\r
-\r
-Something[^56]\r
-\r
-Something[^57]\r
-\r
-Something[^58]\r
-\r
-Something[^59]\r
-\r
-Something[^60]\r
-\r
-Something[^61]\r
-\r
-Something[^62]\r
-\r
-Something[^63]\r
-\r
-Something[^64]\r
-\r
-Something[^65]\r
-\r
-Something[^66]\r
-\r
-Something[^67]\r
-\r
-Something[^68]\r
-\r
-Something[^69]\r
-\r
-Something[^70]\r
-\r
-Something[^71]\r
-\r
-Something[^72]\r
-\r
-Something[^73]\r
-\r
-Something[^74]\r
-\r
-Something[^75]\r
-\r
-Something[^76]\r
-\r
-Something[^77]\r
-\r
-Something[^78]\r
-\r
-Something[^79]\r
-\r
-Something[^80]\r
-\r
-Something[^81]\r
-\r
-Something[^82]\r
-\r
-Something[^83]\r
-\r
-Something[^84]\r
-\r
-Something[^85]\r
-\r
-Something[^86]\r
-\r
-Something[^87]\r
-\r
-Something[^88]\r
-\r
-Something[^89]\r
-\r
-Something[^90]\r
-\r
-Something[^91]\r
-\r
-Something[^92]\r
-\r
-Something[^93]\r
-\r
-Something[^94]\r
-\r
-Something[^95]\r
-\r
-Something[^96]\r
-\r
-Something[^97]\r
-\r
-Something[^98]\r
-\r
-Something[^99]\r
-\r
-Something[^100]\r
-\r
-Something[^101]\r
-\r
-Something[^102]\r
-\r
-Something[^103]\r
-\r
-Something[^104]\r
-\r
-Something[^105]\r
-\r
-Something[^106]\r
-\r
-Something[^107]\r
-\r
-Something[^108]\r
-\r
-Something[^109]\r
-\r
-Something[^110]\r
-\r
-Something[^111]\r
-\r
-Something[^112]\r
-\r
-Something[^113]\r
-\r
-Something[^114]\r
-\r
-Something[^115]\r
-\r
-Something[^116]\r
-\r
-Something[^117]\r
-\r
-Something[^118]\r
-\r
-Something[^119]\r
-\r
-Something[^120]\r
-\r
-Something[^121]\r
-\r
-Something[^122]\r
-\r
-Something[^123]\r
-\r
-Something[^124]\r
-\r
-Something[^125]\r
-\r
-Something[^126]\r
-\r
-Something[^127]\r
-\r
-Something[^128]\r
-\r
-Something[^129]\r
-\r
-Something[^130]\r
-\r
-Something[^131]\r
-\r
-Something[^132]\r
-\r
-Something[^133]\r
-\r
-Something[^134]\r
-\r
-Something[^135]\r
-\r
-Something[^136]\r
-\r
-Something[^137]\r
-\r
-Something[^138]\r
-\r
-Something[^139]\r
-\r
-Something[^140]\r
-\r
-Something[^141]\r
-\r
-Something[^142]\r
-\r
-Something[^143]\r
-\r
-Something[^144]\r
-\r
-Something[^145]\r
-\r
-Something[^146]\r
-\r
-Something[^147]\r
-\r
-Something[^148]\r
-\r
-Something[^149]\r
-\r
-Something[^150]\r
-\r
-Something[^151]\r
-\r
-Something[^152]\r
-\r
-Something[^153]\r
-\r
-Something[^154]\r
-\r
-Something[^155]\r
-\r
-Something[^156]\r
-\r
-Something[^157]\r
-\r
-Something[^158]\r
-\r
-Something[^159]\r
-\r
-Something[^160]\r
-\r
-Something[^161]\r
-\r
-Something[^162]\r
-\r
-Something[^163]\r
-\r
-Something[^164]\r
-\r
-Something[^165]\r
-\r
-Something[^166]\r
-\r
-Something[^167]\r
-\r
-Something[^168]\r
-\r
-Something[^169]\r
-\r
-Something[^170]\r
-\r
-Something[^171]\r
-\r
-Something[^172]\r
-\r
-Something[^173]\r
-\r
-Something[^174]\r
-\r
-Something[^175]\r
-\r
-Something[^176]\r
-\r
-Something[^177]\r
-\r
-Something[^178]\r
-\r
-Something[^179]\r
-\r
-Something[^180]\r
-\r
-Something[^181]\r
-\r
-Something[^182]\r
-\r
-Something[^183]\r
-\r
-Something[^184]\r
-\r
-Something[^185]\r
-\r
-Something[^186]\r
-\r
-Something[^187]\r
-\r
-Something[^188]\r
-\r
-Something[^189]\r
-\r
-Something[^190]\r
-\r
-Something[^191]\r
-\r
-Something[^192]\r
-\r
-Something[^193]\r
-\r
-Something[^194]\r
-\r
-Something[^195]\r
-\r
-Something[^196]\r
-\r
-Something[^197]\r
-\r
-Something[^198]\r
-\r
-Something[^199]\r
-\r
-Something[^200]\r
-\r
-Something[^201]\r
-\r
-Something[^202]\r
-\r
-Something[^203]\r
-\r
-Something[^204]\r
-\r
-Something[^205]\r
-\r
-Something[^206]\r
-\r
-Something[^207]\r
-\r
-Something[^208]\r
-\r
-Something[^209]\r
-\r
-Something[^210]\r
-\r
-Something[^211]\r
-\r
-Something[^212]\r
-\r
-Something[^213]\r
-\r
-Something[^214]\r
-\r
-Something[^215]\r
-\r
-Something[^216]\r
-\r
-Something[^217]\r
-\r
-Something[^218]\r
-\r
-Something[^219]\r
-\r
-Something[^220]\r
-\r
-Something[^221]\r
-\r
-Something[^222]\r
-\r
-Something[^223]\r
-\r
-Something[^224]\r
-\r
-Something[^225]\r
-\r
-Something[^226]\r
-\r
-Something[^227]\r
-\r
-Something[^228]\r
-\r
-Something[^229]\r
-\r
-Something[^230]\r
-\r
-Something[^231]\r
-\r
-Something[^232]\r
-\r
-Something[^233]\r
-\r
-Something[^234]\r
-\r
-Something[^235]\r
-\r
-Something[^236]\r
-\r
-Something[^237]\r
-\r
-Something[^238]\r
-\r
-Something[^239]\r
-\r
-Something[^240]\r
-\r
-Something[^241]\r
-\r
-Something[^242]\r
-\r
-Something[^243]\r
-\r
-Something[^244]\r
-\r
-Something[^245]\r
-\r
-Something[^246]\r
-\r
-Something[^247]\r
-\r
-Something[^248]\r
-\r
-Something[^249]\r
-\r
-Something[^250]\r
-\r
-Something[^251]\r
-\r
-Something[^252]\r
-\r
-Something[^253]\r
-\r
-Something[^254]\r
-\r
-Something[^255]\r
-\r
-Something[^256]\r
-\r
-Something[^257]\r
-\r
-Something[^258]\r
-\r
-Something[^259]\r
-\r
-Something[^260]\r
-\r
-Something[^261]\r
-\r
-Something[^262]\r
-\r
-Something[^263]\r
-\r
-Something[^264]\r
-\r
-Something[^265]\r
-\r
-Something[^266]\r
-\r
-Something[^267]\r
-\r
-Something[^268]\r
-\r
-Something[^269]\r
-\r
-Something[^270]\r
-\r
-Something[^271]\r
-\r
-Something[^272]\r
-\r
-Something[^273]\r
-\r
-Something[^274]\r
-\r
-Something[^275]\r
-\r
-Something[^276]\r
-\r
-Something[^277]\r
-\r
-Something[^278]\r
-\r
-Something[^279]\r
-\r
-Something[^280]\r
-\r
-Something[^281]\r
-\r
-Something[^282]\r
-\r
-Something[^283]\r
-\r
-Something[^284]\r
-\r
-Something[^285]\r
-\r
-Something[^286]\r
-\r
-Something[^287]\r
-\r
-Something[^288]\r
-\r
-Something[^289]\r
-\r
-Something[^290]\r
-\r
-Something[^291]\r
-\r
-Something[^292]\r
-\r
-Something[^293]\r
-\r
-Something[^294]\r
-\r
-Something[^295]\r
-\r
-Something[^296]\r
-\r
-Something[^297]\r
-\r
-Something[^298]\r
-\r
-Something[^299]\r
-\r
-Something[^300]\r
-\r
-Something[^301]\r
-\r
-Something[^302]\r
-\r
-Something[^303]\r
-\r
-Something[^304]\r
-\r
-Something[^305]\r
-\r
-Something[^306]\r
-\r
-Something[^307]\r
-\r
-Something[^308]\r
-\r
-Something[^309]\r
-\r
-Something[^310]\r
-\r
-Something[^311]\r
-\r
-Something[^312]\r
-\r
-Something[^313]\r
-\r
-Something[^314]\r
-\r
-Something[^315]\r
-\r
-Something[^316]\r
-\r
-Something[^317]\r
-\r
-Something[^318]\r
-\r
-Something[^319]\r
-\r
-Something[^320]\r
-\r
-Something[^321]\r
-\r
-Something[^322]\r
-\r
-Something[^323]\r
-\r
-Something[^324]\r
-\r
-Something[^325]\r
-\r
-Something[^326]\r
-\r
-Something[^327]\r
-\r
-Something[^328]\r
-\r
-Something[^329]\r
-\r
-Something[^330]\r
-\r
-Something[^331]\r
-\r
-Something[^332]\r
-\r
-Something[^333]\r
-\r
-Something[^334]\r
-\r
-Something[^335]\r
-\r
-Something[^336]\r
-\r
-Something[^337]\r
-\r
-Something[^338]\r
-\r
-Something[^339]\r
-\r
-Something[^340]\r
-\r
-Something[^341]\r
-\r
-Something[^342]\r
-\r
-Something[^343]\r
-\r
-Something[^344]\r
-\r
-Something[^345]\r
-\r
-Something[^346]\r
-\r
-Something[^347]\r
-\r
-Something[^348]\r
-\r
-Something[^349]\r
-\r
-Something[^350]\r
-\r
-Something[^351]\r
-\r
-Something[^352]\r
-\r
-Something[^353]\r
-\r
-Something[^354]\r
-\r
-Something[^355]\r
-\r
-Something[^356]\r
-\r
-Something[^357]\r
-\r
-Something[^358]\r
-\r
-Something[^359]\r
-\r
-Something[^360]\r
-\r
-Something[^361]\r
-\r
-Something[^362]\r
-\r
-Something[^363]\r
-\r
-Something[^364]\r
-\r
-Something[^365]\r
-\r
-Something[^366]\r
-\r
-Something[^367]\r
-\r
-Something[^368]\r
-\r
-Something[^369]\r
-\r
-Something[^370]\r
-\r
-Something[^371]\r
-\r
-Something[^372]\r
-\r
-Something[^373]\r
-\r
-Something[^374]\r
-\r
-Something[^375]\r
-\r
-Something[^376]\r
-\r
-Something[^377]\r
-\r
-Something[^378]\r
-\r
-Something[^379]\r
-\r
-Something[^380]\r
-\r
-Something[^381]\r
-\r
-Something[^382]\r
-\r
-Something[^383]\r
-\r
-Something[^384]\r
-\r
-Something[^385]\r
-\r
-Something[^386]\r
-\r
-Something[^387]\r
-\r
-Something[^388]\r
-\r
-Something[^389]\r
-\r
-Something[^390]\r
-\r
-Something[^391]\r
-\r
-Something[^392]\r
-\r
-Something[^393]\r
-\r
-Something[^394]\r
-\r
-Something[^395]\r
-\r
-Something[^396]\r
-\r
-Something[^397]\r
-\r
-Something[^398]\r
-\r
-Something[^399]\r
-\r
-Something[^400]\r
-\r
-Something[^401]\r
-\r
-Something[^402]\r
-\r
-Something[^403]\r
-\r
-Something[^404]\r
-\r
-Something[^405]\r
-\r
-Something[^406]\r
-\r
-Something[^407]\r
-\r
-Something[^408]\r
-\r
-Something[^409]\r
-\r
-Something[^410]\r
-\r
-Something[^411]\r
-\r
-Something[^412]\r
-\r
-Something[^413]\r
-\r
-Something[^414]\r
-\r
-Something[^415]\r
-\r
-Something[^416]\r
-\r
-Something[^417]\r
-\r
-Something[^418]\r
-\r
-Something[^419]\r
-\r
-Something[^420]\r
-\r
-Something[^421]\r
-\r
-Something[^422]\r
-\r
-Something[^423]\r
-\r
-Something[^424]\r
-\r
-Something[^425]\r
-\r
-Something[^426]\r
-\r
-Something[^427]\r
-\r
-Something[^428]\r
-\r
-Something[^429]\r
-\r
-Something[^430]\r
-\r
-Something[^431]\r
-\r
-Something[^432]\r
-\r
-Something[^433]\r
-\r
-Something[^434]\r
-\r
-Something[^435]\r
-\r
-Something[^436]\r
-\r
-Something[^437]\r
-\r
-Something[^438]\r
-\r
-Something[^439]\r
-\r
-Something[^440]\r
-\r
-Something[^441]\r
-\r
-Something[^442]\r
-\r
-Something[^443]\r
-\r
-Something[^444]\r
-\r
-Something[^445]\r
-\r
-Something[^446]\r
-\r
-Something[^447]\r
-\r
-Something[^448]\r
-\r
-Something[^449]\r
-\r
-Something[^450]\r
-\r
-Something[^451]\r
-\r
-Something[^452]\r
-\r
-Something[^453]\r
-\r
-Something[^454]\r
-\r
-Something[^455]\r
-\r
-Something[^456]\r
-\r
-Something[^457]\r
-\r
-Something[^458]\r
-\r
-Something[^459]\r
-\r
-Something[^460]\r
-\r
-Something[^461]\r
-\r
-Something[^462]\r
-\r
-Something[^463]\r
-\r
-Something[^464]\r
-\r
-Something[^465]\r
-\r
-Something[^466]\r
-\r
-Something[^467]\r
-\r
-Something[^468]\r
-\r
-Something[^469]\r
-\r
-Something[^470]\r
-\r
-Something[^471]\r
-\r
-Something[^472]\r
-\r
-Something[^473]\r
-\r
-Something[^474]\r
-\r
-Something[^475]\r
-\r
-Something[^476]\r
-\r
-Something[^477]\r
-\r
-Something[^478]\r
-\r
-Something[^479]\r
-\r
-Something[^480]\r
-\r
-Something[^481]\r
-\r
-Something[^482]\r
-\r
-Something[^483]\r
-\r
-Something[^484]\r
-\r
-Something[^485]\r
-\r
-Something[^486]\r
-\r
-Something[^487]\r
-\r
-Something[^488]\r
-\r
-Something[^489]\r
-\r
-Something[^490]\r
-\r
-Something[^491]\r
-\r
-Something[^492]\r
-\r
-Something[^493]\r
-\r
-Something[^494]\r
-\r
-Something[^495]\r
-\r
-Something[^496]\r
-\r
-Something[^497]\r
-\r
-Something[^498]\r
-\r
-Something[^499]\r
-\r
-Something[^500]\r
-\r
-Something[^501]\r
-\r
-Something[^502]\r
-\r
-Something[^503]\r
-\r
-Something[^504]\r
-\r
-Something[^505]\r
-\r
-Something[^506]\r
-\r
-Something[^507]\r
-\r
-Something[^508]\r
-\r
-Something[^509]\r
-\r
-Something[^510]\r
-\r
-Something[^511]\r
-\r
-Something[^512]\r
-\r
-Something[^513]\r
-\r
-Something[^514]\r
-\r
-Something[^515]\r
-\r
-Something[^516]\r
-\r
-Something[^517]\r
-\r
-Something[^518]\r
-\r
-Something[^519]\r
-\r
-Something[^520]\r
-\r
-Something[^521]\r
-\r
-Something[^522]\r
-\r
-Something[^523]\r
-\r
-Something[^524]\r
-\r
-Something[^525]\r
-\r
-Something[^526]\r
-\r
-Something[^527]\r
-\r
-Something[^528]\r
-\r
-Something[^529]\r
-\r
-Something[^530]\r
-\r
-Something[^531]\r
-\r
-Something[^532]\r
-\r
-Something[^533]\r
-\r
-Something[^534]\r
-\r
-Something[^535]\r
-\r
-Something[^536]\r
-\r
-Something[^537]\r
-\r
-Something[^538]\r
-\r
-Something[^539]\r
-\r
-Something[^540]\r
-\r
-Something[^541]\r
-\r
-Something[^542]\r
-\r
-Something[^543]\r
-\r
-Something[^544]\r
-\r
-Something[^545]\r
-\r
-Something[^546]\r
-\r
-Something[^547]\r
-\r
-Something[^548]\r
-\r
-Something[^549]\r
-\r
-Something[^550]\r
-\r
-Something[^551]\r
-\r
-Something[^552]\r
-\r
-Something[^553]\r
-\r
-Something[^554]\r
-\r
-Something[^555]\r
-\r
-Something[^556]\r
-\r
-Something[^557]\r
-\r
-Something[^558]\r
-\r
-Something[^559]\r
-\r
-Something[^560]\r
-\r
-Something[^561]\r
-\r
-Something[^562]\r
-\r
-Something[^563]\r
-\r
-Something[^564]\r
-\r
-Something[^565]\r
-\r
-Something[^566]\r
-\r
-Something[^567]\r
-\r
-Something[^568]\r
-\r
-Something[^569]\r
-\r
-Something[^570]\r
-\r
-Something[^571]\r
-\r
-Something[^572]\r
-\r
-Something[^573]\r
-\r
-Something[^574]\r
-\r
-Something[^575]\r
-\r
-Something[^576]\r
-\r
-Something[^577]\r
-\r
-Something[^578]\r
-\r
-Something[^579]\r
-\r
-Something[^580]\r
-\r
-Something[^581]\r
-\r
-Something[^582]\r
-\r
-Something[^583]\r
-\r
-Something[^584]\r
-\r
-Something[^585]\r
-\r
-Something[^586]\r
-\r
-Something[^587]\r
-\r
-Something[^588]\r
-\r
-Something[^589]\r
-\r
-Something[^590]\r
-\r
-Something[^591]\r
-\r
-Something[^592]\r
-\r
-Something[^593]\r
-\r
-Something[^594]\r
-\r
-Something[^595]\r
-\r
-Something[^596]\r
-\r
-Something[^597]\r
-\r
-Something[^598]\r
-\r
-Something[^599]\r
-\r
-Something[^600]\r
-\r
-Something[^601]\r
-\r
-Something[^602]\r
-\r
-Something[^603]\r
-\r
-Something[^604]\r
-\r
-Something[^605]\r
-\r
-Something[^606]\r
-\r
-Something[^607]\r
-\r
-Something[^608]\r
-\r
-Something[^609]\r
-\r
-Something[^610]\r
-\r
-Something[^611]\r
-\r
-Something[^612]\r
-\r
-Something[^613]\r
-\r
-Something[^614]\r
-\r
-Something[^615]\r
-\r
-Something[^616]\r
-\r
-Something[^617]\r
-\r
-Something[^618]\r
-\r
-Something[^619]\r
-\r
-Something[^620]\r
-\r
-Something[^621]\r
-\r
-Something[^622]\r
-\r
-Something[^623]\r
-\r
-Something[^624]\r
-\r
-Something[^625]\r
-\r
-Something[^626]\r
-\r
-Something[^627]\r
-\r
-Something[^628]\r
-\r
-Something[^629]\r
-\r
-Something[^630]\r
-\r
-Something[^631]\r
-\r
-Something[^632]\r
-\r
-Something[^633]\r
-\r
-Something[^634]\r
-\r
-Something[^635]\r
-\r
-Something[^636]\r
-\r
-Something[^637]\r
-\r
-Something[^638]\r
-\r
-Something[^639]\r
-\r
-Something[^640]\r
-\r
-Something[^641]\r
-\r
-Something[^642]\r
-\r
-Something[^643]\r
-\r
-Something[^644]\r
-\r
-Something[^645]\r
-\r
-Something[^646]\r
-\r
-Something[^647]\r
-\r
-Something[^648]\r
-\r
-Something[^649]\r
-\r
-Something[^650]\r
-\r
-Something[^651]\r
-\r
-Something[^652]\r
-\r
-Something[^653]\r
-\r
-Something[^654]\r
-\r
-Something[^655]\r
-\r
-Something[^656]\r
-\r
-Something[^657]\r
-\r
-Something[^658]\r
-\r
-Something[^659]\r
-\r
-Something[^660]\r
-\r
-Something[^661]\r
-\r
-Something[^662]\r
-\r
-Something[^663]\r
-\r
-Something[^664]\r
-\r
-Something[^665]\r
-\r
-Something[^666]\r
-\r
-Something[^667]\r
-\r
-Something[^668]\r
-\r
-Something[^669]\r
-\r
-Something[^670]\r
-\r
-Something[^671]\r
-\r
-Something[^672]\r
-\r
-Something[^673]\r
-\r
-Something[^674]\r
-\r
-Something[^675]\r
-\r
-Something[^676]\r
-\r
-Something[^677]\r
-\r
-Something[^678]\r
-\r
-Something[^679]\r
-\r
-Something[^680]\r
-\r
-Something[^681]\r
-\r
-Something[^682]\r
-\r
-Something[^683]\r
-\r
-Something[^684]\r
-\r
-Something[^685]\r
-\r
-Something[^686]\r
-\r
-Something[^687]\r
-\r
-Something[^688]\r
-\r
-Something[^689]\r
-\r
-Something[^690]\r
-\r
-Something[^691]\r
-\r
-Something[^692]\r
-\r
-Something[^693]\r
-\r
-Something[^694]\r
-\r
-Something[^695]\r
-\r
-Something[^696]\r
-\r
-Something[^697]\r
-\r
-Something[^698]\r
-\r
-Something[^699]\r
-\r
-Something[^700]\r
-\r
-Something[^701]\r
-\r
-Something[^702]\r
-\r
-Something[^703]\r
-\r
-Something[^704]\r
-\r
-Something[^705]\r
-\r
-Something[^706]\r
-\r
-Something[^707]\r
-\r
-Something[^708]\r
-\r
-Something[^709]\r
-\r
-Something[^710]\r
-\r
-Something[^711]\r
-\r
-Something[^712]\r
-\r
-Something[^713]\r
-\r
-Something[^714]\r
-\r
-Something[^715]\r
-\r
-Something[^716]\r
-\r
-Something[^717]\r
-\r
-Something[^718]\r
-\r
-Something[^719]\r
-\r
-Something[^720]\r
-\r
-Something[^721]\r
-\r
-Something[^722]\r
-\r
-Something[^723]\r
-\r
-Something[^724]\r
-\r
-Something[^725]\r
-\r
-Something[^726]\r
-\r
-Something[^727]\r
-\r
-Something[^728]\r
-\r
-Something[^729]\r
-\r
-Something[^730]\r
-\r
-Something[^731]\r
-\r
-Something[^732]\r
-\r
-Something[^733]\r
-\r
-Something[^734]\r
-\r
-Something[^735]\r
-\r
-Something[^736]\r
-\r
-Something[^737]\r
-\r
-Something[^738]\r
-\r
-Something[^739]\r
-\r
-Something[^740]\r
-\r
-Something[^741]\r
-\r
-Something[^742]\r
-\r
-Something[^743]\r
-\r
-Something[^744]\r
-\r
-Something[^745]\r
-\r
-Something[^746]\r
-\r
-Something[^747]\r
-\r
-Something[^748]\r
-\r
-Something[^749]\r
-\r
-Something[^750]\r
-\r
-Something[^751]\r
-\r
-Something[^752]\r
-\r
-Something[^753]\r
-\r
-Something[^754]\r
-\r
-Something[^755]\r
-\r
-Something[^756]\r
-\r
-Something[^757]\r
-\r
-Something[^758]\r
-\r
-Something[^759]\r
-\r
-Something[^760]\r
-\r
-Something[^761]\r
-\r
-Something[^762]\r
-\r
-Something[^763]\r
-\r
-Something[^764]\r
-\r
-Something[^765]\r
-\r
-Something[^766]\r
-\r
-Something[^767]\r
-\r
-Something[^768]\r
-\r
-Something[^769]\r
-\r
-Something[^770]\r
-\r
-Something[^771]\r
-\r
-Something[^772]\r
-\r
-Something[^773]\r
-\r
-Something[^774]\r
-\r
-Something[^775]\r
-\r
-Something[^776]\r
-\r
-Something[^777]\r
-\r
-Something[^778]\r
-\r
-Something[^779]\r
-\r
-Something[^780]\r
-\r
-Something[^781]\r
-\r
-Something[^782]\r
-\r
-Something[^783]\r
-\r
-Something[^784]\r
-\r
-Something[^785]\r
-\r
-Something[^786]\r
-\r
-Something[^787]\r
-\r
-Something[^788]\r
-\r
-Something[^789]\r
-\r
-Something[^790]\r
-\r
-Something[^791]\r
-\r
-Something[^792]\r
-\r
-Something[^793]\r
-\r
-Something[^794]\r
-\r
-Something[^795]\r
-\r
-Something[^796]\r
-\r
-Something[^797]\r
-\r
-Something[^798]\r
-\r
-Something[^799]\r
-\r
-Something[^800]\r
-\r
-Something[^801]\r
-\r
-Something[^802]\r
-\r
-Something[^803]\r
-\r
-Something[^804]\r
-\r
-Something[^805]\r
-\r
-Something[^806]\r
-\r
-Something[^807]\r
-\r
-Something[^808]\r
-\r
-Something[^809]\r
-\r
-Something[^810]\r
-\r
-Something[^811]\r
-\r
-Something[^812]\r
-\r
-Something[^813]\r
-\r
-Something[^814]\r
-\r
-Something[^815]\r
-\r
-Something[^816]\r
-\r
-Something[^817]\r
-\r
-Something[^818]\r
-\r
-Something[^819]\r
-\r
-Something[^820]\r
-\r
-Something[^821]\r
-\r
-Something[^822]\r
-\r
-Something[^823]\r
-\r
-Something[^824]\r
-\r
-Something[^825]\r
-\r
-Something[^826]\r
-\r
-Something[^827]\r
-\r
-Something[^828]\r
-\r
-Something[^829]\r
-\r
-Something[^830]\r
-\r
-Something[^831]\r
-\r
-Something[^832]\r
-\r
-Something[^833]\r
-\r
-Something[^834]\r
-\r
-Something[^835]\r
-\r
-Something[^836]\r
-\r
-Something[^837]\r
-\r
-Something[^838]\r
-\r
-Something[^839]\r
-\r
-Something[^840]\r
-\r
-Something[^841]\r
-\r
-Something[^842]\r
-\r
-Something[^843]\r
-\r
-Something[^844]\r
-\r
-Something[^845]\r
-\r
-Something[^846]\r
-\r
-Something[^847]\r
-\r
-Something[^848]\r
-\r
-Something[^849]\r
-\r
-Something[^850]\r
-\r
-Something[^851]\r
-\r
-Something[^852]\r
-\r
-Something[^853]\r
-\r
-Something[^854]\r
-\r
-Something[^855]\r
-\r
-Something[^856]\r
-\r
-Something[^857]\r
-\r
-Something[^858]\r
-\r
-Something[^859]\r
-\r
-Something[^860]\r
-\r
-Something[^861]\r
-\r
-Something[^862]\r
-\r
-Something[^863]\r
-\r
-Something[^864]\r
-\r
-Something[^865]\r
-\r
-Something[^866]\r
-\r
-Something[^867]\r
-\r
-Something[^868]\r
-\r
-Something[^869]\r
-\r
-Something[^870]\r
-\r
-Something[^871]\r
-\r
-Something[^872]\r
-\r
-Something[^873]\r
-\r
-Something[^874]\r
-\r
-Something[^875]\r
-\r
-Something[^876]\r
-\r
-Something[^877]\r
-\r
-Something[^878]\r
-\r
-Something[^879]\r
-\r
-Something[^880]\r
-\r
-Something[^881]\r
-\r
-Something[^882]\r
-\r
-Something[^883]\r
-\r
-Something[^884]\r
-\r
-Something[^885]\r
-\r
-Something[^886]\r
-\r
-Something[^887]\r
-\r
-Something[^888]\r
-\r
-Something[^889]\r
-\r
-Something[^890]\r
-\r
-Something[^891]\r
-\r
-Something[^892]\r
-\r
-Something[^893]\r
-\r
-Something[^894]\r
-\r
-Something[^895]\r
-\r
-Something[^896]\r
-\r
-Something[^897]\r
-\r
-Something[^898]\r
-\r
-Something[^899]\r
-\r
-Something[^900]\r
-\r
-Something[^901]\r
-\r
-Something[^902]\r
-\r
-Something[^903]\r
-\r
-Something[^904]\r
-\r
-Something[^905]\r
-\r
-Something[^906]\r
-\r
-Something[^907]\r
-\r
-Something[^908]\r
-\r
-Something[^909]\r
-\r
-Something[^910]\r
-\r
-Something[^911]\r
-\r
-Something[^912]\r
-\r
-Something[^913]\r
-\r
-Something[^914]\r
-\r
-Something[^915]\r
-\r
-Something[^916]\r
-\r
-Something[^917]\r
-\r
-Something[^918]\r
-\r
-Something[^919]\r
-\r
-Something[^920]\r
-\r
-Something[^921]\r
-\r
-Something[^922]\r
-\r
-Something[^923]\r
-\r
-Something[^924]\r
-\r
-Something[^925]\r
-\r
-Something[^926]\r
-\r
-Something[^927]\r
-\r
-Something[^928]\r
-\r
-Something[^929]\r
-\r
-Something[^930]\r
-\r
-Something[^931]\r
-\r
-Something[^932]\r
-\r
-Something[^933]\r
-\r
-Something[^934]\r
-\r
-Something[^935]\r
-\r
-Something[^936]\r
-\r
-Something[^937]\r
-\r
-Something[^938]\r
-\r
-Something[^939]\r
-\r
-Something[^940]\r
-\r
-Something[^941]\r
-\r
-Something[^942]\r
-\r
-Something[^943]\r
-\r
-Something[^944]\r
-\r
-Something[^945]\r
-\r
-Something[^946]\r
-\r
-Something[^947]\r
-\r
-Something[^948]\r
-\r
-Something[^949]\r
-\r
-Something[^950]\r
-\r
-Something[^951]\r
-\r
-Something[^952]\r
-\r
-Something[^953]\r
-\r
-Something[^954]\r
-\r
-Something[^955]\r
-\r
-Something[^956]\r
-\r
-Something[^957]\r
-\r
-Something[^958]\r
-\r
-Something[^959]\r
-\r
-Something[^960]\r
-\r
-Something[^961]\r
-\r
-Something[^962]\r
-\r
-Something[^963]\r
-\r
-Something[^964]\r
-\r
-Something[^965]\r
-\r
-Something[^966]\r
-\r
-Something[^967]\r
-\r
-Something[^968]\r
-\r
-Something[^969]\r
-\r
-Something[^970]\r
-\r
-Something[^971]\r
-\r
-Something[^972]\r
-\r
-Something[^973]\r
-\r
-Something[^974]\r
-\r
-Something[^975]\r
-\r
-Something[^976]\r
-\r
-Something[^977]\r
-\r
-Something[^978]\r
-\r
-Something[^979]\r
-\r
-Something[^980]\r
-\r
-Something[^981]\r
-\r
-Something[^982]\r
-\r
-Something[^983]\r
-\r
-Something[^984]\r
-\r
-Something[^985]\r
-\r
-Something[^986]\r
-\r
-Something[^987]\r
-\r
-Something[^988]\r
-\r
-Something[^989]\r
-\r
-Something[^990]\r
-\r
-Something[^991]\r
-\r
-Something[^992]\r
-\r
-Something[^993]\r
-\r
-Something[^994]\r
-\r
-Something[^995]\r
-\r
-Something[^996]\r
-\r
-Something[^997]\r
-\r
-Something[^998]\r
-\r
-Something[^999]\r
-\r
-Something[^1000]\r
-\r
-Something[^1001]\r
-\r
-Something[^1002]\r
-\r
-Something[^1003]\r
-\r
-Something[^1004]\r
-\r
-Something[^1005]\r
-\r
-Something[^1006]\r
-\r
-Something[^1007]\r
-\r
-Something[^1008]\r
-\r
-Something[^1009]\r
-\r
-Something[^1010]\r
-\r
-Something[^1011]\r
-\r
-Something[^1012]\r
-\r
-Something[^1013]\r
-\r
-Something[^1014]\r
-\r
-Something[^1015]\r
-\r
-Something[^1016]\r
-\r
-Something[^1017]\r
-\r
-Something[^1018]\r
-\r
-Something[^1019]\r
-\r
-Something[^1020]\r
-\r
-Something[^1021]\r
-\r
-Something[^1022]\r
-\r
-Something[^1023]\r
-\r
-Something[^1024]\r
-\r
-Something[^1025]\r
-\r
-Something[^1026]\r
-\r
-Something[^1027]\r
-\r
-Something[^1028]\r
-\r
-Something[^1029]\r
-\r
-Something[^1030]\r
-\r
-Something[^1031]\r
-\r
-Something[^1032]\r
-\r
-Something[^1033]\r
-\r
-Something[^1034]\r
-\r
-Something[^1035]\r
-\r
-Something[^1036]\r
-\r
-Something[^1037]\r
-\r
-Something[^1038]\r
-\r
-Something[^1039]\r
-\r
-Something[^1040]\r
-\r
-Something[^1041]\r
-\r
-Something[^1042]\r
-\r
-Something[^1043]\r
-\r
-Something[^1044]\r
-\r
-Something[^1045]\r
-\r
-Something[^1046]\r
-\r
-Something[^1047]\r
-\r
-Something[^1048]\r
-\r
-Something[^1049]\r
-\r
-Something[^1050]\r
-\r
-Something[^1051]\r
-\r
-Something[^1052]\r
-\r
-Something[^1053]\r
-\r
-Something[^1054]\r
-\r
-Something[^1055]\r
-\r
-Something[^1056]\r
-\r
-Something[^1057]\r
-\r
-Something[^1058]\r
-\r
-Something[^1059]\r
-\r
-Something[^1060]\r
-\r
-Something[^1061]\r
-\r
-Something[^1062]\r
-\r
-Something[^1063]\r
-\r
-Something[^1064]\r
-\r
-Something[^1065]\r
-\r
-Something[^1066]\r
-\r
-Something[^1067]\r
-\r
-Something[^1068]\r
-\r
-Something[^1069]\r
-\r
-Something[^1070]\r
-\r
-Something[^1071]\r
-\r
-Something[^1072]\r
-\r
-Something[^1073]\r
-\r
-Something[^1074]\r
-\r
-Something[^1075]\r
-\r
-Something[^1076]\r
-\r
-Something[^1077]\r
-\r
-Something[^1078]\r
-\r
-Something[^1079]\r
-\r
-Something[^1080]\r
-\r
-Something[^1081]\r
-\r
-Something[^1082]\r
-\r
-Something[^1083]\r
-\r
-Something[^1084]\r
-\r
-Something[^1085]\r
-\r
-Something[^1086]\r
-\r
-Something[^1087]\r
-\r
-Something[^1088]\r
-\r
-Something[^1089]\r
-\r
-Something[^1090]\r
-\r
-Something[^1091]\r
-\r
-Something[^1092]\r
-\r
-Something[^1093]\r
-\r
-Something[^1094]\r
-\r
-Something[^1095]\r
-\r
-Something[^1096]\r
-\r
-Something[^1097]\r
-\r
-Something[^1098]\r
-\r
-Something[^1099]\r
-\r
-Something[^1100]\r
-\r
-Something[^1101]\r
-\r
-Something[^1102]\r
-\r
-Something[^1103]\r
-\r
-Something[^1104]\r
-\r
-Something[^1105]\r
-\r
-Something[^1106]\r
-\r
-Something[^1107]\r
-\r
-Something[^1108]\r
-\r
-Something[^1109]\r
-\r
-Something[^1110]\r
-\r
-Something[^1111]\r
-\r
-Something[^1112]\r
-\r
-Something[^1113]\r
-\r
-Something[^1114]\r
-\r
-Something[^1115]\r
-\r
-Something[^1116]\r
-\r
-Something[^1117]\r
-\r
-Something[^1118]\r
-\r
-Something[^1119]\r
-\r
-Something[^1120]\r
-\r
-Something[^1121]\r
-\r
-Something[^1122]\r
-\r
-Something[^1123]\r
-\r
-Something[^1124]\r
-\r
-Something[^1125]\r
-\r
-Something[^1126]\r
-\r
-Something[^1127]\r
-\r
-Something[^1128]\r
-\r
-Something[^1129]\r
-\r
-Something[^1130]\r
-\r
-Something[^1131]\r
-\r
-Something[^1132]\r
-\r
-Something[^1133]\r
-\r
-Something[^1134]\r
-\r
-Something[^1135]\r
-\r
-Something[^1136]\r
-\r
-Something[^1137]\r
-\r
-Something[^1138]\r
-\r
-Something[^1139]\r
-\r
-Something[^1140]\r
-\r
-Something[^1141]\r
-\r
-Something[^1142]\r
-\r
-Something[^1143]\r
-\r
-Something[^1144]\r
-\r
-Something[^1145]\r
-\r
-Something[^1146]\r
-\r
-Something[^1147]\r
-\r
-Something[^1148]\r
-\r
-Something[^1149]\r
-\r
-Something[^1150]\r
-\r
-Something[^1151]\r
-\r
-Something[^1152]\r
-\r
-Something[^1153]\r
-\r
-Something[^1154]\r
-\r
-Something[^1155]\r
-\r
-Something[^1156]\r
-\r
-Something[^1157]\r
-\r
-Something[^1158]\r
-\r
-Something[^1159]\r
-\r
-Something[^1160]\r
-\r
-Something[^1161]\r
-\r
-Something[^1162]\r
-\r
-Something[^1163]\r
-\r
-Something[^1164]\r
-\r
-Something[^1165]\r
-\r
-Something[^1166]\r
-\r
-Something[^1167]\r
-\r
-Something[^1168]\r
-\r
-Something[^1169]\r
-\r
-Something[^1170]\r
-\r
-Something[^1171]\r
-\r
-Something[^1172]\r
-\r
-Something[^1173]\r
-\r
-Something[^1174]\r
-\r
-Something[^1175]\r
-\r
-Something[^1176]\r
-\r
-Something[^1177]\r
-\r
-Something[^1178]\r
-\r
-Something[^1179]\r
-\r
-Something[^1180]\r
-\r
-Something[^1181]\r
-\r
-Something[^1182]\r
-\r
-Something[^1183]\r
-\r
-Something[^1184]\r
-\r
-Something[^1185]\r
-\r
-Something[^1186]\r
-\r
-Something[^1187]\r
-\r
-Something[^1188]\r
-\r
-Something[^1189]\r
-\r
-Something[^1190]\r
-\r
-Something[^1191]\r
-\r
-Something[^1192]\r
-\r
-Something[^1193]\r
-\r
-Something[^1194]\r
-\r
-Something[^1195]\r
-\r
-Something[^1196]\r
-\r
-Something[^1197]\r
-\r
-Something[^1198]\r
-\r
-Something[^1199]\r
-\r
-[^1]: Another thing\r
-\r
-[^2]: Another thing\r
-\r
-[^3]: Another thing\r
-\r
-[^4]: Another thing\r
-\r
-[^5]: Another thing\r
-\r
-[^6]: Another thing\r
-\r
-[^7]: Another thing\r
-\r
-[^8]: Another thing\r
-\r
-[^9]: Another thing\r
-\r
-[^10]: Another thing\r
-\r
-[^11]: Another thing\r
-\r
-[^12]: Another thing\r
-\r
-[^13]: Another thing\r
-\r
-[^14]: Another thing\r
-\r
-[^15]: Another thing\r
-\r
-[^16]: Another thing\r
-\r
-[^17]: Another thing\r
-\r
-[^18]: Another thing\r
-\r
-[^19]: Another thing\r
-\r
-[^20]: Another thing\r
-\r
-[^21]: Another thing\r
-\r
-[^22]: Another thing\r
-\r
-[^23]: Another thing\r
-\r
-[^24]: Another thing\r
-\r
-[^25]: Another thing\r
-\r
-[^26]: Another thing\r
-\r
-[^27]: Another thing\r
-\r
-[^28]: Another thing\r
-\r
-[^29]: Another thing\r
-\r
-[^30]: Another thing\r
-\r
-[^31]: Another thing\r
-\r
-[^32]: Another thing\r
-\r
-[^33]: Another thing\r
-\r
-[^34]: Another thing\r
-\r
-[^35]: Another thing\r
-\r
-[^36]: Another thing\r
-\r
-[^37]: Another thing\r
-\r
-[^38]: Another thing\r
-\r
-[^39]: Another thing\r
-\r
-[^40]: Another thing\r
-\r
-[^41]: Another thing\r
-\r
-[^42]: Another thing\r
-\r
-[^43]: Another thing\r
-\r
-[^44]: Another thing\r
-\r
-[^45]: Another thing\r
-\r
-[^46]: Another thing\r
-\r
-[^47]: Another thing\r
-\r
-[^48]: Another thing\r
-\r
-[^49]: Another thing\r
-\r
-[^50]: Another thing\r
-\r
-[^51]: Another thing\r
-\r
-[^52]: Another thing\r
-\r
-[^53]: Another thing\r
-\r
-[^54]: Another thing\r
-\r
-[^55]: Another thing\r
-\r
-[^56]: Another thing\r
-\r
-[^57]: Another thing\r
-\r
-[^58]: Another thing\r
-\r
-[^59]: Another thing\r
-\r
-[^60]: Another thing\r
-\r
-[^61]: Another thing\r
-\r
-[^62]: Another thing\r
-\r
-[^63]: Another thing\r
-\r
-[^64]: Another thing\r
-\r
-[^65]: Another thing\r
-\r
-[^66]: Another thing\r
-\r
-[^67]: Another thing\r
-\r
-[^68]: Another thing\r
-\r
-[^69]: Another thing\r
-\r
-[^70]: Another thing\r
-\r
-[^71]: Another thing\r
-\r
-[^72]: Another thing\r
-\r
-[^73]: Another thing\r
-\r
-[^74]: Another thing\r
-\r
-[^75]: Another thing\r
-\r
-[^76]: Another thing\r
-\r
-[^77]: Another thing\r
-\r
-[^78]: Another thing\r
-\r
-[^79]: Another thing\r
-\r
-[^80]: Another thing\r
-\r
-[^81]: Another thing\r
-\r
-[^82]: Another thing\r
-\r
-[^83]: Another thing\r
-\r
-[^84]: Another thing\r
-\r
-[^85]: Another thing\r
-\r
-[^86]: Another thing\r
-\r
-[^87]: Another thing\r
-\r
-[^88]: Another thing\r
-\r
-[^89]: Another thing\r
-\r
-[^90]: Another thing\r
-\r
-[^91]: Another thing\r
-\r
-[^92]: Another thing\r
-\r
-[^93]: Another thing\r
-\r
-[^94]: Another thing\r
-\r
-[^95]: Another thing\r
-\r
-[^96]: Another thing\r
-\r
-[^97]: Another thing\r
-\r
-[^98]: Another thing\r
-\r
-[^99]: Another thing\r
-\r
-[^100]: Another thing\r
-\r
-[^101]: Another thing\r
-\r
-[^102]: Another thing\r
-\r
-[^103]: Another thing\r
-\r
-[^104]: Another thing\r
-\r
-[^105]: Another thing\r
-\r
-[^106]: Another thing\r
-\r
-[^107]: Another thing\r
-\r
-[^108]: Another thing\r
-\r
-[^109]: Another thing\r
-\r
-[^110]: Another thing\r
-\r
-[^111]: Another thing\r
-\r
-[^112]: Another thing\r
-\r
-[^113]: Another thing\r
-\r
-[^114]: Another thing\r
-\r
-[^115]: Another thing\r
-\r
-[^116]: Another thing\r
-\r
-[^117]: Another thing\r
-\r
-[^118]: Another thing\r
-\r
-[^119]: Another thing\r
-\r
-[^120]: Another thing\r
-\r
-[^121]: Another thing\r
-\r
-[^122]: Another thing\r
-\r
-[^123]: Another thing\r
-\r
-[^124]: Another thing\r
-\r
-[^125]: Another thing\r
-\r
-[^126]: Another thing\r
-\r
-[^127]: Another thing\r
-\r
-[^128]: Another thing\r
-\r
-[^129]: Another thing\r
-\r
-[^130]: Another thing\r
-\r
-[^131]: Another thing\r
-\r
-[^132]: Another thing\r
-\r
-[^133]: Another thing\r
-\r
-[^134]: Another thing\r
-\r
-[^135]: Another thing\r
-\r
-[^136]: Another thing\r
-\r
-[^137]: Another thing\r
-\r
-[^138]: Another thing\r
-\r
-[^139]: Another thing\r
-\r
-[^140]: Another thing\r
-\r
-[^141]: Another thing\r
-\r
-[^142]: Another thing\r
-\r
-[^143]: Another thing\r
-\r
-[^144]: Another thing\r
-\r
-[^145]: Another thing\r
-\r
-[^146]: Another thing\r
-\r
-[^147]: Another thing\r
-\r
-[^148]: Another thing\r
-\r
-[^149]: Another thing\r
-\r
-[^150]: Another thing\r
-\r
-[^151]: Another thing\r
-\r
-[^152]: Another thing\r
-\r
-[^153]: Another thing\r
-\r
-[^154]: Another thing\r
-\r
-[^155]: Another thing\r
-\r
-[^156]: Another thing\r
-\r
-[^157]: Another thing\r
-\r
-[^158]: Another thing\r
-\r
-[^159]: Another thing\r
-\r
-[^160]: Another thing\r
-\r
-[^161]: Another thing\r
-\r
-[^162]: Another thing\r
-\r
-[^163]: Another thing\r
-\r
-[^164]: Another thing\r
-\r
-[^165]: Another thing\r
-\r
-[^166]: Another thing\r
-\r
-[^167]: Another thing\r
-\r
-[^168]: Another thing\r
-\r
-[^169]: Another thing\r
-\r
-[^170]: Another thing\r
-\r
-[^171]: Another thing\r
-\r
-[^172]: Another thing\r
-\r
-[^173]: Another thing\r
-\r
-[^174]: Another thing\r
-\r
-[^175]: Another thing\r
-\r
-[^176]: Another thing\r
-\r
-[^177]: Another thing\r
-\r
-[^178]: Another thing\r
-\r
-[^179]: Another thing\r
-\r
-[^180]: Another thing\r
-\r
-[^181]: Another thing\r
-\r
-[^182]: Another thing\r
-\r
-[^183]: Another thing\r
-\r
-[^184]: Another thing\r
-\r
-[^185]: Another thing\r
-\r
-[^186]: Another thing\r
-\r
-[^187]: Another thing\r
-\r
-[^188]: Another thing\r
-\r
-[^189]: Another thing\r
-\r
-[^190]: Another thing\r
-\r
-[^191]: Another thing\r
-\r
-[^192]: Another thing\r
-\r
-[^193]: Another thing\r
-\r
-[^194]: Another thing\r
-\r
-[^195]: Another thing\r
-\r
-[^196]: Another thing\r
-\r
-[^197]: Another thing\r
-\r
-[^198]: Another thing\r
-\r
-[^199]: Another thing\r
-\r
-[^200]: Another thing\r
-\r
-[^201]: Another thing\r
-\r
-[^202]: Another thing\r
-\r
-[^203]: Another thing\r
-\r
-[^204]: Another thing\r
-\r
-[^205]: Another thing\r
-\r
-[^206]: Another thing\r
-\r
-[^207]: Another thing\r
-\r
-[^208]: Another thing\r
-\r
-[^209]: Another thing\r
-\r
-[^210]: Another thing\r
-\r
-[^211]: Another thing\r
-\r
-[^212]: Another thing\r
-\r
-[^213]: Another thing\r
-\r
-[^214]: Another thing\r
-\r
-[^215]: Another thing\r
-\r
-[^216]: Another thing\r
-\r
-[^217]: Another thing\r
-\r
-[^218]: Another thing\r
-\r
-[^219]: Another thing\r
-\r
-[^220]: Another thing\r
-\r
-[^221]: Another thing\r
-\r
-[^222]: Another thing\r
-\r
-[^223]: Another thing\r
-\r
-[^224]: Another thing\r
-\r
-[^225]: Another thing\r
-\r
-[^226]: Another thing\r
-\r
-[^227]: Another thing\r
-\r
-[^228]: Another thing\r
-\r
-[^229]: Another thing\r
-\r
-[^230]: Another thing\r
-\r
-[^231]: Another thing\r
-\r
-[^232]: Another thing\r
-\r
-[^233]: Another thing\r
-\r
-[^234]: Another thing\r
-\r
-[^235]: Another thing\r
-\r
-[^236]: Another thing\r
-\r
-[^237]: Another thing\r
-\r
-[^238]: Another thing\r
-\r
-[^239]: Another thing\r
-\r
-[^240]: Another thing\r
-\r
-[^241]: Another thing\r
-\r
-[^242]: Another thing\r
-\r
-[^243]: Another thing\r
-\r
-[^244]: Another thing\r
-\r
-[^245]: Another thing\r
-\r
-[^246]: Another thing\r
-\r
-[^247]: Another thing\r
-\r
-[^248]: Another thing\r
-\r
-[^249]: Another thing\r
-\r
-[^250]: Another thing\r
-\r
-[^251]: Another thing\r
-\r
-[^252]: Another thing\r
-\r
-[^253]: Another thing\r
-\r
-[^254]: Another thing\r
-\r
-[^255]: Another thing\r
-\r
-[^256]: Another thing\r
-\r
-[^257]: Another thing\r
-\r
-[^258]: Another thing\r
-\r
-[^259]: Another thing\r
-\r
-[^260]: Another thing\r
-\r
-[^261]: Another thing\r
-\r
-[^262]: Another thing\r
-\r
-[^263]: Another thing\r
-\r
-[^264]: Another thing\r
-\r
-[^265]: Another thing\r
-\r
-[^266]: Another thing\r
-\r
-[^267]: Another thing\r
-\r
-[^268]: Another thing\r
-\r
-[^269]: Another thing\r
-\r
-[^270]: Another thing\r
-\r
-[^271]: Another thing\r
-\r
-[^272]: Another thing\r
-\r
-[^273]: Another thing\r
-\r
-[^274]: Another thing\r
-\r
-[^275]: Another thing\r
-\r
-[^276]: Another thing\r
-\r
-[^277]: Another thing\r
-\r
-[^278]: Another thing\r
-\r
-[^279]: Another thing\r
-\r
-[^280]: Another thing\r
-\r
-[^281]: Another thing\r
-\r
-[^282]: Another thing\r
-\r
-[^283]: Another thing\r
-\r
-[^284]: Another thing\r
-\r
-[^285]: Another thing\r
-\r
-[^286]: Another thing\r
-\r
-[^287]: Another thing\r
-\r
-[^288]: Another thing\r
-\r
-[^289]: Another thing\r
-\r
-[^290]: Another thing\r
-\r
-[^291]: Another thing\r
-\r
-[^292]: Another thing\r
-\r
-[^293]: Another thing\r
-\r
-[^294]: Another thing\r
-\r
-[^295]: Another thing\r
-\r
-[^296]: Another thing\r
-\r
-[^297]: Another thing\r
-\r
-[^298]: Another thing\r
-\r
-[^299]: Another thing\r
-\r
-[^300]: Another thing\r
-\r
-[^301]: Another thing\r
-\r
-[^302]: Another thing\r
-\r
-[^303]: Another thing\r
-\r
-[^304]: Another thing\r
-\r
-[^305]: Another thing\r
-\r
-[^306]: Another thing\r
-\r
-[^307]: Another thing\r
-\r
-[^308]: Another thing\r
-\r
-[^309]: Another thing\r
-\r
-[^310]: Another thing\r
-\r
-[^311]: Another thing\r
-\r
-[^312]: Another thing\r
-\r
-[^313]: Another thing\r
-\r
-[^314]: Another thing\r
-\r
-[^315]: Another thing\r
-\r
-[^316]: Another thing\r
-\r
-[^317]: Another thing\r
-\r
-[^318]: Another thing\r
-\r
-[^319]: Another thing\r
-\r
-[^320]: Another thing\r
-\r
-[^321]: Another thing\r
-\r
-[^322]: Another thing\r
-\r
-[^323]: Another thing\r
-\r
-[^324]: Another thing\r
-\r
-[^325]: Another thing\r
-\r
-[^326]: Another thing\r
-\r
-[^327]: Another thing\r
-\r
-[^328]: Another thing\r
-\r
-[^329]: Another thing\r
-\r
-[^330]: Another thing\r
-\r
-[^331]: Another thing\r
-\r
-[^332]: Another thing\r
-\r
-[^333]: Another thing\r
-\r
-[^334]: Another thing\r
-\r
-[^335]: Another thing\r
-\r
-[^336]: Another thing\r
-\r
-[^337]: Another thing\r
-\r
-[^338]: Another thing\r
-\r
-[^339]: Another thing\r
-\r
-[^340]: Another thing\r
-\r
-[^341]: Another thing\r
-\r
-[^342]: Another thing\r
-\r
-[^343]: Another thing\r
-\r
-[^344]: Another thing\r
-\r
-[^345]: Another thing\r
-\r
-[^346]: Another thing\r
-\r
-[^347]: Another thing\r
-\r
-[^348]: Another thing\r
-\r
-[^349]: Another thing\r
-\r
-[^350]: Another thing\r
-\r
-[^351]: Another thing\r
-\r
-[^352]: Another thing\r
-\r
-[^353]: Another thing\r
-\r
-[^354]: Another thing\r
-\r
-[^355]: Another thing\r
-\r
-[^356]: Another thing\r
-\r
-[^357]: Another thing\r
-\r
-[^358]: Another thing\r
-\r
-[^359]: Another thing\r
-\r
-[^360]: Another thing\r
-\r
-[^361]: Another thing\r
-\r
-[^362]: Another thing\r
-\r
-[^363]: Another thing\r
-\r
-[^364]: Another thing\r
-\r
-[^365]: Another thing\r
-\r
-[^366]: Another thing\r
-\r
-[^367]: Another thing\r
-\r
-[^368]: Another thing\r
-\r
-[^369]: Another thing\r
-\r
-[^370]: Another thing\r
-\r
-[^371]: Another thing\r
-\r
-[^372]: Another thing\r
-\r
-[^373]: Another thing\r
-\r
-[^374]: Another thing\r
-\r
-[^375]: Another thing\r
-\r
-[^376]: Another thing\r
-\r
-[^377]: Another thing\r
-\r
-[^378]: Another thing\r
-\r
-[^379]: Another thing\r
-\r
-[^380]: Another thing\r
-\r
-[^381]: Another thing\r
-\r
-[^382]: Another thing\r
-\r
-[^383]: Another thing\r
-\r
-[^384]: Another thing\r
-\r
-[^385]: Another thing\r
-\r
-[^386]: Another thing\r
-\r
-[^387]: Another thing\r
-\r
-[^388]: Another thing\r
-\r
-[^389]: Another thing\r
-\r
-[^390]: Another thing\r
-\r
-[^391]: Another thing\r
-\r
-[^392]: Another thing\r
-\r
-[^393]: Another thing\r
-\r
-[^394]: Another thing\r
-\r
-[^395]: Another thing\r
-\r
-[^396]: Another thing\r
-\r
-[^397]: Another thing\r
-\r
-[^398]: Another thing\r
-\r
-[^399]: Another thing\r
-\r
-[^400]: Another thing\r
-\r
-[^401]: Another thing\r
-\r
-[^402]: Another thing\r
-\r
-[^403]: Another thing\r
-\r
-[^404]: Another thing\r
-\r
-[^405]: Another thing\r
-\r
-[^406]: Another thing\r
-\r
-[^407]: Another thing\r
-\r
-[^408]: Another thing\r
-\r
-[^409]: Another thing\r
-\r
-[^410]: Another thing\r
-\r
-[^411]: Another thing\r
-\r
-[^412]: Another thing\r
-\r
-[^413]: Another thing\r
-\r
-[^414]: Another thing\r
-\r
-[^415]: Another thing\r
-\r
-[^416]: Another thing\r
-\r
-[^417]: Another thing\r
-\r
-[^418]: Another thing\r
-\r
-[^419]: Another thing\r
-\r
-[^420]: Another thing\r
-\r
-[^421]: Another thing\r
-\r
-[^422]: Another thing\r
-\r
-[^423]: Another thing\r
-\r
-[^424]: Another thing\r
-\r
-[^425]: Another thing\r
-\r
-[^426]: Another thing\r
-\r
-[^427]: Another thing\r
-\r
-[^428]: Another thing\r
-\r
-[^429]: Another thing\r
-\r
-[^430]: Another thing\r
-\r
-[^431]: Another thing\r
-\r
-[^432]: Another thing\r
-\r
-[^433]: Another thing\r
-\r
-[^434]: Another thing\r
-\r
-[^435]: Another thing\r
-\r
-[^436]: Another thing\r
-\r
-[^437]: Another thing\r
-\r
-[^438]: Another thing\r
-\r
-[^439]: Another thing\r
-\r
-[^440]: Another thing\r
-\r
-[^441]: Another thing\r
-\r
-[^442]: Another thing\r
-\r
-[^443]: Another thing\r
-\r
-[^444]: Another thing\r
-\r
-[^445]: Another thing\r
-\r
-[^446]: Another thing\r
-\r
-[^447]: Another thing\r
-\r
-[^448]: Another thing\r
-\r
-[^449]: Another thing\r
-\r
-[^450]: Another thing\r
-\r
-[^451]: Another thing\r
-\r
-[^452]: Another thing\r
-\r
-[^453]: Another thing\r
-\r
-[^454]: Another thing\r
-\r
-[^455]: Another thing\r
-\r
-[^456]: Another thing\r
-\r
-[^457]: Another thing\r
-\r
-[^458]: Another thing\r
-\r
-[^459]: Another thing\r
-\r
-[^460]: Another thing\r
-\r
-[^461]: Another thing\r
-\r
-[^462]: Another thing\r
-\r
-[^463]: Another thing\r
-\r
-[^464]: Another thing\r
-\r
-[^465]: Another thing\r
-\r
-[^466]: Another thing\r
-\r
-[^467]: Another thing\r
-\r
-[^468]: Another thing\r
-\r
-[^469]: Another thing\r
-\r
-[^470]: Another thing\r
-\r
-[^471]: Another thing\r
-\r
-[^472]: Another thing\r
-\r
-[^473]: Another thing\r
-\r
-[^474]: Another thing\r
-\r
-[^475]: Another thing\r
-\r
-[^476]: Another thing\r
-\r
-[^477]: Another thing\r
-\r
-[^478]: Another thing\r
-\r
-[^479]: Another thing\r
-\r
-[^480]: Another thing\r
-\r
-[^481]: Another thing\r
-\r
-[^482]: Another thing\r
-\r
-[^483]: Another thing\r
-\r
-[^484]: Another thing\r
-\r
-[^485]: Another thing\r
-\r
-[^486]: Another thing\r
-\r
-[^487]: Another thing\r
-\r
-[^488]: Another thing\r
-\r
-[^489]: Another thing\r
-\r
-[^490]: Another thing\r
-\r
-[^491]: Another thing\r
-\r
-[^492]: Another thing\r
-\r
-[^493]: Another thing\r
-\r
-[^494]: Another thing\r
-\r
-[^495]: Another thing\r
-\r
-[^496]: Another thing\r
-\r
-[^497]: Another thing\r
-\r
-[^498]: Another thing\r
-\r
-[^499]: Another thing\r
-\r
-[^500]: Another thing\r
-\r
-[^501]: Another thing\r
-\r
-[^502]: Another thing\r
-\r
-[^503]: Another thing\r
-\r
-[^504]: Another thing\r
-\r
-[^505]: Another thing\r
-\r
-[^506]: Another thing\r
-\r
-[^507]: Another thing\r
-\r
-[^508]: Another thing\r
-\r
-[^509]: Another thing\r
-\r
-[^510]: Another thing\r
-\r
-[^511]: Another thing\r
-\r
-[^512]: Another thing\r
-\r
-[^513]: Another thing\r
-\r
-[^514]: Another thing\r
-\r
-[^515]: Another thing\r
-\r
-[^516]: Another thing\r
-\r
-[^517]: Another thing\r
-\r
-[^518]: Another thing\r
-\r
-[^519]: Another thing\r
-\r
-[^520]: Another thing\r
-\r
-[^521]: Another thing\r
-\r
-[^522]: Another thing\r
-\r
-[^523]: Another thing\r
-\r
-[^524]: Another thing\r
-\r
-[^525]: Another thing\r
-\r
-[^526]: Another thing\r
-\r
-[^527]: Another thing\r
-\r
-[^528]: Another thing\r
-\r
-[^529]: Another thing\r
-\r
-[^530]: Another thing\r
-\r
-[^531]: Another thing\r
-\r
-[^532]: Another thing\r
-\r
-[^533]: Another thing\r
-\r
-[^534]: Another thing\r
-\r
-[^535]: Another thing\r
-\r
-[^536]: Another thing\r
-\r
-[^537]: Another thing\r
-\r
-[^538]: Another thing\r
-\r
-[^539]: Another thing\r
-\r
-[^540]: Another thing\r
-\r
-[^541]: Another thing\r
-\r
-[^542]: Another thing\r
-\r
-[^543]: Another thing\r
-\r
-[^544]: Another thing\r
-\r
-[^545]: Another thing\r
-\r
-[^546]: Another thing\r
-\r
-[^547]: Another thing\r
-\r
-[^548]: Another thing\r
-\r
-[^549]: Another thing\r
-\r
-[^550]: Another thing\r
-\r
-[^551]: Another thing\r
-\r
-[^552]: Another thing\r
-\r
-[^553]: Another thing\r
-\r
-[^554]: Another thing\r
-\r
-[^555]: Another thing\r
-\r
-[^556]: Another thing\r
-\r
-[^557]: Another thing\r
-\r
-[^558]: Another thing\r
-\r
-[^559]: Another thing\r
-\r
-[^560]: Another thing\r
-\r
-[^561]: Another thing\r
-\r
-[^562]: Another thing\r
-\r
-[^563]: Another thing\r
-\r
-[^564]: Another thing\r
-\r
-[^565]: Another thing\r
-\r
-[^566]: Another thing\r
-\r
-[^567]: Another thing\r
-\r
-[^568]: Another thing\r
-\r
-[^569]: Another thing\r
-\r
-[^570]: Another thing\r
-\r
-[^571]: Another thing\r
-\r
-[^572]: Another thing\r
-\r
-[^573]: Another thing\r
-\r
-[^574]: Another thing\r
-\r
-[^575]: Another thing\r
-\r
-[^576]: Another thing\r
-\r
-[^577]: Another thing\r
-\r
-[^578]: Another thing\r
-\r
-[^579]: Another thing\r
-\r
-[^580]: Another thing\r
-\r
-[^581]: Another thing\r
-\r
-[^582]: Another thing\r
-\r
-[^583]: Another thing\r
-\r
-[^584]: Another thing\r
-\r
-[^585]: Another thing\r
-\r
-[^586]: Another thing\r
-\r
-[^587]: Another thing\r
-\r
-[^588]: Another thing\r
-\r
-[^589]: Another thing\r
-\r
-[^590]: Another thing\r
-\r
-[^591]: Another thing\r
-\r
-[^592]: Another thing\r
-\r
-[^593]: Another thing\r
-\r
-[^594]: Another thing\r
-\r
-[^595]: Another thing\r
-\r
-[^596]: Another thing\r
-\r
-[^597]: Another thing\r
-\r
-[^598]: Another thing\r
-\r
-[^599]: Another thing\r
-\r
-[^600]: Another thing\r
-\r
-[^601]: Another thing\r
-\r
-[^602]: Another thing\r
-\r
-[^603]: Another thing\r
-\r
-[^604]: Another thing\r
-\r
-[^605]: Another thing\r
-\r
-[^606]: Another thing\r
-\r
-[^607]: Another thing\r
-\r
-[^608]: Another thing\r
-\r
-[^609]: Another thing\r
-\r
-[^610]: Another thing\r
-\r
-[^611]: Another thing\r
-\r
-[^612]: Another thing\r
-\r
-[^613]: Another thing\r
-\r
-[^614]: Another thing\r
-\r
-[^615]: Another thing\r
-\r
-[^616]: Another thing\r
-\r
-[^617]: Another thing\r
-\r
-[^618]: Another thing\r
-\r
-[^619]: Another thing\r
-\r
-[^620]: Another thing\r
-\r
-[^621]: Another thing\r
-\r
-[^622]: Another thing\r
-\r
-[^623]: Another thing\r
-\r
-[^624]: Another thing\r
-\r
-[^625]: Another thing\r
-\r
-[^626]: Another thing\r
-\r
-[^627]: Another thing\r
-\r
-[^628]: Another thing\r
-\r
-[^629]: Another thing\r
-\r
-[^630]: Another thing\r
-\r
-[^631]: Another thing\r
-\r
-[^632]: Another thing\r
-\r
-[^633]: Another thing\r
-\r
-[^634]: Another thing\r
-\r
-[^635]: Another thing\r
-\r
-[^636]: Another thing\r
-\r
-[^637]: Another thing\r
-\r
-[^638]: Another thing\r
-\r
-[^639]: Another thing\r
-\r
-[^640]: Another thing\r
-\r
-[^641]: Another thing\r
-\r
-[^642]: Another thing\r
-\r
-[^643]: Another thing\r
-\r
-[^644]: Another thing\r
-\r
-[^645]: Another thing\r
-\r
-[^646]: Another thing\r
-\r
-[^647]: Another thing\r
-\r
-[^648]: Another thing\r
-\r
-[^649]: Another thing\r
-\r
-[^650]: Another thing\r
-\r
-[^651]: Another thing\r
-\r
-[^652]: Another thing\r
-\r
-[^653]: Another thing\r
-\r
-[^654]: Another thing\r
-\r
-[^655]: Another thing\r
-\r
-[^656]: Another thing\r
-\r
-[^657]: Another thing\r
-\r
-[^658]: Another thing\r
-\r
-[^659]: Another thing\r
-\r
-[^660]: Another thing\r
-\r
-[^661]: Another thing\r
-\r
-[^662]: Another thing\r
-\r
-[^663]: Another thing\r
-\r
-[^664]: Another thing\r
-\r
-[^665]: Another thing\r
-\r
-[^666]: Another thing\r
-\r
-[^667]: Another thing\r
-\r
-[^668]: Another thing\r
-\r
-[^669]: Another thing\r
-\r
-[^670]: Another thing\r
-\r
-[^671]: Another thing\r
-\r
-[^672]: Another thing\r
-\r
-[^673]: Another thing\r
-\r
-[^674]: Another thing\r
-\r
-[^675]: Another thing\r
-\r
-[^676]: Another thing\r
-\r
-[^677]: Another thing\r
-\r
-[^678]: Another thing\r
-\r
-[^679]: Another thing\r
-\r
-[^680]: Another thing\r
-\r
-[^681]: Another thing\r
-\r
-[^682]: Another thing\r
-\r
-[^683]: Another thing\r
-\r
-[^684]: Another thing\r
-\r
-[^685]: Another thing\r
-\r
-[^686]: Another thing\r
-\r
-[^687]: Another thing\r
-\r
-[^688]: Another thing\r
-\r
-[^689]: Another thing\r
-\r
-[^690]: Another thing\r
-\r
-[^691]: Another thing\r
-\r
-[^692]: Another thing\r
-\r
-[^693]: Another thing\r
-\r
-[^694]: Another thing\r
-\r
-[^695]: Another thing\r
-\r
-[^696]: Another thing\r
-\r
-[^697]: Another thing\r
-\r
-[^698]: Another thing\r
-\r
-[^699]: Another thing\r
-\r
-[^700]: Another thing\r
-\r
-[^701]: Another thing\r
-\r
-[^702]: Another thing\r
-\r
-[^703]: Another thing\r
-\r
-[^704]: Another thing\r
-\r
-[^705]: Another thing\r
-\r
-[^706]: Another thing\r
-\r
-[^707]: Another thing\r
-\r
-[^708]: Another thing\r
-\r
-[^709]: Another thing\r
-\r
-[^710]: Another thing\r
-\r
-[^711]: Another thing\r
-\r
-[^712]: Another thing\r
-\r
-[^713]: Another thing\r
-\r
-[^714]: Another thing\r
-\r
-[^715]: Another thing\r
-\r
-[^716]: Another thing\r
-\r
-[^717]: Another thing\r
-\r
-[^718]: Another thing\r
-\r
-[^719]: Another thing\r
-\r
-[^720]: Another thing\r
-\r
-[^721]: Another thing\r
-\r
-[^722]: Another thing\r
-\r
-[^723]: Another thing\r
-\r
-[^724]: Another thing\r
-\r
-[^725]: Another thing\r
-\r
-[^726]: Another thing\r
-\r
-[^727]: Another thing\r
-\r
-[^728]: Another thing\r
-\r
-[^729]: Another thing\r
-\r
-[^730]: Another thing\r
-\r
-[^731]: Another thing\r
-\r
-[^732]: Another thing\r
-\r
-[^733]: Another thing\r
-\r
-[^734]: Another thing\r
-\r
-[^735]: Another thing\r
-\r
-[^736]: Another thing\r
-\r
-[^737]: Another thing\r
-\r
-[^738]: Another thing\r
-\r
-[^739]: Another thing\r
-\r
-[^740]: Another thing\r
-\r
-[^741]: Another thing\r
-\r
-[^742]: Another thing\r
-\r
-[^743]: Another thing\r
-\r
-[^744]: Another thing\r
-\r
-[^745]: Another thing\r
-\r
-[^746]: Another thing\r
-\r
-[^747]: Another thing\r
-\r
-[^748]: Another thing\r
-\r
-[^749]: Another thing\r
-\r
-[^750]: Another thing\r
-\r
-[^751]: Another thing\r
-\r
-[^752]: Another thing\r
-\r
-[^753]: Another thing\r
-\r
-[^754]: Another thing\r
-\r
-[^755]: Another thing\r
-\r
-[^756]: Another thing\r
-\r
-[^757]: Another thing\r
-\r
-[^758]: Another thing\r
-\r
-[^759]: Another thing\r
-\r
-[^760]: Another thing\r
-\r
-[^761]: Another thing\r
-\r
-[^762]: Another thing\r
-\r
-[^763]: Another thing\r
-\r
-[^764]: Another thing\r
-\r
-[^765]: Another thing\r
-\r
-[^766]: Another thing\r
-\r
-[^767]: Another thing\r
-\r
-[^768]: Another thing\r
-\r
-[^769]: Another thing\r
-\r
-[^770]: Another thing\r
-\r
-[^771]: Another thing\r
-\r
-[^772]: Another thing\r
-\r
-[^773]: Another thing\r
-\r
-[^774]: Another thing\r
-\r
-[^775]: Another thing\r
-\r
-[^776]: Another thing\r
-\r
-[^777]: Another thing\r
-\r
-[^778]: Another thing\r
-\r
-[^779]: Another thing\r
-\r
-[^780]: Another thing\r
-\r
-[^781]: Another thing\r
-\r
-[^782]: Another thing\r
-\r
-[^783]: Another thing\r
-\r
-[^784]: Another thing\r
-\r
-[^785]: Another thing\r
-\r
-[^786]: Another thing\r
-\r
-[^787]: Another thing\r
-\r
-[^788]: Another thing\r
-\r
-[^789]: Another thing\r
-\r
-[^790]: Another thing\r
-\r
-[^791]: Another thing\r
-\r
-[^792]: Another thing\r
-\r
-[^793]: Another thing\r
-\r
-[^794]: Another thing\r
-\r
-[^795]: Another thing\r
-\r
-[^796]: Another thing\r
-\r
-[^797]: Another thing\r
-\r
-[^798]: Another thing\r
-\r
-[^799]: Another thing\r
-\r
-[^800]: Another thing\r
-\r
-[^801]: Another thing\r
-\r
-[^802]: Another thing\r
-\r
-[^803]: Another thing\r
-\r
-[^804]: Another thing\r
-\r
-[^805]: Another thing\r
-\r
-[^806]: Another thing\r
-\r
-[^807]: Another thing\r
-\r
-[^808]: Another thing\r
-\r
-[^809]: Another thing\r
-\r
-[^810]: Another thing\r
-\r
-[^811]: Another thing\r
-\r
-[^812]: Another thing\r
-\r
-[^813]: Another thing\r
-\r
-[^814]: Another thing\r
-\r
-[^815]: Another thing\r
-\r
-[^816]: Another thing\r
-\r
-[^817]: Another thing\r
-\r
-[^818]: Another thing\r
-\r
-[^819]: Another thing\r
-\r
-[^820]: Another thing\r
-\r
-[^821]: Another thing\r
-\r
-[^822]: Another thing\r
-\r
-[^823]: Another thing\r
-\r
-[^824]: Another thing\r
-\r
-[^825]: Another thing\r
-\r
-[^826]: Another thing\r
-\r
-[^827]: Another thing\r
-\r
-[^828]: Another thing\r
-\r
-[^829]: Another thing\r
-\r
-[^830]: Another thing\r
-\r
-[^831]: Another thing\r
-\r
-[^832]: Another thing\r
-\r
-[^833]: Another thing\r
-\r
-[^834]: Another thing\r
-\r
-[^835]: Another thing\r
-\r
-[^836]: Another thing\r
-\r
-[^837]: Another thing\r
-\r
-[^838]: Another thing\r
-\r
-[^839]: Another thing\r
-\r
-[^840]: Another thing\r
-\r
-[^841]: Another thing\r
-\r
-[^842]: Another thing\r
-\r
-[^843]: Another thing\r
-\r
-[^844]: Another thing\r
-\r
-[^845]: Another thing\r
-\r
-[^846]: Another thing\r
-\r
-[^847]: Another thing\r
-\r
-[^848]: Another thing\r
-\r
-[^849]: Another thing\r
-\r
-[^850]: Another thing\r
-\r
-[^851]: Another thing\r
-\r
-[^852]: Another thing\r
-\r
-[^853]: Another thing\r
-\r
-[^854]: Another thing\r
-\r
-[^855]: Another thing\r
-\r
-[^856]: Another thing\r
-\r
-[^857]: Another thing\r
-\r
-[^858]: Another thing\r
-\r
-[^859]: Another thing\r
-\r
-[^860]: Another thing\r
-\r
-[^861]: Another thing\r
-\r
-[^862]: Another thing\r
-\r
-[^863]: Another thing\r
-\r
-[^864]: Another thing\r
-\r
-[^865]: Another thing\r
-\r
-[^866]: Another thing\r
-\r
-[^867]: Another thing\r
-\r
-[^868]: Another thing\r
-\r
-[^869]: Another thing\r
-\r
-[^870]: Another thing\r
-\r
-[^871]: Another thing\r
-\r
-[^872]: Another thing\r
-\r
-[^873]: Another thing\r
-\r
-[^874]: Another thing\r
-\r
-[^875]: Another thing\r
-\r
-[^876]: Another thing\r
-\r
-[^877]: Another thing\r
-\r
-[^878]: Another thing\r
-\r
-[^879]: Another thing\r
-\r
-[^880]: Another thing\r
-\r
-[^881]: Another thing\r
-\r
-[^882]: Another thing\r
-\r
-[^883]: Another thing\r
-\r
-[^884]: Another thing\r
-\r
-[^885]: Another thing\r
-\r
-[^886]: Another thing\r
-\r
-[^887]: Another thing\r
-\r
-[^888]: Another thing\r
-\r
-[^889]: Another thing\r
-\r
-[^890]: Another thing\r
-\r
-[^891]: Another thing\r
-\r
-[^892]: Another thing\r
-\r
-[^893]: Another thing\r
-\r
-[^894]: Another thing\r
-\r
-[^895]: Another thing\r
-\r
-[^896]: Another thing\r
-\r
-[^897]: Another thing\r
-\r
-[^898]: Another thing\r
-\r
-[^899]: Another thing\r
-\r
-[^900]: Another thing\r
-\r
-[^901]: Another thing\r
-\r
-[^902]: Another thing\r
-\r
-[^903]: Another thing\r
-\r
-[^904]: Another thing\r
-\r
-[^905]: Another thing\r
-\r
-[^906]: Another thing\r
-\r
-[^907]: Another thing\r
-\r
-[^908]: Another thing\r
-\r
-[^909]: Another thing\r
-\r
-[^910]: Another thing\r
-\r
-[^911]: Another thing\r
-\r
-[^912]: Another thing\r
-\r
-[^913]: Another thing\r
-\r
-[^914]: Another thing\r
-\r
-[^915]: Another thing\r
-\r
-[^916]: Another thing\r
-\r
-[^917]: Another thing\r
-\r
-[^918]: Another thing\r
-\r
-[^919]: Another thing\r
-\r
-[^920]: Another thing\r
-\r
-[^921]: Another thing\r
-\r
-[^922]: Another thing\r
-\r
-[^923]: Another thing\r
-\r
-[^924]: Another thing\r
-\r
-[^925]: Another thing\r
-\r
-[^926]: Another thing\r
-\r
-[^927]: Another thing\r
-\r
-[^928]: Another thing\r
-\r
-[^929]: Another thing\r
-\r
-[^930]: Another thing\r
-\r
-[^931]: Another thing\r
-\r
-[^932]: Another thing\r
-\r
-[^933]: Another thing\r
-\r
-[^934]: Another thing\r
-\r
-[^935]: Another thing\r
-\r
-[^936]: Another thing\r
-\r
-[^937]: Another thing\r
-\r
-[^938]: Another thing\r
-\r
-[^939]: Another thing\r
-\r
-[^940]: Another thing\r
-\r
-[^941]: Another thing\r
-\r
-[^942]: Another thing\r
-\r
-[^943]: Another thing\r
-\r
-[^944]: Another thing\r
-\r
-[^945]: Another thing\r
-\r
-[^946]: Another thing\r
-\r
-[^947]: Another thing\r
-\r
-[^948]: Another thing\r
-\r
-[^949]: Another thing\r
-\r
-[^950]: Another thing\r
-\r
-[^951]: Another thing\r
-\r
-[^952]: Another thing\r
-\r
-[^953]: Another thing\r
-\r
-[^954]: Another thing\r
-\r
-[^955]: Another thing\r
-\r
-[^956]: Another thing\r
-\r
-[^957]: Another thing\r
-\r
-[^958]: Another thing\r
-\r
-[^959]: Another thing\r
-\r
-[^960]: Another thing\r
-\r
-[^961]: Another thing\r
-\r
-[^962]: Another thing\r
-\r
-[^963]: Another thing\r
-\r
-[^964]: Another thing\r
-\r
-[^965]: Another thing\r
-\r
-[^966]: Another thing\r
-\r
-[^967]: Another thing\r
-\r
-[^968]: Another thing\r
-\r
-[^969]: Another thing\r
-\r
-[^970]: Another thing\r
-\r
-[^971]: Another thing\r
-\r
-[^972]: Another thing\r
-\r
-[^973]: Another thing\r
-\r
-[^974]: Another thing\r
-\r
-[^975]: Another thing\r
-\r
-[^976]: Another thing\r
-\r
-[^977]: Another thing\r
-\r
-[^978]: Another thing\r
-\r
-[^979]: Another thing\r
-\r
-[^980]: Another thing\r
-\r
-[^981]: Another thing\r
-\r
-[^982]: Another thing\r
-\r
-[^983]: Another thing\r
-\r
-[^984]: Another thing\r
-\r
-[^985]: Another thing\r
-\r
-[^986]: Another thing\r
-\r
-[^987]: Another thing\r
-\r
-[^988]: Another thing\r
-\r
-[^989]: Another thing\r
-\r
-[^990]: Another thing\r
-\r
-[^991]: Another thing\r
-\r
-[^992]: Another thing\r
-\r
-[^993]: Another thing\r
-\r
-[^994]: Another thing\r
-\r
-[^995]: Another thing\r
-\r
-[^996]: Another thing\r
-\r
-[^997]: Another thing\r
-\r
-[^998]: Another thing\r
-\r
-[^999]: Another thing\r
-\r
-[^1000]: Another thing\r
-\r
-[^1001]: Another thing\r
-\r
-[^1002]: Another thing\r
-\r
-[^1003]: Another thing\r
-\r
-[^1004]: Another thing\r
-\r
-[^1005]: Another thing\r
-\r
-[^1006]: Another thing\r
-\r
-[^1007]: Another thing\r
-\r
-[^1008]: Another thing\r
-\r
-[^1009]: Another thing\r
-\r
-[^1010]: Another thing\r
-\r
-[^1011]: Another thing\r
-\r
-[^1012]: Another thing\r
-\r
-[^1013]: Another thing\r
-\r
-[^1014]: Another thing\r
-\r
-[^1015]: Another thing\r
-\r
-[^1016]: Another thing\r
-\r
-[^1017]: Another thing\r
-\r
-[^1018]: Another thing\r
-\r
-[^1019]: Another thing\r
-\r
-[^1020]: Another thing\r
-\r
-[^1021]: Another thing\r
-\r
-[^1022]: Another thing\r
-\r
-[^1023]: Another thing\r
-\r
-[^1024]: Another thing\r
-\r
-[^1025]: Another thing\r
-\r
-[^1026]: Another thing\r
-\r
-[^1027]: Another thing\r
-\r
-[^1028]: Another thing\r
-\r
-[^1029]: Another thing\r
-\r
-[^1030]: Another thing\r
-\r
-[^1031]: Another thing\r
-\r
-[^1032]: Another thing\r
-\r
-[^1033]: Another thing\r
-\r
-[^1034]: Another thing\r
-\r
-[^1035]: Another thing\r
-\r
-[^1036]: Another thing\r
-\r
-[^1037]: Another thing\r
-\r
-[^1038]: Another thing\r
-\r
-[^1039]: Another thing\r
-\r
-[^1040]: Another thing\r
-\r
-[^1041]: Another thing\r
-\r
-[^1042]: Another thing\r
-\r
-[^1043]: Another thing\r
-\r
-[^1044]: Another thing\r
-\r
-[^1045]: Another thing\r
-\r
-[^1046]: Another thing\r
-\r
-[^1047]: Another thing\r
-\r
-[^1048]: Another thing\r
-\r
-[^1049]: Another thing\r
-\r
-[^1050]: Another thing\r
-\r
-[^1051]: Another thing\r
-\r
-[^1052]: Another thing\r
-\r
-[^1053]: Another thing\r
-\r
-[^1054]: Another thing\r
-\r
-[^1055]: Another thing\r
-\r
-[^1056]: Another thing\r
-\r
-[^1057]: Another thing\r
-\r
-[^1058]: Another thing\r
-\r
-[^1059]: Another thing\r
-\r
-[^1060]: Another thing\r
-\r
-[^1061]: Another thing\r
-\r
-[^1062]: Another thing\r
-\r
-[^1063]: Another thing\r
-\r
-[^1064]: Another thing\r
-\r
-[^1065]: Another thing\r
-\r
-[^1066]: Another thing\r
-\r
-[^1067]: Another thing\r
-\r
-[^1068]: Another thing\r
-\r
-[^1069]: Another thing\r
-\r
-[^1070]: Another thing\r
-\r
-[^1071]: Another thing\r
-\r
-[^1072]: Another thing\r
-\r
-[^1073]: Another thing\r
-\r
-[^1074]: Another thing\r
-\r
-[^1075]: Another thing\r
-\r
-[^1076]: Another thing\r
-\r
-[^1077]: Another thing\r
-\r
-[^1078]: Another thing\r
-\r
-[^1079]: Another thing\r
-\r
-[^1080]: Another thing\r
-\r
-[^1081]: Another thing\r
-\r
-[^1082]: Another thing\r
-\r
-[^1083]: Another thing\r
-\r
-[^1084]: Another thing\r
-\r
-[^1085]: Another thing\r
-\r
-[^1086]: Another thing\r
-\r
-[^1087]: Another thing\r
-\r
-[^1088]: Another thing\r
-\r
-[^1089]: Another thing\r
-\r
-[^1090]: Another thing\r
-\r
-[^1091]: Another thing\r
-\r
-[^1092]: Another thing\r
-\r
-[^1093]: Another thing\r
-\r
-[^1094]: Another thing\r
-\r
-[^1095]: Another thing\r
-\r
-[^1096]: Another thing\r
-\r
-[^1097]: Another thing\r
-\r
-[^1098]: Another thing\r
-\r
-[^1099]: Another thing\r
-\r
-[^1100]: Another thing\r
-\r
-[^1101]: Another thing\r
-\r
-[^1102]: Another thing\r
-\r
-[^1103]: Another thing\r
-\r
-[^1104]: Another thing\r
-\r
-[^1105]: Another thing\r
-\r
-[^1106]: Another thing\r
-\r
-[^1107]: Another thing\r
-\r
-[^1108]: Another thing\r
-\r
-[^1109]: Another thing\r
-\r
-[^1110]: Another thing\r
-\r
-[^1111]: Another thing\r
-\r
-[^1112]: Another thing\r
-\r
-[^1113]: Another thing\r
-\r
-[^1114]: Another thing\r
-\r
-[^1115]: Another thing\r
-\r
-[^1116]: Another thing\r
-\r
-[^1117]: Another thing\r
-\r
-[^1118]: Another thing\r
-\r
-[^1119]: Another thing\r
-\r
-[^1120]: Another thing\r
-\r
-[^1121]: Another thing\r
-\r
-[^1122]: Another thing\r
-\r
-[^1123]: Another thing\r
-\r
-[^1124]: Another thing\r
-\r
-[^1125]: Another thing\r
-\r
-[^1126]: Another thing\r
-\r
-[^1127]: Another thing\r
-\r
-[^1128]: Another thing\r
-\r
-[^1129]: Another thing\r
-\r
-[^1130]: Another thing\r
-\r
-[^1131]: Another thing\r
-\r
-[^1132]: Another thing\r
-\r
-[^1133]: Another thing\r
-\r
-[^1134]: Another thing\r
-\r
-[^1135]: Another thing\r
-\r
-[^1136]: Another thing\r
-\r
-[^1137]: Another thing\r
-\r
-[^1138]: Another thing\r
-\r
-[^1139]: Another thing\r
-\r
-[^1140]: Another thing\r
-\r
-[^1141]: Another thing\r
-\r
-[^1142]: Another thing\r
-\r
-[^1143]: Another thing\r
-\r
-[^1144]: Another thing\r
-\r
-[^1145]: Another thing\r
-\r
-[^1146]: Another thing\r
-\r
-[^1147]: Another thing\r
-\r
-[^1148]: Another thing\r
-\r
-[^1149]: Another thing\r
-\r
-[^1150]: Another thing\r
-\r
-[^1151]: Another thing\r
-\r
-[^1152]: Another thing\r
-\r
-[^1153]: Another thing\r
-\r
-[^1154]: Another thing\r
-\r
-[^1155]: Another thing\r
-\r
-[^1156]: Another thing\r
-\r
-[^1157]: Another thing\r
-\r
-[^1158]: Another thing\r
-\r
-[^1159]: Another thing\r
-\r
-[^1160]: Another thing\r
-\r
-[^1161]: Another thing\r
-\r
-[^1162]: Another thing\r
-\r
-[^1163]: Another thing\r
-\r
-[^1164]: Another thing\r
-\r
-[^1165]: Another thing\r
-\r
-[^1166]: Another thing\r
-\r
-[^1167]: Another thing\r
-\r
-[^1168]: Another thing\r
-\r
-[^1169]: Another thing\r
-\r
-[^1170]: Another thing\r
-\r
-[^1171]: Another thing\r
-\r
-[^1172]: Another thing\r
-\r
-[^1173]: Another thing\r
-\r
-[^1174]: Another thing\r
-\r
-[^1175]: Another thing\r
-\r
-[^1176]: Another thing\r
-\r
-[^1177]: Another thing\r
-\r
-[^1178]: Another thing\r
-\r
-[^1179]: Another thing\r
-\r
-[^1180]: Another thing\r
-\r
-[^1181]: Another thing\r
-\r
-[^1182]: Another thing\r
-\r
-[^1183]: Another thing\r
-\r
-[^1184]: Another thing\r
-\r
-[^1185]: Another thing\r
-\r
-[^1186]: Another thing\r
-\r
-[^1187]: Another thing\r
-\r
-[^1188]: Another thing\r
-\r
-[^1189]: Another thing\r
-\r
-[^1190]: Another thing\r
-\r
-[^1191]: Another thing\r
-\r
-[^1192]: Another thing\r
-\r
-[^1193]: Another thing\r
-\r
-[^1194]: Another thing\r
-\r
-[^1195]: Another thing\r
-\r
-[^1196]: Another thing\r
-\r
-[^1197]: Another thing\r
-\r
-[^1198]: Another thing\r
-\r
-[^1199]: Another thing\r
-\r
+Something[^1]
+
+Something[^2]
+
+Something[^3]
+
+Something[^4]
+
+Something[^5]
+
+Something[^6]
+
+Something[^7]
+
+Something[^8]
+
+Something[^9]
+
+Something[^10]
+
+Something[^11]
+
+Something[^12]
+
+Something[^13]
+
+Something[^14]
+
+Something[^15]
+
+Something[^16]
+
+Something[^17]
+
+Something[^18]
+
+Something[^19]
+
+Something[^20]
+
+Something[^21]
+
+Something[^22]
+
+Something[^23]
+
+Something[^24]
+
+Something[^25]
+
+Something[^26]
+
+Something[^27]
+
+Something[^28]
+
+Something[^29]
+
+Something[^30]
+
+Something[^31]
+
+Something[^32]
+
+Something[^33]
+
+Something[^34]
+
+Something[^35]
+
+Something[^36]
+
+Something[^37]
+
+Something[^38]
+
+Something[^39]
+
+Something[^40]
+
+Something[^41]
+
+Something[^42]
+
+Something[^43]
+
+Something[^44]
+
+Something[^45]
+
+Something[^46]
+
+Something[^47]
+
+Something[^48]
+
+Something[^49]
+
+Something[^50]
+
+Something[^51]
+
+Something[^52]
+
+Something[^53]
+
+Something[^54]
+
+Something[^55]
+
+Something[^56]
+
+Something[^57]
+
+Something[^58]
+
+Something[^59]
+
+Something[^60]
+
+Something[^61]
+
+Something[^62]
+
+Something[^63]
+
+Something[^64]
+
+Something[^65]
+
+Something[^66]
+
+Something[^67]
+
+Something[^68]
+
+Something[^69]
+
+Something[^70]
+
+Something[^71]
+
+Something[^72]
+
+Something[^73]
+
+Something[^74]
+
+Something[^75]
+
+Something[^76]
+
+Something[^77]
+
+Something[^78]
+
+Something[^79]
+
+Something[^80]
+
+Something[^81]
+
+Something[^82]
+
+Something[^83]
+
+Something[^84]
+
+Something[^85]
+
+Something[^86]
+
+Something[^87]
+
+Something[^88]
+
+Something[^89]
+
+Something[^90]
+
+Something[^91]
+
+Something[^92]
+
+Something[^93]
+
+Something[^94]
+
+Something[^95]
+
+Something[^96]
+
+Something[^97]
+
+Something[^98]
+
+Something[^99]
+
+Something[^100]
+
+Something[^101]
+
+Something[^102]
+
+Something[^103]
+
+Something[^104]
+
+Something[^105]
+
+Something[^106]
+
+Something[^107]
+
+Something[^108]
+
+Something[^109]
+
+Something[^110]
+
+Something[^111]
+
+Something[^112]
+
+Something[^113]
+
+Something[^114]
+
+Something[^115]
+
+Something[^116]
+
+Something[^117]
+
+Something[^118]
+
+Something[^119]
+
+Something[^120]
+
+Something[^121]
+
+Something[^122]
+
+Something[^123]
+
+Something[^124]
+
+Something[^125]
+
+Something[^126]
+
+Something[^127]
+
+Something[^128]
+
+Something[^129]
+
+Something[^130]
+
+Something[^131]
+
+Something[^132]
+
+Something[^133]
+
+Something[^134]
+
+Something[^135]
+
+Something[^136]
+
+Something[^137]
+
+Something[^138]
+
+Something[^139]
+
+Something[^140]
+
+Something[^141]
+
+Something[^142]
+
+Something[^143]
+
+Something[^144]
+
+Something[^145]
+
+Something[^146]
+
+Something[^147]
+
+Something[^148]
+
+Something[^149]
+
+Something[^150]
+
+Something[^151]
+
+Something[^152]
+
+Something[^153]
+
+Something[^154]
+
+Something[^155]
+
+Something[^156]
+
+Something[^157]
+
+Something[^158]
+
+Something[^159]
+
+Something[^160]
+
+Something[^161]
+
+Something[^162]
+
+Something[^163]
+
+Something[^164]
+
+Something[^165]
+
+Something[^166]
+
+Something[^167]
+
+Something[^168]
+
+Something[^169]
+
+Something[^170]
+
+Something[^171]
+
+Something[^172]
+
+Something[^173]
+
+Something[^174]
+
+Something[^175]
+
+Something[^176]
+
+Something[^177]
+
+Something[^178]
+
+Something[^179]
+
+Something[^180]
+
+Something[^181]
+
+Something[^182]
+
+Something[^183]
+
+Something[^184]
+
+Something[^185]
+
+Something[^186]
+
+Something[^187]
+
+Something[^188]
+
+Something[^189]
+
+Something[^190]
+
+Something[^191]
+
+Something[^192]
+
+Something[^193]
+
+Something[^194]
+
+Something[^195]
+
+Something[^196]
+
+Something[^197]
+
+Something[^198]
+
+Something[^199]
+
+Something[^200]
+
+Something[^201]
+
+Something[^202]
+
+Something[^203]
+
+Something[^204]
+
+Something[^205]
+
+Something[^206]
+
+Something[^207]
+
+Something[^208]
+
+Something[^209]
+
+Something[^210]
+
+Something[^211]
+
+Something[^212]
+
+Something[^213]
+
+Something[^214]
+
+Something[^215]
+
+Something[^216]
+
+Something[^217]
+
+Something[^218]
+
+Something[^219]
+
+Something[^220]
+
+Something[^221]
+
+Something[^222]
+
+Something[^223]
+
+Something[^224]
+
+Something[^225]
+
+Something[^226]
+
+Something[^227]
+
+Something[^228]
+
+Something[^229]
+
+Something[^230]
+
+Something[^231]
+
+Something[^232]
+
+Something[^233]
+
+Something[^234]
+
+Something[^235]
+
+Something[^236]
+
+Something[^237]
+
+Something[^238]
+
+Something[^239]
+
+Something[^240]
+
+Something[^241]
+
+Something[^242]
+
+Something[^243]
+
+Something[^244]
+
+Something[^245]
+
+Something[^246]
+
+Something[^247]
+
+Something[^248]
+
+Something[^249]
+
+Something[^250]
+
+Something[^251]
+
+Something[^252]
+
+Something[^253]
+
+Something[^254]
+
+Something[^255]
+
+Something[^256]
+
+Something[^257]
+
+Something[^258]
+
+Something[^259]
+
+Something[^260]
+
+Something[^261]
+
+Something[^262]
+
+Something[^263]
+
+Something[^264]
+
+Something[^265]
+
+Something[^266]
+
+Something[^267]
+
+Something[^268]
+
+Something[^269]
+
+Something[^270]
+
+Something[^271]
+
+Something[^272]
+
+Something[^273]
+
+Something[^274]
+
+Something[^275]
+
+Something[^276]
+
+Something[^277]
+
+Something[^278]
+
+Something[^279]
+
+Something[^280]
+
+Something[^281]
+
+Something[^282]
+
+Something[^283]
+
+Something[^284]
+
+Something[^285]
+
+Something[^286]
+
+Something[^287]
+
+Something[^288]
+
+Something[^289]
+
+Something[^290]
+
+Something[^291]
+
+Something[^292]
+
+Something[^293]
+
+Something[^294]
+
+Something[^295]
+
+Something[^296]
+
+Something[^297]
+
+Something[^298]
+
+Something[^299]
+
+Something[^300]
+
+Something[^301]
+
+Something[^302]
+
+Something[^303]
+
+Something[^304]
+
+Something[^305]
+
+Something[^306]
+
+Something[^307]
+
+Something[^308]
+
+Something[^309]
+
+Something[^310]
+
+Something[^311]
+
+Something[^312]
+
+Something[^313]
+
+Something[^314]
+
+Something[^315]
+
+Something[^316]
+
+Something[^317]
+
+Something[^318]
+
+Something[^319]
+
+Something[^320]
+
+Something[^321]
+
+Something[^322]
+
+Something[^323]
+
+Something[^324]
+
+Something[^325]
+
+Something[^326]
+
+Something[^327]
+
+Something[^328]
+
+Something[^329]
+
+Something[^330]
+
+Something[^331]
+
+Something[^332]
+
+Something[^333]
+
+Something[^334]
+
+Something[^335]
+
+Something[^336]
+
+Something[^337]
+
+Something[^338]
+
+Something[^339]
+
+Something[^340]
+
+Something[^341]
+
+Something[^342]
+
+Something[^343]
+
+Something[^344]
+
+Something[^345]
+
+Something[^346]
+
+Something[^347]
+
+Something[^348]
+
+Something[^349]
+
+Something[^350]
+
+Something[^351]
+
+Something[^352]
+
+Something[^353]
+
+Something[^354]
+
+Something[^355]
+
+Something[^356]
+
+Something[^357]
+
+Something[^358]
+
+Something[^359]
+
+Something[^360]
+
+Something[^361]
+
+Something[^362]
+
+Something[^363]
+
+Something[^364]
+
+Something[^365]
+
+Something[^366]
+
+Something[^367]
+
+Something[^368]
+
+Something[^369]
+
+Something[^370]
+
+Something[^371]
+
+Something[^372]
+
+Something[^373]
+
+Something[^374]
+
+Something[^375]
+
+Something[^376]
+
+Something[^377]
+
+Something[^378]
+
+Something[^379]
+
+Something[^380]
+
+Something[^381]
+
+Something[^382]
+
+Something[^383]
+
+Something[^384]
+
+Something[^385]
+
+Something[^386]
+
+Something[^387]
+
+Something[^388]
+
+Something[^389]
+
+Something[^390]
+
+Something[^391]
+
+Something[^392]
+
+Something[^393]
+
+Something[^394]
+
+Something[^395]
+
+Something[^396]
+
+Something[^397]
+
+Something[^398]
+
+Something[^399]
+
+Something[^400]
+
+Something[^401]
+
+Something[^402]
+
+Something[^403]
+
+Something[^404]
+
+Something[^405]
+
+Something[^406]
+
+Something[^407]
+
+Something[^408]
+
+Something[^409]
+
+Something[^410]
+
+Something[^411]
+
+Something[^412]
+
+Something[^413]
+
+Something[^414]
+
+Something[^415]
+
+Something[^416]
+
+Something[^417]
+
+Something[^418]
+
+Something[^419]
+
+Something[^420]
+
+Something[^421]
+
+Something[^422]
+
+Something[^423]
+
+Something[^424]
+
+Something[^425]
+
+Something[^426]
+
+Something[^427]
+
+Something[^428]
+
+Something[^429]
+
+Something[^430]
+
+Something[^431]
+
+Something[^432]
+
+Something[^433]
+
+Something[^434]
+
+Something[^435]
+
+Something[^436]
+
+Something[^437]
+
+Something[^438]
+
+Something[^439]
+
+Something[^440]
+
+Something[^441]
+
+Something[^442]
+
+Something[^443]
+
+Something[^444]
+
+Something[^445]
+
+Something[^446]
+
+Something[^447]
+
+Something[^448]
+
+Something[^449]
+
+Something[^450]
+
+Something[^451]
+
+Something[^452]
+
+Something[^453]
+
+Something[^454]
+
+Something[^455]
+
+Something[^456]
+
+Something[^457]
+
+Something[^458]
+
+Something[^459]
+
+Something[^460]
+
+Something[^461]
+
+Something[^462]
+
+Something[^463]
+
+Something[^464]
+
+Something[^465]
+
+Something[^466]
+
+Something[^467]
+
+Something[^468]
+
+Something[^469]
+
+Something[^470]
+
+Something[^471]
+
+Something[^472]
+
+Something[^473]
+
+Something[^474]
+
+Something[^475]
+
+Something[^476]
+
+Something[^477]
+
+Something[^478]
+
+Something[^479]
+
+Something[^480]
+
+Something[^481]
+
+Something[^482]
+
+Something[^483]
+
+Something[^484]
+
+Something[^485]
+
+Something[^486]
+
+Something[^487]
+
+Something[^488]
+
+Something[^489]
+
+Something[^490]
+
+Something[^491]
+
+Something[^492]
+
+Something[^493]
+
+Something[^494]
+
+Something[^495]
+
+Something[^496]
+
+Something[^497]
+
+Something[^498]
+
+Something[^499]
+
+Something[^500]
+
+Something[^501]
+
+Something[^502]
+
+Something[^503]
+
+Something[^504]
+
+Something[^505]
+
+Something[^506]
+
+Something[^507]
+
+Something[^508]
+
+Something[^509]
+
+Something[^510]
+
+Something[^511]
+
+Something[^512]
+
+Something[^513]
+
+Something[^514]
+
+Something[^515]
+
+Something[^516]
+
+Something[^517]
+
+Something[^518]
+
+Something[^519]
+
+Something[^520]
+
+Something[^521]
+
+Something[^522]
+
+Something[^523]
+
+Something[^524]
+
+Something[^525]
+
+Something[^526]
+
+Something[^527]
+
+Something[^528]
+
+Something[^529]
+
+Something[^530]
+
+Something[^531]
+
+Something[^532]
+
+Something[^533]
+
+Something[^534]
+
+Something[^535]
+
+Something[^536]
+
+Something[^537]
+
+Something[^538]
+
+Something[^539]
+
+Something[^540]
+
+Something[^541]
+
+Something[^542]
+
+Something[^543]
+
+Something[^544]
+
+Something[^545]
+
+Something[^546]
+
+Something[^547]
+
+Something[^548]
+
+Something[^549]
+
+Something[^550]
+
+Something[^551]
+
+Something[^552]
+
+Something[^553]
+
+Something[^554]
+
+Something[^555]
+
+Something[^556]
+
+Something[^557]
+
+Something[^558]
+
+Something[^559]
+
+Something[^560]
+
+Something[^561]
+
+Something[^562]
+
+Something[^563]
+
+Something[^564]
+
+Something[^565]
+
+Something[^566]
+
+Something[^567]
+
+Something[^568]
+
+Something[^569]
+
+Something[^570]
+
+Something[^571]
+
+Something[^572]
+
+Something[^573]
+
+Something[^574]
+
+Something[^575]
+
+Something[^576]
+
+Something[^577]
+
+Something[^578]
+
+Something[^579]
+
+Something[^580]
+
+Something[^581]
+
+Something[^582]
+
+Something[^583]
+
+Something[^584]
+
+Something[^585]
+
+Something[^586]
+
+Something[^587]
+
+Something[^588]
+
+Something[^589]
+
+Something[^590]
+
+Something[^591]
+
+Something[^592]
+
+Something[^593]
+
+Something[^594]
+
+Something[^595]
+
+Something[^596]
+
+Something[^597]
+
+Something[^598]
+
+Something[^599]
+
+Something[^600]
+
+Something[^601]
+
+Something[^602]
+
+Something[^603]
+
+Something[^604]
+
+Something[^605]
+
+Something[^606]
+
+Something[^607]
+
+Something[^608]
+
+Something[^609]
+
+Something[^610]
+
+Something[^611]
+
+Something[^612]
+
+Something[^613]
+
+Something[^614]
+
+Something[^615]
+
+Something[^616]
+
+Something[^617]
+
+Something[^618]
+
+Something[^619]
+
+Something[^620]
+
+Something[^621]
+
+Something[^622]
+
+Something[^623]
+
+Something[^624]
+
+Something[^625]
+
+Something[^626]
+
+Something[^627]
+
+Something[^628]
+
+Something[^629]
+
+Something[^630]
+
+Something[^631]
+
+Something[^632]
+
+Something[^633]
+
+Something[^634]
+
+Something[^635]
+
+Something[^636]
+
+Something[^637]
+
+Something[^638]
+
+Something[^639]
+
+Something[^640]
+
+Something[^641]
+
+Something[^642]
+
+Something[^643]
+
+Something[^644]
+
+Something[^645]
+
+Something[^646]
+
+Something[^647]
+
+Something[^648]
+
+Something[^649]
+
+Something[^650]
+
+Something[^651]
+
+Something[^652]
+
+Something[^653]
+
+Something[^654]
+
+Something[^655]
+
+Something[^656]
+
+Something[^657]
+
+Something[^658]
+
+Something[^659]
+
+Something[^660]
+
+Something[^661]
+
+Something[^662]
+
+Something[^663]
+
+Something[^664]
+
+Something[^665]
+
+Something[^666]
+
+Something[^667]
+
+Something[^668]
+
+Something[^669]
+
+Something[^670]
+
+Something[^671]
+
+Something[^672]
+
+Something[^673]
+
+Something[^674]
+
+Something[^675]
+
+Something[^676]
+
+Something[^677]
+
+Something[^678]
+
+Something[^679]
+
+Something[^680]
+
+Something[^681]
+
+Something[^682]
+
+Something[^683]
+
+Something[^684]
+
+Something[^685]
+
+Something[^686]
+
+Something[^687]
+
+Something[^688]
+
+Something[^689]
+
+Something[^690]
+
+Something[^691]
+
+Something[^692]
+
+Something[^693]
+
+Something[^694]
+
+Something[^695]
+
+Something[^696]
+
+Something[^697]
+
+Something[^698]
+
+Something[^699]
+
+Something[^700]
+
+Something[^701]
+
+Something[^702]
+
+Something[^703]
+
+Something[^704]
+
+Something[^705]
+
+Something[^706]
+
+Something[^707]
+
+Something[^708]
+
+Something[^709]
+
+Something[^710]
+
+Something[^711]
+
+Something[^712]
+
+Something[^713]
+
+Something[^714]
+
+Something[^715]
+
+Something[^716]
+
+Something[^717]
+
+Something[^718]
+
+Something[^719]
+
+Something[^720]
+
+Something[^721]
+
+Something[^722]
+
+Something[^723]
+
+Something[^724]
+
+Something[^725]
+
+Something[^726]
+
+Something[^727]
+
+Something[^728]
+
+Something[^729]
+
+Something[^730]
+
+Something[^731]
+
+Something[^732]
+
+Something[^733]
+
+Something[^734]
+
+Something[^735]
+
+Something[^736]
+
+Something[^737]
+
+Something[^738]
+
+Something[^739]
+
+Something[^740]
+
+Something[^741]
+
+Something[^742]
+
+Something[^743]
+
+Something[^744]
+
+Something[^745]
+
+Something[^746]
+
+Something[^747]
+
+Something[^748]
+
+Something[^749]
+
+Something[^750]
+
+Something[^751]
+
+Something[^752]
+
+Something[^753]
+
+Something[^754]
+
+Something[^755]
+
+Something[^756]
+
+Something[^757]
+
+Something[^758]
+
+Something[^759]
+
+Something[^760]
+
+Something[^761]
+
+Something[^762]
+
+Something[^763]
+
+Something[^764]
+
+Something[^765]
+
+Something[^766]
+
+Something[^767]
+
+Something[^768]
+
+Something[^769]
+
+Something[^770]
+
+Something[^771]
+
+Something[^772]
+
+Something[^773]
+
+Something[^774]
+
+Something[^775]
+
+Something[^776]
+
+Something[^777]
+
+Something[^778]
+
+Something[^779]
+
+Something[^780]
+
+Something[^781]
+
+Something[^782]
+
+Something[^783]
+
+Something[^784]
+
+Something[^785]
+
+Something[^786]
+
+Something[^787]
+
+Something[^788]
+
+Something[^789]
+
+Something[^790]
+
+Something[^791]
+
+Something[^792]
+
+Something[^793]
+
+Something[^794]
+
+Something[^795]
+
+Something[^796]
+
+Something[^797]
+
+Something[^798]
+
+Something[^799]
+
+Something[^800]
+
+Something[^801]
+
+Something[^802]
+
+Something[^803]
+
+Something[^804]
+
+Something[^805]
+
+Something[^806]
+
+Something[^807]
+
+Something[^808]
+
+Something[^809]
+
+Something[^810]
+
+Something[^811]
+
+Something[^812]
+
+Something[^813]
+
+Something[^814]
+
+Something[^815]
+
+Something[^816]
+
+Something[^817]
+
+Something[^818]
+
+Something[^819]
+
+Something[^820]
+
+Something[^821]
+
+Something[^822]
+
+Something[^823]
+
+Something[^824]
+
+Something[^825]
+
+Something[^826]
+
+Something[^827]
+
+Something[^828]
+
+Something[^829]
+
+Something[^830]
+
+Something[^831]
+
+Something[^832]
+
+Something[^833]
+
+Something[^834]
+
+Something[^835]
+
+Something[^836]
+
+Something[^837]
+
+Something[^838]
+
+Something[^839]
+
+Something[^840]
+
+Something[^841]
+
+Something[^842]
+
+Something[^843]
+
+Something[^844]
+
+Something[^845]
+
+Something[^846]
+
+Something[^847]
+
+Something[^848]
+
+Something[^849]
+
+Something[^850]
+
+Something[^851]
+
+Something[^852]
+
+Something[^853]
+
+Something[^854]
+
+Something[^855]
+
+Something[^856]
+
+Something[^857]
+
+Something[^858]
+
+Something[^859]
+
+Something[^860]
+
+Something[^861]
+
+Something[^862]
+
+Something[^863]
+
+Something[^864]
+
+Something[^865]
+
+Something[^866]
+
+Something[^867]
+
+Something[^868]
+
+Something[^869]
+
+Something[^870]
+
+Something[^871]
+
+Something[^872]
+
+Something[^873]
+
+Something[^874]
+
+Something[^875]
+
+Something[^876]
+
+Something[^877]
+
+Something[^878]
+
+Something[^879]
+
+Something[^880]
+
+Something[^881]
+
+Something[^882]
+
+Something[^883]
+
+Something[^884]
+
+Something[^885]
+
+Something[^886]
+
+Something[^887]
+
+Something[^888]
+
+Something[^889]
+
+Something[^890]
+
+Something[^891]
+
+Something[^892]
+
+Something[^893]
+
+Something[^894]
+
+Something[^895]
+
+Something[^896]
+
+Something[^897]
+
+Something[^898]
+
+Something[^899]
+
+Something[^900]
+
+Something[^901]
+
+Something[^902]
+
+Something[^903]
+
+Something[^904]
+
+Something[^905]
+
+Something[^906]
+
+Something[^907]
+
+Something[^908]
+
+Something[^909]
+
+Something[^910]
+
+Something[^911]
+
+Something[^912]
+
+Something[^913]
+
+Something[^914]
+
+Something[^915]
+
+Something[^916]
+
+Something[^917]
+
+Something[^918]
+
+Something[^919]
+
+Something[^920]
+
+Something[^921]
+
+Something[^922]
+
+Something[^923]
+
+Something[^924]
+
+Something[^925]
+
+Something[^926]
+
+Something[^927]
+
+Something[^928]
+
+Something[^929]
+
+Something[^930]
+
+Something[^931]
+
+Something[^932]
+
+Something[^933]
+
+Something[^934]
+
+Something[^935]
+
+Something[^936]
+
+Something[^937]
+
+Something[^938]
+
+Something[^939]
+
+Something[^940]
+
+Something[^941]
+
+Something[^942]
+
+Something[^943]
+
+Something[^944]
+
+Something[^945]
+
+Something[^946]
+
+Something[^947]
+
+Something[^948]
+
+Something[^949]
+
+Something[^950]
+
+Something[^951]
+
+Something[^952]
+
+Something[^953]
+
+Something[^954]
+
+Something[^955]
+
+Something[^956]
+
+Something[^957]
+
+Something[^958]
+
+Something[^959]
+
+Something[^960]
+
+Something[^961]
+
+Something[^962]
+
+Something[^963]
+
+Something[^964]
+
+Something[^965]
+
+Something[^966]
+
+Something[^967]
+
+Something[^968]
+
+Something[^969]
+
+Something[^970]
+
+Something[^971]
+
+Something[^972]
+
+Something[^973]
+
+Something[^974]
+
+Something[^975]
+
+Something[^976]
+
+Something[^977]
+
+Something[^978]
+
+Something[^979]
+
+Something[^980]
+
+Something[^981]
+
+Something[^982]
+
+Something[^983]
+
+Something[^984]
+
+Something[^985]
+
+Something[^986]
+
+Something[^987]
+
+Something[^988]
+
+Something[^989]
+
+Something[^990]
+
+Something[^991]
+
+Something[^992]
+
+Something[^993]
+
+Something[^994]
+
+Something[^995]
+
+Something[^996]
+
+Something[^997]
+
+Something[^998]
+
+Something[^999]
+
+Something[^1000]
+
+Something[^1001]
+
+Something[^1002]
+
+Something[^1003]
+
+Something[^1004]
+
+Something[^1005]
+
+Something[^1006]
+
+Something[^1007]
+
+Something[^1008]
+
+Something[^1009]
+
+Something[^1010]
+
+Something[^1011]
+
+Something[^1012]
+
+Something[^1013]
+
+Something[^1014]
+
+Something[^1015]
+
+Something[^1016]
+
+Something[^1017]
+
+Something[^1018]
+
+Something[^1019]
+
+Something[^1020]
+
+Something[^1021]
+
+Something[^1022]
+
+Something[^1023]
+
+Something[^1024]
+
+Something[^1025]
+
+Something[^1026]
+
+Something[^1027]
+
+Something[^1028]
+
+Something[^1029]
+
+Something[^1030]
+
+Something[^1031]
+
+Something[^1032]
+
+Something[^1033]
+
+Something[^1034]
+
+Something[^1035]
+
+Something[^1036]
+
+Something[^1037]
+
+Something[^1038]
+
+Something[^1039]
+
+Something[^1040]
+
+Something[^1041]
+
+Something[^1042]
+
+Something[^1043]
+
+Something[^1044]
+
+Something[^1045]
+
+Something[^1046]
+
+Something[^1047]
+
+Something[^1048]
+
+Something[^1049]
+
+Something[^1050]
+
+Something[^1051]
+
+Something[^1052]
+
+Something[^1053]
+
+Something[^1054]
+
+Something[^1055]
+
+Something[^1056]
+
+Something[^1057]
+
+Something[^1058]
+
+Something[^1059]
+
+Something[^1060]
+
+Something[^1061]
+
+Something[^1062]
+
+Something[^1063]
+
+Something[^1064]
+
+Something[^1065]
+
+Something[^1066]
+
+Something[^1067]
+
+Something[^1068]
+
+Something[^1069]
+
+Something[^1070]
+
+Something[^1071]
+
+Something[^1072]
+
+Something[^1073]
+
+Something[^1074]
+
+Something[^1075]
+
+Something[^1076]
+
+Something[^1077]
+
+Something[^1078]
+
+Something[^1079]
+
+Something[^1080]
+
+Something[^1081]
+
+Something[^1082]
+
+Something[^1083]
+
+Something[^1084]
+
+Something[^1085]
+
+Something[^1086]
+
+Something[^1087]
+
+Something[^1088]
+
+Something[^1089]
+
+Something[^1090]
+
+Something[^1091]
+
+Something[^1092]
+
+Something[^1093]
+
+Something[^1094]
+
+Something[^1095]
+
+Something[^1096]
+
+Something[^1097]
+
+Something[^1098]
+
+Something[^1099]
+
+Something[^1100]
+
+Something[^1101]
+
+Something[^1102]
+
+Something[^1103]
+
+Something[^1104]
+
+Something[^1105]
+
+Something[^1106]
+
+Something[^1107]
+
+Something[^1108]
+
+Something[^1109]
+
+Something[^1110]
+
+Something[^1111]
+
+Something[^1112]
+
+Something[^1113]
+
+Something[^1114]
+
+Something[^1115]
+
+Something[^1116]
+
+Something[^1117]
+
+Something[^1118]
+
+Something[^1119]
+
+Something[^1120]
+
+Something[^1121]
+
+Something[^1122]
+
+Something[^1123]
+
+Something[^1124]
+
+Something[^1125]
+
+Something[^1126]
+
+Something[^1127]
+
+Something[^1128]
+
+Something[^1129]
+
+Something[^1130]
+
+Something[^1131]
+
+Something[^1132]
+
+Something[^1133]
+
+Something[^1134]
+
+Something[^1135]
+
+Something[^1136]
+
+Something[^1137]
+
+Something[^1138]
+
+Something[^1139]
+
+Something[^1140]
+
+Something[^1141]
+
+Something[^1142]
+
+Something[^1143]
+
+Something[^1144]
+
+Something[^1145]
+
+Something[^1146]
+
+Something[^1147]
+
+Something[^1148]
+
+Something[^1149]
+
+Something[^1150]
+
+Something[^1151]
+
+Something[^1152]
+
+Something[^1153]
+
+Something[^1154]
+
+Something[^1155]
+
+Something[^1156]
+
+Something[^1157]
+
+Something[^1158]
+
+Something[^1159]
+
+Something[^1160]
+
+Something[^1161]
+
+Something[^1162]
+
+Something[^1163]
+
+Something[^1164]
+
+Something[^1165]
+
+Something[^1166]
+
+Something[^1167]
+
+Something[^1168]
+
+Something[^1169]
+
+Something[^1170]
+
+Something[^1171]
+
+Something[^1172]
+
+Something[^1173]
+
+Something[^1174]
+
+Something[^1175]
+
+Something[^1176]
+
+Something[^1177]
+
+Something[^1178]
+
+Something[^1179]
+
+Something[^1180]
+
+Something[^1181]
+
+Something[^1182]
+
+Something[^1183]
+
+Something[^1184]
+
+Something[^1185]
+
+Something[^1186]
+
+Something[^1187]
+
+Something[^1188]
+
+Something[^1189]
+
+Something[^1190]
+
+Something[^1191]
+
+Something[^1192]
+
+Something[^1193]
+
+Something[^1194]
+
+Something[^1195]
+
+Something[^1196]
+
+Something[^1197]
+
+Something[^1198]
+
+Something[^1199]
+
+[^1]: Another thing
+
+[^2]: Another thing
+
+[^3]: Another thing
+
+[^4]: Another thing
+
+[^5]: Another thing
+
+[^6]: Another thing
+
+[^7]: Another thing
+
+[^8]: Another thing
+
+[^9]: Another thing
+
+[^10]: Another thing
+
+[^11]: Another thing
+
+[^12]: Another thing
+
+[^13]: Another thing
+
+[^14]: Another thing
+
+[^15]: Another thing
+
+[^16]: Another thing
+
+[^17]: Another thing
+
+[^18]: Another thing
+
+[^19]: Another thing
+
+[^20]: Another thing
+
+[^21]: Another thing
+
+[^22]: Another thing
+
+[^23]: Another thing
+
+[^24]: Another thing
+
+[^25]: Another thing
+
+[^26]: Another thing
+
+[^27]: Another thing
+
+[^28]: Another thing
+
+[^29]: Another thing
+
+[^30]: Another thing
+
+[^31]: Another thing
+
+[^32]: Another thing
+
+[^33]: Another thing
+
+[^34]: Another thing
+
+[^35]: Another thing
+
+[^36]: Another thing
+
+[^37]: Another thing
+
+[^38]: Another thing
+
+[^39]: Another thing
+
+[^40]: Another thing
+
+[^41]: Another thing
+
+[^42]: Another thing
+
+[^43]: Another thing
+
+[^44]: Another thing
+
+[^45]: Another thing
+
+[^46]: Another thing
+
+[^47]: Another thing
+
+[^48]: Another thing
+
+[^49]: Another thing
+
+[^50]: Another thing
+
+[^51]: Another thing
+
+[^52]: Another thing
+
+[^53]: Another thing
+
+[^54]: Another thing
+
+[^55]: Another thing
+
+[^56]: Another thing
+
+[^57]: Another thing
+
+[^58]: Another thing
+
+[^59]: Another thing
+
+[^60]: Another thing
+
+[^61]: Another thing
+
+[^62]: Another thing
+
+[^63]: Another thing
+
+[^64]: Another thing
+
+[^65]: Another thing
+
+[^66]: Another thing
+
+[^67]: Another thing
+
+[^68]: Another thing
+
+[^69]: Another thing
+
+[^70]: Another thing
+
+[^71]: Another thing
+
+[^72]: Another thing
+
+[^73]: Another thing
+
+[^74]: Another thing
+
+[^75]: Another thing
+
+[^76]: Another thing
+
+[^77]: Another thing
+
+[^78]: Another thing
+
+[^79]: Another thing
+
+[^80]: Another thing
+
+[^81]: Another thing
+
+[^82]: Another thing
+
+[^83]: Another thing
+
+[^84]: Another thing
+
+[^85]: Another thing
+
+[^86]: Another thing
+
+[^87]: Another thing
+
+[^88]: Another thing
+
+[^89]: Another thing
+
+[^90]: Another thing
+
+[^91]: Another thing
+
+[^92]: Another thing
+
+[^93]: Another thing
+
+[^94]: Another thing
+
+[^95]: Another thing
+
+[^96]: Another thing
+
+[^97]: Another thing
+
+[^98]: Another thing
+
+[^99]: Another thing
+
+[^100]: Another thing
+
+[^101]: Another thing
+
+[^102]: Another thing
+
+[^103]: Another thing
+
+[^104]: Another thing
+
+[^105]: Another thing
+
+[^106]: Another thing
+
+[^107]: Another thing
+
+[^108]: Another thing
+
+[^109]: Another thing
+
+[^110]: Another thing
+
+[^111]: Another thing
+
+[^112]: Another thing
+
+[^113]: Another thing
+
+[^114]: Another thing
+
+[^115]: Another thing
+
+[^116]: Another thing
+
+[^117]: Another thing
+
+[^118]: Another thing
+
+[^119]: Another thing
+
+[^120]: Another thing
+
+[^121]: Another thing
+
+[^122]: Another thing
+
+[^123]: Another thing
+
+[^124]: Another thing
+
+[^125]: Another thing
+
+[^126]: Another thing
+
+[^127]: Another thing
+
+[^128]: Another thing
+
+[^129]: Another thing
+
+[^130]: Another thing
+
+[^131]: Another thing
+
+[^132]: Another thing
+
+[^133]: Another thing
+
+[^134]: Another thing
+
+[^135]: Another thing
+
+[^136]: Another thing
+
+[^137]: Another thing
+
+[^138]: Another thing
+
+[^139]: Another thing
+
+[^140]: Another thing
+
+[^141]: Another thing
+
+[^142]: Another thing
+
+[^143]: Another thing
+
+[^144]: Another thing
+
+[^145]: Another thing
+
+[^146]: Another thing
+
+[^147]: Another thing
+
+[^148]: Another thing
+
+[^149]: Another thing
+
+[^150]: Another thing
+
+[^151]: Another thing
+
+[^152]: Another thing
+
+[^153]: Another thing
+
+[^154]: Another thing
+
+[^155]: Another thing
+
+[^156]: Another thing
+
+[^157]: Another thing
+
+[^158]: Another thing
+
+[^159]: Another thing
+
+[^160]: Another thing
+
+[^161]: Another thing
+
+[^162]: Another thing
+
+[^163]: Another thing
+
+[^164]: Another thing
+
+[^165]: Another thing
+
+[^166]: Another thing
+
+[^167]: Another thing
+
+[^168]: Another thing
+
+[^169]: Another thing
+
+[^170]: Another thing
+
+[^171]: Another thing
+
+[^172]: Another thing
+
+[^173]: Another thing
+
+[^174]: Another thing
+
+[^175]: Another thing
+
+[^176]: Another thing
+
+[^177]: Another thing
+
+[^178]: Another thing
+
+[^179]: Another thing
+
+[^180]: Another thing
+
+[^181]: Another thing
+
+[^182]: Another thing
+
+[^183]: Another thing
+
+[^184]: Another thing
+
+[^185]: Another thing
+
+[^186]: Another thing
+
+[^187]: Another thing
+
+[^188]: Another thing
+
+[^189]: Another thing
+
+[^190]: Another thing
+
+[^191]: Another thing
+
+[^192]: Another thing
+
+[^193]: Another thing
+
+[^194]: Another thing
+
+[^195]: Another thing
+
+[^196]: Another thing
+
+[^197]: Another thing
+
+[^198]: Another thing
+
+[^199]: Another thing
+
+[^200]: Another thing
+
+[^201]: Another thing
+
+[^202]: Another thing
+
+[^203]: Another thing
+
+[^204]: Another thing
+
+[^205]: Another thing
+
+[^206]: Another thing
+
+[^207]: Another thing
+
+[^208]: Another thing
+
+[^209]: Another thing
+
+[^210]: Another thing
+
+[^211]: Another thing
+
+[^212]: Another thing
+
+[^213]: Another thing
+
+[^214]: Another thing
+
+[^215]: Another thing
+
+[^216]: Another thing
+
+[^217]: Another thing
+
+[^218]: Another thing
+
+[^219]: Another thing
+
+[^220]: Another thing
+
+[^221]: Another thing
+
+[^222]: Another thing
+
+[^223]: Another thing
+
+[^224]: Another thing
+
+[^225]: Another thing
+
+[^226]: Another thing
+
+[^227]: Another thing
+
+[^228]: Another thing
+
+[^229]: Another thing
+
+[^230]: Another thing
+
+[^231]: Another thing
+
+[^232]: Another thing
+
+[^233]: Another thing
+
+[^234]: Another thing
+
+[^235]: Another thing
+
+[^236]: Another thing
+
+[^237]: Another thing
+
+[^238]: Another thing
+
+[^239]: Another thing
+
+[^240]: Another thing
+
+[^241]: Another thing
+
+[^242]: Another thing
+
+[^243]: Another thing
+
+[^244]: Another thing
+
+[^245]: Another thing
+
+[^246]: Another thing
+
+[^247]: Another thing
+
+[^248]: Another thing
+
+[^249]: Another thing
+
+[^250]: Another thing
+
+[^251]: Another thing
+
+[^252]: Another thing
+
+[^253]: Another thing
+
+[^254]: Another thing
+
+[^255]: Another thing
+
+[^256]: Another thing
+
+[^257]: Another thing
+
+[^258]: Another thing
+
+[^259]: Another thing
+
+[^260]: Another thing
+
+[^261]: Another thing
+
+[^262]: Another thing
+
+[^263]: Another thing
+
+[^264]: Another thing
+
+[^265]: Another thing
+
+[^266]: Another thing
+
+[^267]: Another thing
+
+[^268]: Another thing
+
+[^269]: Another thing
+
+[^270]: Another thing
+
+[^271]: Another thing
+
+[^272]: Another thing
+
+[^273]: Another thing
+
+[^274]: Another thing
+
+[^275]: Another thing
+
+[^276]: Another thing
+
+[^277]: Another thing
+
+[^278]: Another thing
+
+[^279]: Another thing
+
+[^280]: Another thing
+
+[^281]: Another thing
+
+[^282]: Another thing
+
+[^283]: Another thing
+
+[^284]: Another thing
+
+[^285]: Another thing
+
+[^286]: Another thing
+
+[^287]: Another thing
+
+[^288]: Another thing
+
+[^289]: Another thing
+
+[^290]: Another thing
+
+[^291]: Another thing
+
+[^292]: Another thing
+
+[^293]: Another thing
+
+[^294]: Another thing
+
+[^295]: Another thing
+
+[^296]: Another thing
+
+[^297]: Another thing
+
+[^298]: Another thing
+
+[^299]: Another thing
+
+[^300]: Another thing
+
+[^301]: Another thing
+
+[^302]: Another thing
+
+[^303]: Another thing
+
+[^304]: Another thing
+
+[^305]: Another thing
+
+[^306]: Another thing
+
+[^307]: Another thing
+
+[^308]: Another thing
+
+[^309]: Another thing
+
+[^310]: Another thing
+
+[^311]: Another thing
+
+[^312]: Another thing
+
+[^313]: Another thing
+
+[^314]: Another thing
+
+[^315]: Another thing
+
+[^316]: Another thing
+
+[^317]: Another thing
+
+[^318]: Another thing
+
+[^319]: Another thing
+
+[^320]: Another thing
+
+[^321]: Another thing
+
+[^322]: Another thing
+
+[^323]: Another thing
+
+[^324]: Another thing
+
+[^325]: Another thing
+
+[^326]: Another thing
+
+[^327]: Another thing
+
+[^328]: Another thing
+
+[^329]: Another thing
+
+[^330]: Another thing
+
+[^331]: Another thing
+
+[^332]: Another thing
+
+[^333]: Another thing
+
+[^334]: Another thing
+
+[^335]: Another thing
+
+[^336]: Another thing
+
+[^337]: Another thing
+
+[^338]: Another thing
+
+[^339]: Another thing
+
+[^340]: Another thing
+
+[^341]: Another thing
+
+[^342]: Another thing
+
+[^343]: Another thing
+
+[^344]: Another thing
+
+[^345]: Another thing
+
+[^346]: Another thing
+
+[^347]: Another thing
+
+[^348]: Another thing
+
+[^349]: Another thing
+
+[^350]: Another thing
+
+[^351]: Another thing
+
+[^352]: Another thing
+
+[^353]: Another thing
+
+[^354]: Another thing
+
+[^355]: Another thing
+
+[^356]: Another thing
+
+[^357]: Another thing
+
+[^358]: Another thing
+
+[^359]: Another thing
+
+[^360]: Another thing
+
+[^361]: Another thing
+
+[^362]: Another thing
+
+[^363]: Another thing
+
+[^364]: Another thing
+
+[^365]: Another thing
+
+[^366]: Another thing
+
+[^367]: Another thing
+
+[^368]: Another thing
+
+[^369]: Another thing
+
+[^370]: Another thing
+
+[^371]: Another thing
+
+[^372]: Another thing
+
+[^373]: Another thing
+
+[^374]: Another thing
+
+[^375]: Another thing
+
+[^376]: Another thing
+
+[^377]: Another thing
+
+[^378]: Another thing
+
+[^379]: Another thing
+
+[^380]: Another thing
+
+[^381]: Another thing
+
+[^382]: Another thing
+
+[^383]: Another thing
+
+[^384]: Another thing
+
+[^385]: Another thing
+
+[^386]: Another thing
+
+[^387]: Another thing
+
+[^388]: Another thing
+
+[^389]: Another thing
+
+[^390]: Another thing
+
+[^391]: Another thing
+
+[^392]: Another thing
+
+[^393]: Another thing
+
+[^394]: Another thing
+
+[^395]: Another thing
+
+[^396]: Another thing
+
+[^397]: Another thing
+
+[^398]: Another thing
+
+[^399]: Another thing
+
+[^400]: Another thing
+
+[^401]: Another thing
+
+[^402]: Another thing
+
+[^403]: Another thing
+
+[^404]: Another thing
+
+[^405]: Another thing
+
+[^406]: Another thing
+
+[^407]: Another thing
+
+[^408]: Another thing
+
+[^409]: Another thing
+
+[^410]: Another thing
+
+[^411]: Another thing
+
+[^412]: Another thing
+
+[^413]: Another thing
+
+[^414]: Another thing
+
+[^415]: Another thing
+
+[^416]: Another thing
+
+[^417]: Another thing
+
+[^418]: Another thing
+
+[^419]: Another thing
+
+[^420]: Another thing
+
+[^421]: Another thing
+
+[^422]: Another thing
+
+[^423]: Another thing
+
+[^424]: Another thing
+
+[^425]: Another thing
+
+[^426]: Another thing
+
+[^427]: Another thing
+
+[^428]: Another thing
+
+[^429]: Another thing
+
+[^430]: Another thing
+
+[^431]: Another thing
+
+[^432]: Another thing
+
+[^433]: Another thing
+
+[^434]: Another thing
+
+[^435]: Another thing
+
+[^436]: Another thing
+
+[^437]: Another thing
+
+[^438]: Another thing
+
+[^439]: Another thing
+
+[^440]: Another thing
+
+[^441]: Another thing
+
+[^442]: Another thing
+
+[^443]: Another thing
+
+[^444]: Another thing
+
+[^445]: Another thing
+
+[^446]: Another thing
+
+[^447]: Another thing
+
+[^448]: Another thing
+
+[^449]: Another thing
+
+[^450]: Another thing
+
+[^451]: Another thing
+
+[^452]: Another thing
+
+[^453]: Another thing
+
+[^454]: Another thing
+
+[^455]: Another thing
+
+[^456]: Another thing
+
+[^457]: Another thing
+
+[^458]: Another thing
+
+[^459]: Another thing
+
+[^460]: Another thing
+
+[^461]: Another thing
+
+[^462]: Another thing
+
+[^463]: Another thing
+
+[^464]: Another thing
+
+[^465]: Another thing
+
+[^466]: Another thing
+
+[^467]: Another thing
+
+[^468]: Another thing
+
+[^469]: Another thing
+
+[^470]: Another thing
+
+[^471]: Another thing
+
+[^472]: Another thing
+
+[^473]: Another thing
+
+[^474]: Another thing
+
+[^475]: Another thing
+
+[^476]: Another thing
+
+[^477]: Another thing
+
+[^478]: Another thing
+
+[^479]: Another thing
+
+[^480]: Another thing
+
+[^481]: Another thing
+
+[^482]: Another thing
+
+[^483]: Another thing
+
+[^484]: Another thing
+
+[^485]: Another thing
+
+[^486]: Another thing
+
+[^487]: Another thing
+
+[^488]: Another thing
+
+[^489]: Another thing
+
+[^490]: Another thing
+
+[^491]: Another thing
+
+[^492]: Another thing
+
+[^493]: Another thing
+
+[^494]: Another thing
+
+[^495]: Another thing
+
+[^496]: Another thing
+
+[^497]: Another thing
+
+[^498]: Another thing
+
+[^499]: Another thing
+
+[^500]: Another thing
+
+[^501]: Another thing
+
+[^502]: Another thing
+
+[^503]: Another thing
+
+[^504]: Another thing
+
+[^505]: Another thing
+
+[^506]: Another thing
+
+[^507]: Another thing
+
+[^508]: Another thing
+
+[^509]: Another thing
+
+[^510]: Another thing
+
+[^511]: Another thing
+
+[^512]: Another thing
+
+[^513]: Another thing
+
+[^514]: Another thing
+
+[^515]: Another thing
+
+[^516]: Another thing
+
+[^517]: Another thing
+
+[^518]: Another thing
+
+[^519]: Another thing
+
+[^520]: Another thing
+
+[^521]: Another thing
+
+[^522]: Another thing
+
+[^523]: Another thing
+
+[^524]: Another thing
+
+[^525]: Another thing
+
+[^526]: Another thing
+
+[^527]: Another thing
+
+[^528]: Another thing
+
+[^529]: Another thing
+
+[^530]: Another thing
+
+[^531]: Another thing
+
+[^532]: Another thing
+
+[^533]: Another thing
+
+[^534]: Another thing
+
+[^535]: Another thing
+
+[^536]: Another thing
+
+[^537]: Another thing
+
+[^538]: Another thing
+
+[^539]: Another thing
+
+[^540]: Another thing
+
+[^541]: Another thing
+
+[^542]: Another thing
+
+[^543]: Another thing
+
+[^544]: Another thing
+
+[^545]: Another thing
+
+[^546]: Another thing
+
+[^547]: Another thing
+
+[^548]: Another thing
+
+[^549]: Another thing
+
+[^550]: Another thing
+
+[^551]: Another thing
+
+[^552]: Another thing
+
+[^553]: Another thing
+
+[^554]: Another thing
+
+[^555]: Another thing
+
+[^556]: Another thing
+
+[^557]: Another thing
+
+[^558]: Another thing
+
+[^559]: Another thing
+
+[^560]: Another thing
+
+[^561]: Another thing
+
+[^562]: Another thing
+
+[^563]: Another thing
+
+[^564]: Another thing
+
+[^565]: Another thing
+
+[^566]: Another thing
+
+[^567]: Another thing
+
+[^568]: Another thing
+
+[^569]: Another thing
+
+[^570]: Another thing
+
+[^571]: Another thing
+
+[^572]: Another thing
+
+[^573]: Another thing
+
+[^574]: Another thing
+
+[^575]: Another thing
+
+[^576]: Another thing
+
+[^577]: Another thing
+
+[^578]: Another thing
+
+[^579]: Another thing
+
+[^580]: Another thing
+
+[^581]: Another thing
+
+[^582]: Another thing
+
+[^583]: Another thing
+
+[^584]: Another thing
+
+[^585]: Another thing
+
+[^586]: Another thing
+
+[^587]: Another thing
+
+[^588]: Another thing
+
+[^589]: Another thing
+
+[^590]: Another thing
+
+[^591]: Another thing
+
+[^592]: Another thing
+
+[^593]: Another thing
+
+[^594]: Another thing
+
+[^595]: Another thing
+
+[^596]: Another thing
+
+[^597]: Another thing
+
+[^598]: Another thing
+
+[^599]: Another thing
+
+[^600]: Another thing
+
+[^601]: Another thing
+
+[^602]: Another thing
+
+[^603]: Another thing
+
+[^604]: Another thing
+
+[^605]: Another thing
+
+[^606]: Another thing
+
+[^607]: Another thing
+
+[^608]: Another thing
+
+[^609]: Another thing
+
+[^610]: Another thing
+
+[^611]: Another thing
+
+[^612]: Another thing
+
+[^613]: Another thing
+
+[^614]: Another thing
+
+[^615]: Another thing
+
+[^616]: Another thing
+
+[^617]: Another thing
+
+[^618]: Another thing
+
+[^619]: Another thing
+
+[^620]: Another thing
+
+[^621]: Another thing
+
+[^622]: Another thing
+
+[^623]: Another thing
+
+[^624]: Another thing
+
+[^625]: Another thing
+
+[^626]: Another thing
+
+[^627]: Another thing
+
+[^628]: Another thing
+
+[^629]: Another thing
+
+[^630]: Another thing
+
+[^631]: Another thing
+
+[^632]: Another thing
+
+[^633]: Another thing
+
+[^634]: Another thing
+
+[^635]: Another thing
+
+[^636]: Another thing
+
+[^637]: Another thing
+
+[^638]: Another thing
+
+[^639]: Another thing
+
+[^640]: Another thing
+
+[^641]: Another thing
+
+[^642]: Another thing
+
+[^643]: Another thing
+
+[^644]: Another thing
+
+[^645]: Another thing
+
+[^646]: Another thing
+
+[^647]: Another thing
+
+[^648]: Another thing
+
+[^649]: Another thing
+
+[^650]: Another thing
+
+[^651]: Another thing
+
+[^652]: Another thing
+
+[^653]: Another thing
+
+[^654]: Another thing
+
+[^655]: Another thing
+
+[^656]: Another thing
+
+[^657]: Another thing
+
+[^658]: Another thing
+
+[^659]: Another thing
+
+[^660]: Another thing
+
+[^661]: Another thing
+
+[^662]: Another thing
+
+[^663]: Another thing
+
+[^664]: Another thing
+
+[^665]: Another thing
+
+[^666]: Another thing
+
+[^667]: Another thing
+
+[^668]: Another thing
+
+[^669]: Another thing
+
+[^670]: Another thing
+
+[^671]: Another thing
+
+[^672]: Another thing
+
+[^673]: Another thing
+
+[^674]: Another thing
+
+[^675]: Another thing
+
+[^676]: Another thing
+
+[^677]: Another thing
+
+[^678]: Another thing
+
+[^679]: Another thing
+
+[^680]: Another thing
+
+[^681]: Another thing
+
+[^682]: Another thing
+
+[^683]: Another thing
+
+[^684]: Another thing
+
+[^685]: Another thing
+
+[^686]: Another thing
+
+[^687]: Another thing
+
+[^688]: Another thing
+
+[^689]: Another thing
+
+[^690]: Another thing
+
+[^691]: Another thing
+
+[^692]: Another thing
+
+[^693]: Another thing
+
+[^694]: Another thing
+
+[^695]: Another thing
+
+[^696]: Another thing
+
+[^697]: Another thing
+
+[^698]: Another thing
+
+[^699]: Another thing
+
+[^700]: Another thing
+
+[^701]: Another thing
+
+[^702]: Another thing
+
+[^703]: Another thing
+
+[^704]: Another thing
+
+[^705]: Another thing
+
+[^706]: Another thing
+
+[^707]: Another thing
+
+[^708]: Another thing
+
+[^709]: Another thing
+
+[^710]: Another thing
+
+[^711]: Another thing
+
+[^712]: Another thing
+
+[^713]: Another thing
+
+[^714]: Another thing
+
+[^715]: Another thing
+
+[^716]: Another thing
+
+[^717]: Another thing
+
+[^718]: Another thing
+
+[^719]: Another thing
+
+[^720]: Another thing
+
+[^721]: Another thing
+
+[^722]: Another thing
+
+[^723]: Another thing
+
+[^724]: Another thing
+
+[^725]: Another thing
+
+[^726]: Another thing
+
+[^727]: Another thing
+
+[^728]: Another thing
+
+[^729]: Another thing
+
+[^730]: Another thing
+
+[^731]: Another thing
+
+[^732]: Another thing
+
+[^733]: Another thing
+
+[^734]: Another thing
+
+[^735]: Another thing
+
+[^736]: Another thing
+
+[^737]: Another thing
+
+[^738]: Another thing
+
+[^739]: Another thing
+
+[^740]: Another thing
+
+[^741]: Another thing
+
+[^742]: Another thing
+
+[^743]: Another thing
+
+[^744]: Another thing
+
+[^745]: Another thing
+
+[^746]: Another thing
+
+[^747]: Another thing
+
+[^748]: Another thing
+
+[^749]: Another thing
+
+[^750]: Another thing
+
+[^751]: Another thing
+
+[^752]: Another thing
+
+[^753]: Another thing
+
+[^754]: Another thing
+
+[^755]: Another thing
+
+[^756]: Another thing
+
+[^757]: Another thing
+
+[^758]: Another thing
+
+[^759]: Another thing
+
+[^760]: Another thing
+
+[^761]: Another thing
+
+[^762]: Another thing
+
+[^763]: Another thing
+
+[^764]: Another thing
+
+[^765]: Another thing
+
+[^766]: Another thing
+
+[^767]: Another thing
+
+[^768]: Another thing
+
+[^769]: Another thing
+
+[^770]: Another thing
+
+[^771]: Another thing
+
+[^772]: Another thing
+
+[^773]: Another thing
+
+[^774]: Another thing
+
+[^775]: Another thing
+
+[^776]: Another thing
+
+[^777]: Another thing
+
+[^778]: Another thing
+
+[^779]: Another thing
+
+[^780]: Another thing
+
+[^781]: Another thing
+
+[^782]: Another thing
+
+[^783]: Another thing
+
+[^784]: Another thing
+
+[^785]: Another thing
+
+[^786]: Another thing
+
+[^787]: Another thing
+
+[^788]: Another thing
+
+[^789]: Another thing
+
+[^790]: Another thing
+
+[^791]: Another thing
+
+[^792]: Another thing
+
+[^793]: Another thing
+
+[^794]: Another thing
+
+[^795]: Another thing
+
+[^796]: Another thing
+
+[^797]: Another thing
+
+[^798]: Another thing
+
+[^799]: Another thing
+
+[^800]: Another thing
+
+[^801]: Another thing
+
+[^802]: Another thing
+
+[^803]: Another thing
+
+[^804]: Another thing
+
+[^805]: Another thing
+
+[^806]: Another thing
+
+[^807]: Another thing
+
+[^808]: Another thing
+
+[^809]: Another thing
+
+[^810]: Another thing
+
+[^811]: Another thing
+
+[^812]: Another thing
+
+[^813]: Another thing
+
+[^814]: Another thing
+
+[^815]: Another thing
+
+[^816]: Another thing
+
+[^817]: Another thing
+
+[^818]: Another thing
+
+[^819]: Another thing
+
+[^820]: Another thing
+
+[^821]: Another thing
+
+[^822]: Another thing
+
+[^823]: Another thing
+
+[^824]: Another thing
+
+[^825]: Another thing
+
+[^826]: Another thing
+
+[^827]: Another thing
+
+[^828]: Another thing
+
+[^829]: Another thing
+
+[^830]: Another thing
+
+[^831]: Another thing
+
+[^832]: Another thing
+
+[^833]: Another thing
+
+[^834]: Another thing
+
+[^835]: Another thing
+
+[^836]: Another thing
+
+[^837]: Another thing
+
+[^838]: Another thing
+
+[^839]: Another thing
+
+[^840]: Another thing
+
+[^841]: Another thing
+
+[^842]: Another thing
+
+[^843]: Another thing
+
+[^844]: Another thing
+
+[^845]: Another thing
+
+[^846]: Another thing
+
+[^847]: Another thing
+
+[^848]: Another thing
+
+[^849]: Another thing
+
+[^850]: Another thing
+
+[^851]: Another thing
+
+[^852]: Another thing
+
+[^853]: Another thing
+
+[^854]: Another thing
+
+[^855]: Another thing
+
+[^856]: Another thing
+
+[^857]: Another thing
+
+[^858]: Another thing
+
+[^859]: Another thing
+
+[^860]: Another thing
+
+[^861]: Another thing
+
+[^862]: Another thing
+
+[^863]: Another thing
+
+[^864]: Another thing
+
+[^865]: Another thing
+
+[^866]: Another thing
+
+[^867]: Another thing
+
+[^868]: Another thing
+
+[^869]: Another thing
+
+[^870]: Another thing
+
+[^871]: Another thing
+
+[^872]: Another thing
+
+[^873]: Another thing
+
+[^874]: Another thing
+
+[^875]: Another thing
+
+[^876]: Another thing
+
+[^877]: Another thing
+
+[^878]: Another thing
+
+[^879]: Another thing
+
+[^880]: Another thing
+
+[^881]: Another thing
+
+[^882]: Another thing
+
+[^883]: Another thing
+
+[^884]: Another thing
+
+[^885]: Another thing
+
+[^886]: Another thing
+
+[^887]: Another thing
+
+[^888]: Another thing
+
+[^889]: Another thing
+
+[^890]: Another thing
+
+[^891]: Another thing
+
+[^892]: Another thing
+
+[^893]: Another thing
+
+[^894]: Another thing
+
+[^895]: Another thing
+
+[^896]: Another thing
+
+[^897]: Another thing
+
+[^898]: Another thing
+
+[^899]: Another thing
+
+[^900]: Another thing
+
+[^901]: Another thing
+
+[^902]: Another thing
+
+[^903]: Another thing
+
+[^904]: Another thing
+
+[^905]: Another thing
+
+[^906]: Another thing
+
+[^907]: Another thing
+
+[^908]: Another thing
+
+[^909]: Another thing
+
+[^910]: Another thing
+
+[^911]: Another thing
+
+[^912]: Another thing
+
+[^913]: Another thing
+
+[^914]: Another thing
+
+[^915]: Another thing
+
+[^916]: Another thing
+
+[^917]: Another thing
+
+[^918]: Another thing
+
+[^919]: Another thing
+
+[^920]: Another thing
+
+[^921]: Another thing
+
+[^922]: Another thing
+
+[^923]: Another thing
+
+[^924]: Another thing
+
+[^925]: Another thing
+
+[^926]: Another thing
+
+[^927]: Another thing
+
+[^928]: Another thing
+
+[^929]: Another thing
+
+[^930]: Another thing
+
+[^931]: Another thing
+
+[^932]: Another thing
+
+[^933]: Another thing
+
+[^934]: Another thing
+
+[^935]: Another thing
+
+[^936]: Another thing
+
+[^937]: Another thing
+
+[^938]: Another thing
+
+[^939]: Another thing
+
+[^940]: Another thing
+
+[^941]: Another thing
+
+[^942]: Another thing
+
+[^943]: Another thing
+
+[^944]: Another thing
+
+[^945]: Another thing
+
+[^946]: Another thing
+
+[^947]: Another thing
+
+[^948]: Another thing
+
+[^949]: Another thing
+
+[^950]: Another thing
+
+[^951]: Another thing
+
+[^952]: Another thing
+
+[^953]: Another thing
+
+[^954]: Another thing
+
+[^955]: Another thing
+
+[^956]: Another thing
+
+[^957]: Another thing
+
+[^958]: Another thing
+
+[^959]: Another thing
+
+[^960]: Another thing
+
+[^961]: Another thing
+
+[^962]: Another thing
+
+[^963]: Another thing
+
+[^964]: Another thing
+
+[^965]: Another thing
+
+[^966]: Another thing
+
+[^967]: Another thing
+
+[^968]: Another thing
+
+[^969]: Another thing
+
+[^970]: Another thing
+
+[^971]: Another thing
+
+[^972]: Another thing
+
+[^973]: Another thing
+
+[^974]: Another thing
+
+[^975]: Another thing
+
+[^976]: Another thing
+
+[^977]: Another thing
+
+[^978]: Another thing
+
+[^979]: Another thing
+
+[^980]: Another thing
+
+[^981]: Another thing
+
+[^982]: Another thing
+
+[^983]: Another thing
+
+[^984]: Another thing
+
+[^985]: Another thing
+
+[^986]: Another thing
+
+[^987]: Another thing
+
+[^988]: Another thing
+
+[^989]: Another thing
+
+[^990]: Another thing
+
+[^991]: Another thing
+
+[^992]: Another thing
+
+[^993]: Another thing
+
+[^994]: Another thing
+
+[^995]: Another thing
+
+[^996]: Another thing
+
+[^997]: Another thing
+
+[^998]: Another thing
+
+[^999]: Another thing
+
+[^1000]: Another thing
+
+[^1001]: Another thing
+
+[^1002]: Another thing
+
+[^1003]: Another thing
+
+[^1004]: Another thing
+
+[^1005]: Another thing
+
+[^1006]: Another thing
+
+[^1007]: Another thing
+
+[^1008]: Another thing
+
+[^1009]: Another thing
+
+[^1010]: Another thing
+
+[^1011]: Another thing
+
+[^1012]: Another thing
+
+[^1013]: Another thing
+
+[^1014]: Another thing
+
+[^1015]: Another thing
+
+[^1016]: Another thing
+
+[^1017]: Another thing
+
+[^1018]: Another thing
+
+[^1019]: Another thing
+
+[^1020]: Another thing
+
+[^1021]: Another thing
+
+[^1022]: Another thing
+
+[^1023]: Another thing
+
+[^1024]: Another thing
+
+[^1025]: Another thing
+
+[^1026]: Another thing
+
+[^1027]: Another thing
+
+[^1028]: Another thing
+
+[^1029]: Another thing
+
+[^1030]: Another thing
+
+[^1031]: Another thing
+
+[^1032]: Another thing
+
+[^1033]: Another thing
+
+[^1034]: Another thing
+
+[^1035]: Another thing
+
+[^1036]: Another thing
+
+[^1037]: Another thing
+
+[^1038]: Another thing
+
+[^1039]: Another thing
+
+[^1040]: Another thing
+
+[^1041]: Another thing
+
+[^1042]: Another thing
+
+[^1043]: Another thing
+
+[^1044]: Another thing
+
+[^1045]: Another thing
+
+[^1046]: Another thing
+
+[^1047]: Another thing
+
+[^1048]: Another thing
+
+[^1049]: Another thing
+
+[^1050]: Another thing
+
+[^1051]: Another thing
+
+[^1052]: Another thing
+
+[^1053]: Another thing
+
+[^1054]: Another thing
+
+[^1055]: Another thing
+
+[^1056]: Another thing
+
+[^1057]: Another thing
+
+[^1058]: Another thing
+
+[^1059]: Another thing
+
+[^1060]: Another thing
+
+[^1061]: Another thing
+
+[^1062]: Another thing
+
+[^1063]: Another thing
+
+[^1064]: Another thing
+
+[^1065]: Another thing
+
+[^1066]: Another thing
+
+[^1067]: Another thing
+
+[^1068]: Another thing
+
+[^1069]: Another thing
+
+[^1070]: Another thing
+
+[^1071]: Another thing
+
+[^1072]: Another thing
+
+[^1073]: Another thing
+
+[^1074]: Another thing
+
+[^1075]: Another thing
+
+[^1076]: Another thing
+
+[^1077]: Another thing
+
+[^1078]: Another thing
+
+[^1079]: Another thing
+
+[^1080]: Another thing
+
+[^1081]: Another thing
+
+[^1082]: Another thing
+
+[^1083]: Another thing
+
+[^1084]: Another thing
+
+[^1085]: Another thing
+
+[^1086]: Another thing
+
+[^1087]: Another thing
+
+[^1088]: Another thing
+
+[^1089]: Another thing
+
+[^1090]: Another thing
+
+[^1091]: Another thing
+
+[^1092]: Another thing
+
+[^1093]: Another thing
+
+[^1094]: Another thing
+
+[^1095]: Another thing
+
+[^1096]: Another thing
+
+[^1097]: Another thing
+
+[^1098]: Another thing
+
+[^1099]: Another thing
+
+[^1100]: Another thing
+
+[^1101]: Another thing
+
+[^1102]: Another thing
+
+[^1103]: Another thing
+
+[^1104]: Another thing
+
+[^1105]: Another thing
+
+[^1106]: Another thing
+
+[^1107]: Another thing
+
+[^1108]: Another thing
+
+[^1109]: Another thing
+
+[^1110]: Another thing
+
+[^1111]: Another thing
+
+[^1112]: Another thing
+
+[^1113]: Another thing
+
+[^1114]: Another thing
+
+[^1115]: Another thing
+
+[^1116]: Another thing
+
+[^1117]: Another thing
+
+[^1118]: Another thing
+
+[^1119]: Another thing
+
+[^1120]: Another thing
+
+[^1121]: Another thing
+
+[^1122]: Another thing
+
+[^1123]: Another thing
+
+[^1124]: Another thing
+
+[^1125]: Another thing
+
+[^1126]: Another thing
+
+[^1127]: Another thing
+
+[^1128]: Another thing
+
+[^1129]: Another thing
+
+[^1130]: Another thing
+
+[^1131]: Another thing
+
+[^1132]: Another thing
+
+[^1133]: Another thing
+
+[^1134]: Another thing
+
+[^1135]: Another thing
+
+[^1136]: Another thing
+
+[^1137]: Another thing
+
+[^1138]: Another thing
+
+[^1139]: Another thing
+
+[^1140]: Another thing
+
+[^1141]: Another thing
+
+[^1142]: Another thing
+
+[^1143]: Another thing
+
+[^1144]: Another thing
+
+[^1145]: Another thing
+
+[^1146]: Another thing
+
+[^1147]: Another thing
+
+[^1148]: Another thing
+
+[^1149]: Another thing
+
+[^1150]: Another thing
+
+[^1151]: Another thing
+
+[^1152]: Another thing
+
+[^1153]: Another thing
+
+[^1154]: Another thing
+
+[^1155]: Another thing
+
+[^1156]: Another thing
+
+[^1157]: Another thing
+
+[^1158]: Another thing
+
+[^1159]: Another thing
+
+[^1160]: Another thing
+
+[^1161]: Another thing
+
+[^1162]: Another thing
+
+[^1163]: Another thing
+
+[^1164]: Another thing
+
+[^1165]: Another thing
+
+[^1166]: Another thing
+
+[^1167]: Another thing
+
+[^1168]: Another thing
+
+[^1169]: Another thing
+
+[^1170]: Another thing
+
+[^1171]: Another thing
+
+[^1172]: Another thing
+
+[^1173]: Another thing
+
+[^1174]: Another thing
+
+[^1175]: Another thing
+
+[^1176]: Another thing
+
+[^1177]: Another thing
+
+[^1178]: Another thing
+
+[^1179]: Another thing
+
+[^1180]: Another thing
+
+[^1181]: Another thing
+
+[^1182]: Another thing
+
+[^1183]: Another thing
+
+[^1184]: Another thing
+
+[^1185]: Another thing
+
+[^1186]: Another thing
+
+[^1187]: Another thing
+
+[^1188]: Another thing
+
+[^1189]: Another thing
+
+[^1190]: Another thing
+
+[^1191]: Another thing
+
+[^1192]: Another thing
+
+[^1193]: Another thing
+
+[^1194]: Another thing
+
+[^1195]: Another thing
+
+[^1196]: Another thing
+
+[^1197]: Another thing
+
+[^1198]: Another thing
+
+[^1199]: Another thing
+
-<div class="footnote">\r
-<hr />\r
-<ol>\r
-<li id="fn:1">\r
-<p>A Footnote. <a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>\r
-</li>\r
-</ol>\r
-</div>\r
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:1">
+<p>A Footnote. <a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>
+</li>
+</ol>
+</div>
<p>Some text with a footnote<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup>.</p>
\ No newline at end of file
-///Footnotes Go Here///\r
-\r
-Some text with a footnote[^1].\r
-\r
-[^1]: A Footnote.\r
+///Footnotes Go Here///
+
+Some text with a footnote[^1].
+
+[^1]: A Footnote.
-<p>some text</p>\r
-<dl>\r
-<dt>term 1</dt>\r
-<dd>\r
-<p>def 1-1</p>\r
-</dd>\r
-<dd>\r
-<p>def 2-2</p>\r
-</dd>\r
-<dt>term 2</dt>\r
-<dt>term 3</dt>\r
-<dd>\r
-<p>def 2-1\r
-line 2 of def 2-1</p>\r
-</dd>\r
-<dd>\r
-<p>def 2-2</p>\r
-<p>par 2 of def2-2</p>\r
-</dd>\r
-</dl>\r
-<p>more text</p>\r
-<dl>\r
-<dt>term 4</dt>\r
-<dd>not loose</dd>\r
-<dt>term 5</dt>\r
-<dd>\r
-<p>loose</p>\r
-</dd>\r
-<dt>term 6</dt>\r
-<dd>also not loose</dd>\r
+<p>some text</p>
+<dl>
+<dt>term 1</dt>
+<dd>
+<p>def 1-1</p>
+</dd>
+<dd>
+<p>def 2-2</p>
+</dd>
+<dt>term 2</dt>
+<dt>term 3</dt>
+<dd>
+<p>def 2-1
+line 2 of def 2-1</p>
+</dd>
+<dd>
+<p>def 2-2</p>
+<p>par 2 of def2-2</p>
+</dd>
+</dl>
+<p>more text</p>
+<dl>
+<dt>term 4</dt>
+<dd>not loose</dd>
+<dt>term 5</dt>
+<dd>
+<p>loose</p>
+</dd>
+<dt>term 6</dt>
+<dd>also not loose</dd>
</dl>
\ No newline at end of file
-some text\r
-\r
-term 1\r
-\r
-: def 1-1\r
-\r
-: def 2-2\r
-\r
-term 2\r
-term 3\r
-\r
-: def 2-1\r
- line 2 of def 2-1\r
-\r
-: def 2-2\r
-\r
- par 2 of def2-2\r
-\r
-more text\r
-\r
-term 4\r
-: not loose\r
-\r
-\r
-term 5\r
-\r
-: loose\r
-\r
-term 6\r
-: also not loose\r
-\r
+some text
+
+term 1
+
+: def 1-1
+
+: def 2-2
+
+term 2
+term 3
+
+: def 2-1
+ line 2 of def 2-1
+
+: def 2-2
+
+ par 2 of def2-2
+
+more text
+
+term 4
+: not loose
+
+
+term 5
+
+: loose
+
+term 6
+: also not loose
+
-<h1>Markdown: Syntax</h1>\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>\r
- <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<ul>\r
-<li><a href="#overview">Overview</a><ul>\r
-<li><a href="#philosophy">Philosophy</a></li>\r
-<li><a href="#html">Inline HTML</a></li>\r
-<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#block">Block Elements</a><ul>\r
-<li><a href="#p">Paragraphs and Line Breaks</a></li>\r
-<li><a href="#header">Headers</a></li>\r
-<li><a href="#blockquote">Blockquotes</a></li>\r
-<li><a href="#list">Lists</a></li>\r
-<li><a href="#precode">Code Blocks</a></li>\r
-<li><a href="#hr">Horizontal Rules</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#span">Span Elements</a><ul>\r
-<li><a href="#link">Links</a></li>\r
-<li><a href="#em">Emphasis</a></li>\r
-<li><a href="#code">Code</a></li>\r
-<li><a href="#img">Images</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#misc">Miscellaneous</a><ul>\r
-<li><a href="#backslash">Backslash Escapes</a></li>\r
-<li><a href="#autolink">Automatic Links</a></li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-<hr />\r
-<h2 id="overview">Overview</h2>\r
-\r
-<h3 id="philosophy">Philosophy</h3>\r
-\r
-<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\r
-<p>Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,\r
-<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.</p>\r
-<p>To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like *emphasis*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.</p>\r
-<h3 id="html">Inline HTML</h3>\r
-\r
-<p>Markdown's syntax is intended for one purpose: to be used as a\r
-format for <em>writing</em> for the web.</p>\r
-<p>Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is <em>not</em> to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.</p>\r
-<p>For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.</p>\r
-<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,\r
-<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>\r
-<p>For example, to add an HTML table to a Markdown article:</p>\r
-<pre><code>This is a regular paragraph.\r
-\r
-<table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
-</table>\r
-\r
-This is another regular paragraph.\r
-</code></pre>\r
-<p>Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an\r
-HTML block.</p>\r
-<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's\r
-link or image syntax, go right ahead.</p>\r
-<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within\r
-span-level tags.</p>\r
-<h3 id="autoescape">Automatic Escaping for Special Characters</h3>\r
-\r
-<p>In HTML, there are two characters that demand special treatment: <code><</code>\r
-and <code>&</code>. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. <code>&lt;</code>, and\r
-<code>&amp;</code>.</p>\r
-<p>Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:</p>\r
-<pre><code>http://images.google.com/images?num=30&q=larry+bird\r
-</code></pre>\r
-<p>you need to encode the URL as:</p>\r
-<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird\r
-</code></pre>\r
-<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.</p>\r
-<p>Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into <code>&amp;</code>.</p>\r
-<p>So, if you want to include a copyright symbol in your article, you can write:</p>\r
-<pre><code>&copy;\r
-</code></pre>\r
-<p>and Markdown will leave it alone. But if you write:</p>\r
-<pre><code>AT&T\r
-</code></pre>\r
-<p>Markdown will translate it to:</p>\r
-<pre><code>AT&amp;T\r
-</code></pre>\r
-<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:</p>\r
-<pre><code>4 < 5\r
-</code></pre>\r
-<p>Markdown will translate it to:</p>\r
-<pre><code>4 &lt; 5\r
-</code></pre>\r
-<p>However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are <em>always</em> encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single <code><</code>\r
-and <code>&</code> in your example code needs to be escaped.)</p>\r
-<hr />\r
-<h2 id="block">Block Elements</h2>\r
-\r
-<h3 id="p">Paragraphs and Line Breaks</h3>\r
-\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-<p>The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a <code><br /></code> tag.</p>\r
-<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you\r
-end a line with two or more spaces, then type return.</p>\r
-<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic\r
-"every line break is a <code><br /></code>" rule wouldn't work for Markdown.\r
-Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>\r
-work best -- and look better -- when you format them with hard breaks.</p>\r
-<h3 id="header">Headers</h3>\r
-\r
-<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>\r
-<p>Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:</p>\r
-<pre><code>This is an H1\r
-=============\r
-\r
-This is an H2\r
--------------\r
-</code></pre>\r
-<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>\r
-<p>Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:</p>\r
-<pre><code># This is an H1\r
-\r
-## This is an H2\r
-\r
-###### This is an H6\r
-</code></pre>\r
-<p>Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :</p>\r
-<pre><code># This is an H1 #\r
-\r
-## This is an H2 ##\r
-\r
-### This is an H3 ######\r
-</code></pre>\r
-<h3 id="blockquote">Blockquotes</h3>\r
-\r
-<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a <code>></code> before every line:</p>\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-> \r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-> id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>Markdown allows you to be lazy and only put the <code>></code> before the first\r
-line of a hard-wrapped paragraph:</p>\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of <code>></code>:</p>\r
-<pre><code>> This is the first level of quoting.\r
->\r
-> > This is nested blockquote.\r
->\r
-> Back to the first level.\r
-</code></pre>\r
-<p>Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:</p>\r
-<pre><code>> ## This is a header.\r
-> \r
-> 1. This is the first list item.\r
-> 2. This is the second list item.\r
-> \r
-> Here's some example code:\r
-> \r
-> return shell_exec("echo $input | $markdown_script");\r
-</code></pre>\r
-<p>Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.</p>\r
-<h3 id="list">Lists</h3>\r
-\r
-<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>\r
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:</p>\r
-<pre><code>* Red\r
-* Green\r
-* Blue\r
-</code></pre>\r
-<p>is equivalent to:</p>\r
-<pre><code>+ Red\r
-+ Green\r
-+ Blue\r
-</code></pre>\r
-<p>and:</p>\r
-<pre><code>- Red\r
-- Green\r
-- Blue\r
-</code></pre>\r
-<p>Ordered lists use numbers followed by periods:</p>\r
-<pre><code>1. Bird\r
-2. McHale\r
-3. Parish\r
-</code></pre>\r
-<p>It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:</p>\r
-<pre><code><ol>\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-</code></pre>\r
-<p>If you instead wrote the list in Markdown like this:</p>\r
-<pre><code>1. Bird\r
-1. McHale\r
-1. Parish\r
-</code></pre>\r
-<p>or even:</p>\r
-<pre><code>3. Bird\r
-1. McHale\r
-8. Parish\r
-</code></pre>\r
-<p>you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.</p>\r
-<p>If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.</p>\r
-<p>List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.</p>\r
-<p>To make lists look nice, you can wrap items with hanging indents:</p>\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>But if you want to be lazy, you don't have to:</p>\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
-Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
-viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
-Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>If list items are separated by blank lines, Markdown will wrap the\r
-items in <code><p></code> tags in the HTML output. For example, this input:</p>\r
-<pre><code>* Bird\r
-* Magic\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><ul>\r
-<li>Bird</li>\r
-<li>Magic</li>\r
-</ul>\r
-</code></pre>\r
-<p>But this:</p>\r
-<pre><code>* Bird\r
-\r
-* Magic\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><ul>\r
-<li><p>Bird</p></li>\r
-<li><p>Magic</p></li>\r
-</ul>\r
-</code></pre>\r
-<p>List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:</p>\r
-<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
-2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:</p>\r
-<pre><code>* This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
-only required to indent the first line. Lorem ipsum dolor\r
-sit amet, consectetuer adipiscing elit.\r
-\r
-* Another item in the same list.\r
-</code></pre>\r
-<p>To put a blockquote within a list item, the blockquote's <code>></code>\r
-delimiters need to be indented:</p>\r
-<pre><code>* A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-</code></pre>\r
-<p>To put a code block within a list item, the code block needs\r
-to be indented <em>twice</em> -- 8 spaces or two tabs:</p>\r
-<pre><code>* A list item with a code block:\r
-\r
- <code goes here>\r
-</code></pre>\r
-<p>It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:</p>\r
-<pre><code>1986. What a great season.\r
-</code></pre>\r
-<p>In other words, a <em>number-period-space</em> sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:</p>\r
-<pre><code>1986\. What a great season.\r
-</code></pre>\r
-<h3 id="precode">Code Blocks</h3>\r
-\r
-<p>Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both <code><pre></code> and <code><code></code> tags.</p>\r
-<p>To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:</p>\r
-<pre><code>This is a normal paragraph:\r
-\r
- This is a code block.\r
-</code></pre>\r
-<p>Markdown will generate:</p>\r
-<pre><code><p>This is a normal paragraph:</p>\r
-\r
-<pre><code>This is a code block.\r
-</code></pre>\r
-</code></pre>\r
-<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:</p>\r
-<pre><code>Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><p>Here is an example of AppleScript:</p>\r
-\r
-<pre><code>tell application "Foo"\r
- beep\r
-end tell\r
-</code></pre>\r
-</code></pre>\r
-<p>A code block continues until it reaches a line that is not indented\r
-(or the end of the article).</p>\r
-<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:</p>\r
-<pre><code> <div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><pre><code>&lt;div class="footer"&gt;\r
- &amp;copy; 2004 Foo Corporation\r
-&lt;/div&gt;\r
-</code></pre>\r
-</code></pre>\r
-<p>Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.</p>\r
-<h3 id="hr">Horizontal Rules</h3>\r
-\r
-<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:</p>\r
-<pre><code>* * *\r
-\r
-***\r
-\r
-*****\r
-\r
-- - -\r
-\r
----------------------------------------\r
-\r
-_ _ _\r
-</code></pre>\r
-<hr />\r
-<h2 id="span">Span Elements</h2>\r
-\r
-<h3 id="link">Links</h3>\r
-\r
-<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>\r
-<p>In both styles, the link text is delimited by [square brackets].</p>\r
-<p>To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an <em>optional</em>\r
-title for the link, surrounded in quotes. For example:</p>\r
-<pre><code>This is [an example](http://example.com/ "Title") inline link.\r
-\r
-[This link](http://example.net/) has no title attribute.\r
-</code></pre>\r
-<p>Will produce:</p>\r
-<pre><code><p>This is <a href="http://example.com/" title="Title">\r
-an example</a> inline link.</p>\r
-\r
-<p><a href="http://example.net/">This link</a> has no\r
-title attribute.</p>\r
-</code></pre>\r
-<p>If you're referring to a local resource on the same server, you can\r
-use relative paths:</p>\r
-<pre><code>See my [About](/about/) page for details.\r
-</code></pre>\r
-<p>Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:</p>\r
-<pre><code>This is [an example][id] reference-style link.\r
-</code></pre>\r
-<p>You can optionally use a space to separate the sets of brackets:</p>\r
-<pre><code>This is [an example] [id] reference-style link.\r
-</code></pre>\r
-<p>Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:</p>\r
-<pre><code>[id]: http://example.com/ "Optional Title Here"\r
-</code></pre>\r
-<p>That is:</p>\r
-<ul>\r
-<li>Square brackets containing the link identifier (optionally\r
- indented from the left margin using up to three spaces);</li>\r
-<li>followed by a colon;</li>\r
-<li>followed by one or more spaces (or tabs);</li>\r
-<li>followed by the URL for the link;</li>\r
-<li>optionally followed by a title attribute for the link, enclosed\r
- in double or single quotes.</li>\r
-</ul>\r
-<p>The link URL may, optionally, be surrounded by angle brackets:</p>\r
-<pre><code>[id]: <http://example.com/> "Optional Title Here"\r
-</code></pre>\r
-<p>You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:</p>\r
-<pre><code>[id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-</code></pre>\r
-<p>Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.</p>\r
-<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>\r
-<pre><code>[link text][a]\r
-[link text][A]\r
-</code></pre>\r
-<p>are equivalent.</p>\r
-<p>The <em>implicit link name</em> shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:</p>\r
-<pre><code>[Google][]\r
-</code></pre>\r
-<p>And then define the link:</p>\r
-<pre><code>[Google]: http://google.com/\r
-</code></pre>\r
-<p>Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:</p>\r
-<pre><code>Visit [Daring Fireball][] for more information.\r
-</code></pre>\r
-<p>And then define the link:</p>\r
-<pre><code>[Daring Fireball]: http://daringfireball.net/\r
-</code></pre>\r
-<p>Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.</p>\r
-<p>Here's an example of reference links in action:</p>\r
-<pre><code>I get 10 times more traffic from [Google] [1] than from\r
-[Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Using the implicit link name shortcut, you could instead write:</p>\r
-<pre><code>I get 10 times more traffic from [Google][] than from\r
-[Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Both of the above examples will produce the following HTML output:</p>\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from\r
-<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
-or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-<p>For comparison, here is the same paragraph written using\r
-Markdown's inline link style:</p>\r
-<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")\r
-than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
-[MSN](http://search.msn.com/ "MSN Search").\r
-</code></pre>\r
-<p>The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.</p>\r
-<p>With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.</p>\r
-<h3 id="em">Emphasis</h3>\r
-\r
-<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of\r
-emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an\r
-HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML\r
-<code><strong></code> tag. E.g., this input:</p>\r
-<pre><code>*single asterisks*\r
-\r
-_single underscores_\r
-\r
-**double asterisks**\r
-\r
-__double underscores__\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><em>single asterisks</em>\r
-\r
-<em>single underscores</em>\r
-\r
-<strong>double asterisks</strong>\r
-\r
-<strong>double underscores</strong>\r
-</code></pre>\r
-<p>You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.</p>\r
-<p>Emphasis can be used in the middle of a word:</p>\r
-<pre><code>un*fucking*believable\r
-</code></pre>\r
-<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a\r
-literal asterisk or underscore.</p>\r
-<p>To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:</p>\r
-<pre><code>\*this text is surrounded by literal asterisks\*\r
-</code></pre>\r
-<h3 id="code">Code</h3>\r
-\r
-<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:</p>\r
-<pre><code>Use the `printf()` function.\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><p>Use the <code>printf()</code> function.</p>\r
-</code></pre>\r
-<p>To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:</p>\r
-<pre><code>``There is a literal backtick (`) here.``\r
-</code></pre>\r
-<p>which will produce this:</p>\r
-<pre><code><p><code>There is a literal backtick (`) here.</code></p>\r
-</code></pre>\r
-<p>The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:</p>\r
-<pre><code>A single backtick in a code span: `` ` ``\r
-\r
-A backtick-delimited string in a code span: `` `foo` ``\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><p>A single backtick in a code span: <code>`</code></p>\r
-\r
-<p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-</code></pre>\r
-<p>With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:</p>\r
-<pre><code>Please don't use any `<blink>` tags.\r
-</code></pre>\r
-<p>into:</p>\r
-<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>\r
-</code></pre>\r
-<p>You can write this:</p>\r
-<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.\r
-</code></pre>\r
-<p>to produce:</p>\r
-<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded\r
-equivalent of <code>&amp;mdash;</code>.</p>\r
-</code></pre>\r
-<h3 id="img">Images</h3>\r
-\r
-<p>Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.</p>\r
-<p>Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>\r
-<p>Inline image syntax looks like this:</p>\r
-<pre><code>\r
-\r
-\r
-</code></pre>\r
-<p>That is:</p>\r
-<ul>\r
-<li>An exclamation mark: <code>!</code>;</li>\r
-<li>followed by a set of square brackets, containing the <code>alt</code>\r
- attribute text for the image;</li>\r
-<li>followed by a set of parentheses, containing the URL or path to\r
- the image, and an optional <code>title</code> attribute enclosed in double\r
- or single quotes.</li>\r
-</ul>\r
-<p>Reference-style image syntax looks like this:</p>\r
-<pre><code>![Alt text][id]\r
-</code></pre>\r
-<p>Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:</p>\r
-<pre><code>[id]: url/to/image "Optional title attribute"\r
-</code></pre>\r
-<p>As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML <code><img></code> tags.</p>\r
-<hr />\r
-<h2 id="misc">Miscellaneous</h2>\r
-\r
-<h3 id="autolink">Automatic Links</h3>\r
-\r
-<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>\r
-<pre><code><http://example.com/>\r
-</code></pre>\r
-<p>Markdown will turn this into:</p>\r
-<pre><code><a href="http://example.com/">http://example.com/</a>\r
-</code></pre>\r
-<p>Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:</p>\r
-<pre><code><address@example.com>\r
-</code></pre>\r
-<p>into something like this:</p>\r
-<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;\r
-&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;\r
-&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;\r
-&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>\r
-</code></pre>\r
-<p>which will render in a browser as a clickable link to "address@example.com".</p>\r
-<p>(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)</p>\r
-<h3 id="backslash">Backslash Escapes</h3>\r
-\r
-<p>Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes\r
-before the asterisks, like this:</p>\r
-<pre><code>\*literal asterisks\*\r
-</code></pre>\r
-<p>Markdown provides backslash escapes for the following characters:</p>\r
-<pre><code>\ backslash\r
-` backtick\r
-* asterisk\r
-_ underscore\r
-{} curly braces\r
-[] square brackets\r
-() parentheses\r
-# hash mark\r
-+ plus sign\r
-- minus sign (hyphen)\r
-. dot\r
-! exclamation mark\r
+<h1>Markdown: Syntax</h1>
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<ul>
+<li><a href="#overview">Overview</a><ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#html">Inline HTML</a></li>
+<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
+</ul>
+</li>
+<li><a href="#block">Block Elements</a><ul>
+<li><a href="#p">Paragraphs and Line Breaks</a></li>
+<li><a href="#header">Headers</a></li>
+<li><a href="#blockquote">Blockquotes</a></li>
+<li><a href="#list">Lists</a></li>
+<li><a href="#precode">Code Blocks</a></li>
+<li><a href="#hr">Horizontal Rules</a></li>
+</ul>
+</li>
+<li><a href="#span">Span Elements</a><ul>
+<li><a href="#link">Links</a></li>
+<li><a href="#em">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#img">Images</a></li>
+</ul>
+</li>
+<li><a href="#misc">Miscellaneous</a><ul>
+<li><a href="#backslash">Backslash Escapes</a></li>
+<li><a href="#autolink">Automatic Links</a></li>
+</ul>
+</li>
+</ul>
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
+<hr />
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+<h3 id="html">Inline HTML</h3>
+
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,
+<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>
+<p>For example, to add an HTML table to a Markdown article:</p>
+<pre><code>This is a regular paragraph.
+
+<table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+</table>
+
+This is another regular paragraph.
+</code></pre>
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+<p>In HTML, there are two characters that demand special treatment: <code><</code>
+and <code>&</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&lt;</code>, and
+<code>&amp;</code>.</p>
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+<pre><code>http://images.google.com/images?num=30&q=larry+bird
+</code></pre>
+<p>you need to encode the URL as:</p>
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;</code>.</p>
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+<pre><code>&copy;
+</code></pre>
+<p>and Markdown will leave it alone. But if you write:</p>
+<pre><code>AT&T
+</code></pre>
+<p>Markdown will translate it to:</p>
+<pre><code>AT&amp;T
+</code></pre>
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+<pre><code>4 < 5
+</code></pre>
+<p>Markdown will translate it to:</p>
+<pre><code>4 &lt; 5
+</code></pre>
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code><</code>
+and <code>&</code> in your example code needs to be escaped.)</p>
+<hr />
+<h2 id="block">Block Elements</h2>
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code><br /></code> tag.</p>
+<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic
+"every line break is a <code><br /></code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+<h3 id="header">Headers</h3>
+
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+<h3 id="blockquote">Blockquotes</h3>
+
+<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>></code> before every line:</p>
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>Markdown allows you to be lazy and only put the <code>></code> before the first
+line of a hard-wrapped paragraph:</p>
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>></code>:</p>
+<pre><code>> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+</code></pre>
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+<pre><code>> ## This is a header.
+>
+> 1. This is the first list item.
+> 2. This is the second list item.
+>
+> Here's some example code:
+>
+> return shell_exec("echo $input | $markdown_script");
+</code></pre>
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+<h3 id="list">Lists</h3>
+
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+<p>is equivalent to:</p>
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+<p>and:</p>
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+<p>Ordered lists use numbers followed by periods:</p>
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+<pre><code><ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+</code></pre>
+<p>If you instead wrote the list in Markdown like this:</p>
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+<p>or even:</p>
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>But if you want to be lazy, you don't have to:</p>
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code><p></code> tags in the HTML output. For example, this input:</p>
+<pre><code>* Bird
+* Magic
+</code></pre>
+<p>will turn into:</p>
+<pre><code><ul>
+<li>Bird</li>
+<li>Magic</li>
+</ul>
+</code></pre>
+<p>But this:</p>
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+<p>will turn into:</p>
+<pre><code><ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
+</code></pre>
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:</p>
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+<p>To put a blockquote within a list item, the blockquote's <code>></code>
+delimiters need to be indented:</p>
+<pre><code>* A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+</code></pre>
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+<pre><code>* A list item with a code block:
+
+ <code goes here>
+</code></pre>
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+<pre><code>1986. What a great season.
+</code></pre>
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+<pre><code>1986\. What a great season.
+</code></pre>
+<h3 id="precode">Code Blocks</h3>
+
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code><pre></code> and <code><code></code> tags.</p>
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+<p>Markdown will generate:</p>
+<pre><code><p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
+</code></pre>
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+<p>will turn into:</p>
+<pre><code><p>Here is an example of AppleScript:</p>
+
+<pre><code>tell application "Foo"
+ beep
+end tell
+</code></pre>
+</code></pre>
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+<pre><code> <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+</code></pre>
+<p>will turn into:</p>
+<pre><code><pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+&lt;/div&gt;
+</code></pre>
+</code></pre>
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+<h3 id="hr">Horizontal Rules</h3>
+
+<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+<hr />
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+<p>In both styles, the link text is delimited by [square brackets].</p>
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+<p>Will produce:</p>
+<pre><code><p>This is <a href="http://example.com/" title="Title">
+an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no
+title attribute.</p>
+</code></pre>
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+<p>You can optionally use a space to separate the sets of brackets:</p>
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+<p>That is:</p>
+<ul>
+<li>Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.</li>
+</ul>
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+<pre><code>[id]: <http://example.com/> "Optional Title Here"
+</code></pre>
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+<p>are equivalent.</p>
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+<pre><code>[Google][]
+</code></pre>
+<p>And then define the link:</p>
+<pre><code>[Google]: http://google.com/
+</code></pre>
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+<p>And then define the link:</p>
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+<p>Here's an example of reference links in action:</p>
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Using the implicit link name shortcut, you could instead write:</p>
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Both of the above examples will produce the following HTML output:</p>
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from
+<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+</code></pre>
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+<h3 id="em">Emphasis</h3>
+
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code><strong></code> tag. E.g., this input:</p>
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+<p>will produce:</p>
+<pre><code><em>single asterisks</em>
+
+<em>single underscores</em>
+
+<strong>double asterisks</strong>
+
+<strong>double underscores</strong>
+</code></pre>
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+<p>Emphasis can be used in the middle of a word:</p>
+<pre><code>un*fucking*believable
+</code></pre>
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+<h3 id="code">Code</h3>
+
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+<pre><code>Use the `printf()` function.
+</code></pre>
+<p>will produce:</p>
+<pre><code><p>Use the <code>printf()</code> function.</p>
+</code></pre>
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+<p>which will produce this:</p>
+<pre><code><p><code>There is a literal backtick (`) here.</code></p>
+</code></pre>
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+<p>will produce:</p>
+<pre><code><p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+</code></pre>
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+<pre><code>Please don't use any `<blink>` tags.
+</code></pre>
+<p>into:</p>
+<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+</code></pre>
+<p>You can write this:</p>
+<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+</code></pre>
+<p>to produce:</p>
+<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded
+equivalent of <code>&amp;mdash;</code>.</p>
+</code></pre>
+<h3 id="img">Images</h3>
+
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+<p>Inline image syntax looks like this:</p>
+<pre><code>
+
+
+</code></pre>
+<p>That is:</p>
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+ attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+ the image, and an optional <code>title</code> attribute enclosed in double
+ or single quotes.</li>
+</ul>
+<p>Reference-style image syntax looks like this:</p>
+<pre><code>![Alt text][id]
+</code></pre>
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code><img></code> tags.</p>
+<hr />
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+<pre><code><http://example.com/>
+</code></pre>
+<p>Markdown will turn this into:</p>
+<pre><code><a href="http://example.com/">http://example.com/</a>
+</code></pre>
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+<pre><code><address@example.com>
+</code></pre>
+<p>into something like this:</p>
+<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+</code></pre>
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+<h3 id="backslash">Backslash Escapes</h3>
+
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes
+before the asterisks, like this:</p>
+<pre><code>\*literal asterisks\*
+</code></pre>
+<p>Markdown provides backslash escapes for the following characters:</p>
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
</code></pre>
\ No newline at end of file
-Markdown: Syntax\r
-================\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>\r
- <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-\r
-* [Overview](#overview)\r
- * [Philosophy](#philosophy)\r
- * [Inline HTML](#html)\r
- * [Automatic Escaping for Special Characters](#autoescape)\r
-* [Block Elements](#block)\r
- * [Paragraphs and Line Breaks](#p)\r
- * [Headers](#header)\r
- * [Blockquotes](#blockquote)\r
- * [Lists](#list)\r
- * [Code Blocks](#precode)\r
- * [Horizontal Rules](#hr)\r
-* [Span Elements](#span)\r
- * [Links](#link)\r
- * [Emphasis](#em)\r
- * [Code](#code)\r
- * [Images](#img)\r
-* [Miscellaneous](#misc)\r
- * [Backslash Escapes](#backslash)\r
- * [Automatic Links](#autolink)\r
-\r
-\r
-**Note:** This document is itself written using Markdown; you\r
-can [see the source for it by adding '.text' to the URL][src].\r
-\r
- [src]: /projects/markdown/syntax.text\r
-\r
-* * *\r
-\r
-<h2 id="overview">Overview</h2>\r
-\r
-<h3 id="philosophy">Philosophy</h3>\r
-\r
-Markdown is intended to be as easy-to-read and easy-to-write as is feasible.\r
-\r
-Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],\r
-[Grutatext] [5], and [EtText] [6] -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.\r
-\r
- [1]: http://docutils.sourceforge.net/mirror/setext.html\r
- [2]: http://www.aaronsw.com/2002/atx/\r
- [3]: http://textism.com/tools/textile/\r
- [4]: http://docutils.sourceforge.net/rst.html\r
- [5]: http://www.triptico.com/software/grutatxt.html\r
- [6]: http://ettext.taint.org/doc/\r
-\r
-To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like \*emphasis\*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.\r
-\r
-\r
-\r
-<h3 id="html">Inline HTML</h3>\r
-\r
-Markdown's syntax is intended for one purpose: to be used as a\r
-format for *writing* for the web.\r
-\r
-Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is *not* to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a *publishing* format; Markdown is a *writing*\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.\r
-\r
-For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.\r
-\r
-The only restrictions are that block-level HTML elements -- e.g. `<div>`,\r
-`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) `<p>` tags around HTML block-level tags.\r
-\r
-For example, to add an HTML table to a Markdown article:\r
-\r
- This is a regular paragraph.\r
-\r
- <table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
- </table>\r
-\r
- This is another regular paragraph.\r
-\r
-Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an\r
-HTML block.\r
-\r
-Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's\r
-link or image syntax, go right ahead.\r
-\r
-Unlike block-level HTML tags, Markdown syntax *is* processed within\r
-span-level tags.\r
-\r
-\r
-<h3 id="autoescape">Automatic Escaping for Special Characters</h3>\r
-\r
-In HTML, there are two characters that demand special treatment: `<`\r
-and `&`. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. `<`, and\r
-`&`.\r
-\r
-Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '`AT&T`'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:\r
-\r
- http://images.google.com/images?num=30&q=larry+bird\r
-\r
-you need to encode the URL as:\r
-\r
- http://images.google.com/images?num=30&q=larry+bird\r
-\r
-in your anchor tag `href` attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.\r
-\r
-Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into `&`.\r
-\r
-So, if you want to include a copyright symbol in your article, you can write:\r
-\r
- ©\r
-\r
-and Markdown will leave it alone. But if you write:\r
-\r
- AT&T\r
-\r
-Markdown will translate it to:\r
-\r
- AT&T\r
-\r
-Similarly, because Markdown supports [inline HTML](#html), if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:\r
-\r
- 4 < 5\r
-\r
-Markdown will translate it to:\r
-\r
- 4 < 5\r
-\r
-However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are *always* encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single `<`\r
-and `&` in your example code needs to be escaped.)\r
-\r
-\r
-* * *\r
-\r
-\r
-<h2 id="block">Block Elements</h2>\r
-\r
-\r
-<h3 id="p">Paragraphs and Line Breaks</h3>\r
-\r
-A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.\r
-\r
-The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a `<br />` tag.\r
-\r
-When you *do* want to insert a `<br />` break tag using Markdown, you\r
-end a line with two or more spaces, then type return.\r
-\r
-Yes, this takes a tad more effort to create a `<br />`, but a simplistic\r
-"every line break is a `<br />`" rule wouldn't work for Markdown.\r
-Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]\r
-work best -- and look better -- when you format them with hard breaks.\r
-\r
- [bq]: #blockquote\r
- [l]: #list\r
-\r
-\r
-\r
-<h3 id="header">Headers</h3>\r
-\r
-Markdown supports two styles of headers, [Setext] [1] and [atx] [2].\r
-\r
-Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:\r
-\r
- This is an H1\r
- =============\r
-\r
- This is an H2\r
- -------------\r
-\r
-Any number of underlining `=`'s or `-`'s will work.\r
-\r
-Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:\r
-\r
- # This is an H1\r
-\r
- ## This is an H2\r
-\r
- ###### This is an H6\r
-\r
-Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :\r
-\r
- # This is an H1 #\r
-\r
- ## This is an H2 ##\r
-\r
- ### This is an H3 ######\r
-\r
-\r
-<h3 id="blockquote">Blockquotes</h3>\r
-\r
-Markdown uses email-style `>` characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a `>` before every line:\r
-\r
- > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
- > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
- > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
- > \r
- > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
- > id sem consectetuer libero luctus adipiscing.\r
-\r
-Markdown allows you to be lazy and only put the `>` before the first\r
-line of a hard-wrapped paragraph:\r
-\r
- > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
- consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
- > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
- id sem consectetuer libero luctus adipiscing.\r
-\r
-Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of `>`:\r
-\r
- > This is the first level of quoting.\r
- >\r
- > > This is nested blockquote.\r
- >\r
- > Back to the first level.\r
-\r
-Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:\r
-\r
- > ## This is a header.\r
- > \r
- > 1. This is the first list item.\r
- > 2. This is the second list item.\r
- > \r
- > Here's some example code:\r
- > \r
- > return shell_exec("echo $input | $markdown_script");\r
-\r
-Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.\r
-\r
-\r
-<h3 id="list">Lists</h3>\r
-\r
-Markdown supports ordered (numbered) and unordered (bulleted) lists.\r
-\r
-Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:\r
-\r
- * Red\r
- * Green\r
- * Blue\r
-\r
-is equivalent to:\r
-\r
- + Red\r
- + Green\r
- + Blue\r
-\r
-and:\r
-\r
- - Red\r
- - Green\r
- - Blue\r
-\r
-Ordered lists use numbers followed by periods:\r
-\r
- 1. Bird\r
- 2. McHale\r
- 3. Parish\r
-\r
-It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:\r
-\r
- <ol>\r
- <li>Bird</li>\r
- <li>McHale</li>\r
- <li>Parish</li>\r
- </ol>\r
-\r
-If you instead wrote the list in Markdown like this:\r
-\r
- 1. Bird\r
- 1. McHale\r
- 1. Parish\r
-\r
-or even:\r
-\r
- 3. Bird\r
- 1. McHale\r
- 8. Parish\r
-\r
-you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.\r
-\r
-If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.\r
-\r
-List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.\r
-\r
-To make lists look nice, you can wrap items with hanging indents:\r
-\r
- * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
- * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-But if you want to be lazy, you don't have to:\r
-\r
- * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
- * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-If list items are separated by blank lines, Markdown will wrap the\r
-items in `<p>` tags in the HTML output. For example, this input:\r
-\r
- * Bird\r
- * Magic\r
-\r
-will turn into:\r
-\r
- <ul>\r
- <li>Bird</li>\r
- <li>Magic</li>\r
- </ul>\r
-\r
-But this:\r
-\r
- * Bird\r
-\r
- * Magic\r
-\r
-will turn into:\r
-\r
- <ul>\r
- <li><p>Bird</p></li>\r
- <li><p>Magic</p></li>\r
- </ul>\r
-\r
-List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:\r
-\r
- 1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
- 2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:\r
-\r
- * This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
- only required to indent the first line. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit.\r
-\r
- * Another item in the same list.\r
-\r
-To put a blockquote within a list item, the blockquote's `>`\r
-delimiters need to be indented:\r
-\r
- * A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-\r
-To put a code block within a list item, the code block needs\r
-to be indented *twice* -- 8 spaces or two tabs:\r
-\r
- * A list item with a code block:\r
-\r
- <code goes here>\r
-\r
-\r
-It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:\r
-\r
- 1986. What a great season.\r
-\r
-In other words, a *number-period-space* sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:\r
-\r
- 1986\. What a great season.\r
-\r
-\r
-\r
-<h3 id="precode">Code Blocks</h3>\r
-\r
-Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both `<pre>` and `<code>` tags.\r
-\r
-To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:\r
-\r
- This is a normal paragraph:\r
-\r
- This is a code block.\r
-\r
-Markdown will generate:\r
-\r
- <p>This is a normal paragraph:</p>\r
-\r
- <pre><code>This is a code block.\r
- </code></pre>\r
-\r
-One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:\r
-\r
- Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-\r
-will turn into:\r
-\r
- <p>Here is an example of AppleScript:</p>\r
-\r
- <pre><code>tell application "Foo"\r
- beep\r
- end tell\r
- </code></pre>\r
-\r
-A code block continues until it reaches a line that is not indented\r
-(or the end of the article).\r
-\r
-Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:\r
-\r
- <div class="footer">\r
- © 2004 Foo Corporation\r
- </div>\r
-\r
-will turn into:\r
-\r
- <pre><code><div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
- </code></pre>\r
-\r
-Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.\r
-\r
-\r
-\r
-<h3 id="hr">Horizontal Rules</h3>\r
-\r
-You can produce a horizontal rule tag (`<hr />`) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:\r
-\r
- * * *\r
-\r
- ***\r
-\r
- *****\r
- \r
- - - -\r
-\r
- ---------------------------------------\r
-\r
- _ _ _\r
-\r
-\r
-* * *\r
-\r
-<h2 id="span">Span Elements</h2>\r
-\r
-<h3 id="link">Links</h3>\r
-\r
-Markdown supports two style of links: *inline* and *reference*.\r
-\r
-In both styles, the link text is delimited by [square brackets].\r
-\r
-To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an *optional*\r
-title for the link, surrounded in quotes. For example:\r
-\r
- This is [an example](http://example.com/ "Title") inline link.\r
-\r
- [This link](http://example.net/) has no title attribute.\r
-\r
-Will produce:\r
-\r
- <p>This is <a href="http://example.com/" title="Title">\r
- an example</a> inline link.</p>\r
-\r
- <p><a href="http://example.net/">This link</a> has no\r
- title attribute.</p>\r
-\r
-If you're referring to a local resource on the same server, you can\r
-use relative paths:\r
-\r
- See my [About](/about/) page for details. \r
-\r
-Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:\r
-\r
- This is [an example][id] reference-style link.\r
-\r
-You can optionally use a space to separate the sets of brackets:\r
-\r
- This is [an example] [id] reference-style link.\r
-\r
-Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:\r
-\r
- [id]: http://example.com/ "Optional Title Here"\r
-\r
-That is:\r
-\r
-* Square brackets containing the link identifier (optionally\r
- indented from the left margin using up to three spaces);\r
-* followed by a colon;\r
-* followed by one or more spaces (or tabs);\r
-* followed by the URL for the link;\r
-* optionally followed by a title attribute for the link, enclosed\r
- in double or single quotes.\r
-\r
-The link URL may, optionally, be surrounded by angle brackets:\r
-\r
- [id]: <http://example.com/> "Optional Title Here"\r
-\r
-You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:\r
-\r
- [id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-\r
-Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.\r
-\r
-Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:\r
-\r
- [link text][a]\r
- [link text][A]\r
-\r
-are equivalent.\r
-\r
-The *implicit link name* shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:\r
-\r
- [Google][]\r
-\r
-And then define the link:\r
-\r
- [Google]: http://google.com/\r
-\r
-Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:\r
-\r
- Visit [Daring Fireball][] for more information.\r
-\r
-And then define the link:\r
- \r
- [Daring Fireball]: http://daringfireball.net/\r
-\r
-Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.\r
-\r
-Here's an example of reference links in action:\r
-\r
- I get 10 times more traffic from [Google] [1] than from\r
- [Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-\r
-Using the implicit link name shortcut, you could instead write:\r
-\r
- I get 10 times more traffic from [Google][] than from\r
- [Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-\r
-Both of the above examples will produce the following HTML output:\r
-\r
- <p>I get 10 times more traffic from <a href="http://google.com/"\r
- title="Google">Google</a> than from\r
- <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
- or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-\r
-For comparison, here is the same paragraph written using\r
-Markdown's inline link style:\r
-\r
- I get 10 times more traffic from [Google](http://google.com/ "Google")\r
- than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
- [MSN](http://search.msn.com/ "MSN Search").\r
-\r
-The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.\r
-\r
-With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.\r
-\r
-\r
-<h3 id="em">Emphasis</h3>\r
-\r
-Markdown treats asterisks (`*`) and underscores (`_`) as indicators of\r
-emphasis. Text wrapped with one `*` or `_` will be wrapped with an\r
-HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML\r
-`<strong>` tag. E.g., this input:\r
-\r
- *single asterisks*\r
-\r
- _single underscores_\r
-\r
- **double asterisks**\r
-\r
- __double underscores__\r
-\r
-will produce:\r
-\r
- <em>single asterisks</em>\r
-\r
- <em>single underscores</em>\r
-\r
- <strong>double asterisks</strong>\r
-\r
- <strong>double underscores</strong>\r
-\r
-You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.\r
-\r
-Emphasis can be used in the middle of a word:\r
-\r
- un*fucking*believable\r
-\r
-But if you surround an `*` or `_` with spaces, it'll be treated as a\r
-literal asterisk or underscore.\r
-\r
-To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:\r
-\r
- \*this text is surrounded by literal asterisks\*\r
-\r
-\r
-\r
-<h3 id="code">Code</h3>\r
-\r
-To indicate a span of code, wrap it with backtick quotes (`` ` ``).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:\r
-\r
- Use the `printf()` function.\r
-\r
-will produce:\r
-\r
- <p>Use the <code>printf()</code> function.</p>\r
-\r
-To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:\r
-\r
- ``There is a literal backtick (`) here.``\r
-\r
-which will produce this:\r
-\r
- <p><code>There is a literal backtick (`) here.</code></p>\r
-\r
-The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:\r
-\r
- A single backtick in a code span: `` ` ``\r
- \r
- A backtick-delimited string in a code span: `` `foo` ``\r
-\r
-will produce:\r
-\r
- <p>A single backtick in a code span: <code>`</code></p>\r
- \r
- <p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-\r
-With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:\r
-\r
- Please don't use any `<blink>` tags.\r
-\r
-into:\r
-\r
- <p>Please don't use any <code><blink></code> tags.</p>\r
-\r
-You can write this:\r
-\r
- `—` is the decimal-encoded equivalent of `—`.\r
-\r
-to produce:\r
-\r
- <p><code>&#8212;</code> is the decimal-encoded\r
- equivalent of <code>&mdash;</code>.</p>\r
-\r
-\r
-\r
-<h3 id="img">Images</h3>\r
-\r
-Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.\r
-\r
-Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: *inline* and *reference*.\r
-\r
-Inline image syntax looks like this:\r
-\r
- \r
-\r
- \r
-\r
-That is:\r
-\r
-* An exclamation mark: `!`;\r
-* followed by a set of square brackets, containing the `alt`\r
- attribute text for the image;\r
-* followed by a set of parentheses, containing the URL or path to\r
- the image, and an optional `title` attribute enclosed in double\r
- or single quotes.\r
-\r
-Reference-style image syntax looks like this:\r
-\r
- ![Alt text][id]\r
-\r
-Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:\r
-\r
- [id]: url/to/image "Optional title attribute"\r
-\r
-As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML `<img>` tags.\r
-\r
-\r
-* * *\r
-\r
-\r
-<h2 id="misc">Miscellaneous</h2>\r
-\r
-<h3 id="autolink">Automatic Links</h3>\r
-\r
-Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:\r
-\r
- <http://example.com/>\r
- \r
-Markdown will turn this into:\r
-\r
- <a href="http://example.com/">http://example.com/</a>\r
-\r
-Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:\r
-\r
- <address@example.com>\r
-\r
-into something like this:\r
-\r
- <a href="mailto:addre\r
- ss@example.co\r
- m">address@exa\r
- mple.com</a>\r
-\r
-which will render in a browser as a clickable link to "address@example.com".\r
-\r
-(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)\r
-\r
-\r
-\r
-<h3 id="backslash">Backslash Escapes</h3>\r
-\r
-Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML `<em>` tag), you can backslashes\r
-before the asterisks, like this:\r
-\r
- \*literal asterisks\*\r
-\r
-Markdown provides backslash escapes for the following characters:\r
-\r
- \ backslash\r
- ` backtick\r
- * asterisk\r
- _ underscore\r
- {} curly braces\r
- [] square brackets\r
- () parentheses\r
- # hash mark\r
- + plus sign\r
- - minus sign (hyphen)\r
- . dot\r
- ! exclamation mark\r
-\r
+Markdown: Syntax
+================
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+
+* [Overview](#overview)
+ * [Philosophy](#philosophy)
+ * [Inline HTML](#html)
+ * [Automatic Escaping for Special Characters](#autoescape)
+* [Block Elements](#block)
+ * [Paragraphs and Line Breaks](#p)
+ * [Headers](#header)
+ * [Blockquotes](#blockquote)
+ * [Lists](#list)
+ * [Code Blocks](#precode)
+ * [Horizontal Rules](#hr)
+* [Span Elements](#span)
+ * [Links](#link)
+ * [Emphasis](#em)
+ * [Code](#code)
+ * [Images](#img)
+* [Miscellaneous](#misc)
+ * [Backslash Escapes](#backslash)
+ * [Automatic Links](#autolink)
+
+
+**Note:** This document is itself written using Markdown; you
+can [see the source for it by adding '.text' to the URL][src].
+
+ [src]: /projects/markdown/syntax.text
+
+* * *
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+
+Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
+[Grutatext] [5], and [EtText] [6] -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.
+
+ [1]: http://docutils.sourceforge.net/mirror/setext.html
+ [2]: http://www.aaronsw.com/2002/atx/
+ [3]: http://textism.com/tools/textile/
+ [4]: http://docutils.sourceforge.net/rst.html
+ [5]: http://www.triptico.com/software/grutatxt.html
+ [6]: http://ettext.taint.org/doc/
+
+To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like \*emphasis\*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.
+
+
+
+<h3 id="html">Inline HTML</h3>
+
+Markdown's syntax is intended for one purpose: to be used as a
+format for *writing* for the web.
+
+Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is *not* to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a *publishing* format; Markdown is a *writing*
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.
+
+For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.
+
+The only restrictions are that block-level HTML elements -- e.g. `<div>`,
+`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) `<p>` tags around HTML block-level tags.
+
+For example, to add an HTML table to a Markdown article:
+
+ This is a regular paragraph.
+
+ <table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+ </table>
+
+ This is another regular paragraph.
+
+Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
+HTML block.
+
+Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
+link or image syntax, go right ahead.
+
+Unlike block-level HTML tags, Markdown syntax *is* processed within
+span-level tags.
+
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+In HTML, there are two characters that demand special treatment: `<`
+and `&`. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. `<`, and
+`&`.
+
+Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '`AT&T`'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+you need to encode the URL as:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+in your anchor tag `href` attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.
+
+Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into `&`.
+
+So, if you want to include a copyright symbol in your article, you can write:
+
+ ©
+
+and Markdown will leave it alone. But if you write:
+
+ AT&T
+
+Markdown will translate it to:
+
+ AT&T
+
+Similarly, because Markdown supports [inline HTML](#html), if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:
+
+ 4 < 5
+
+Markdown will translate it to:
+
+ 4 < 5
+
+However, inside Markdown code spans and blocks, angle brackets and
+ampersands are *always* encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single `<`
+and `&` in your example code needs to be escaped.)
+
+
+* * *
+
+
+<h2 id="block">Block Elements</h2>
+
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.
+
+The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a `<br />` tag.
+
+When you *do* want to insert a `<br />` break tag using Markdown, you
+end a line with two or more spaces, then type return.
+
+Yes, this takes a tad more effort to create a `<br />`, but a simplistic
+"every line break is a `<br />`" rule wouldn't work for Markdown.
+Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
+work best -- and look better -- when you format them with hard breaks.
+
+ [bq]: #blockquote
+ [l]: #list
+
+
+
+<h3 id="header">Headers</h3>
+
+Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
+
+Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:
+
+ This is an H1
+ =============
+
+ This is an H2
+ -------------
+
+Any number of underlining `=`'s or `-`'s will work.
+
+Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:
+
+ # This is an H1
+
+ ## This is an H2
+
+ ###### This is an H6
+
+Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :
+
+ # This is an H1 #
+
+ ## This is an H2 ##
+
+ ### This is an H3 ######
+
+
+<h3 id="blockquote">Blockquotes</h3>
+
+Markdown uses email-style `>` characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a `>` before every line:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+ >
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ > id sem consectetuer libero luctus adipiscing.
+
+Markdown allows you to be lazy and only put the `>` before the first
+line of a hard-wrapped paragraph:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of `>`:
+
+ > This is the first level of quoting.
+ >
+ > > This is nested blockquote.
+ >
+ > Back to the first level.
+
+Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:
+
+ > ## This is a header.
+ >
+ > 1. This is the first list item.
+ > 2. This is the second list item.
+ >
+ > Here's some example code:
+ >
+ > return shell_exec("echo $input | $markdown_script");
+
+Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.
+
+
+<h3 id="list">Lists</h3>
+
+Markdown supports ordered (numbered) and unordered (bulleted) lists.
+
+Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:
+
+ * Red
+ * Green
+ * Blue
+
+is equivalent to:
+
+ + Red
+ + Green
+ + Blue
+
+and:
+
+ - Red
+ - Green
+ - Blue
+
+Ordered lists use numbers followed by periods:
+
+ 1. Bird
+ 2. McHale
+ 3. Parish
+
+It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:
+
+ <ol>
+ <li>Bird</li>
+ <li>McHale</li>
+ <li>Parish</li>
+ </ol>
+
+If you instead wrote the list in Markdown like this:
+
+ 1. Bird
+ 1. McHale
+ 1. Parish
+
+or even:
+
+ 3. Bird
+ 1. McHale
+ 8. Parish
+
+you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.
+
+If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.
+
+List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.
+
+To make lists look nice, you can wrap items with hanging indents:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+But if you want to be lazy, you don't have to:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+If list items are separated by blank lines, Markdown will wrap the
+items in `<p>` tags in the HTML output. For example, this input:
+
+ * Bird
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li>Bird</li>
+ <li>Magic</li>
+ </ul>
+
+But this:
+
+ * Bird
+
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li><p>Bird</p></li>
+ <li><p>Magic</p></li>
+ </ul>
+
+List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:
+
+ 1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ 2. Suspendisse id sem consectetuer libero luctus adipiscing.
+
+It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:
+
+ * This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+ only required to indent the first line. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+ * Another item in the same list.
+
+To put a blockquote within a list item, the blockquote's `>`
+delimiters need to be indented:
+
+ * A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+
+To put a code block within a list item, the code block needs
+to be indented *twice* -- 8 spaces or two tabs:
+
+ * A list item with a code block:
+
+ <code goes here>
+
+
+It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:
+
+ 1986. What a great season.
+
+In other words, a *number-period-space* sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:
+
+ 1986\. What a great season.
+
+
+
+<h3 id="precode">Code Blocks</h3>
+
+Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both `<pre>` and `<code>` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:
+
+ This is a normal paragraph:
+
+ This is a code block.
+
+Markdown will generate:
+
+ <p>This is a normal paragraph:</p>
+
+ <pre><code>This is a code block.
+ </code></pre>
+
+One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:
+
+ Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+
+will turn into:
+
+ <p>Here is an example of AppleScript:</p>
+
+ <pre><code>tell application "Foo"
+ beep
+ end tell
+ </code></pre>
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+ <div class="footer">
+ © 2004 Foo Corporation
+ </div>
+
+will turn into:
+
+ <pre><code><div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+ </code></pre>
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+
+
+<h3 id="hr">Horizontal Rules</h3>
+
+You can produce a horizontal rule tag (`<hr />`) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:
+
+ * * *
+
+ ***
+
+ *****
+
+ - - -
+
+ ---------------------------------------
+
+ _ _ _
+
+
+* * *
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+ This is [an example](http://example.com/ "Title") inline link.
+
+ [This link](http://example.net/) has no title attribute.
+
+Will produce:
+
+ <p>This is <a href="http://example.com/" title="Title">
+ an example</a> inline link.</p>
+
+ <p><a href="http://example.net/">This link</a> has no
+ title attribute.</p>
+
+If you're referring to a local resource on the same server, you can
+use relative paths:
+
+ See my [About](/about/) page for details.
+
+Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:
+
+ This is [an example][id] reference-style link.
+
+You can optionally use a space to separate the sets of brackets:
+
+ This is [an example] [id] reference-style link.
+
+Then, anywhere in the document, you define your link label like this,
+on a line by itself:
+
+ [id]: http://example.com/ "Optional Title Here"
+
+That is:
+
+* Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);
+* followed by a colon;
+* followed by one or more spaces (or tabs);
+* followed by the URL for the link;
+* optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.
+
+The link URL may, optionally, be surrounded by angle brackets:
+
+ [id]: <http://example.com/> "Optional Title Here"
+
+You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:
+
+ [id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+
+Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.
+
+Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
+
+ [link text][a]
+ [link text][A]
+
+are equivalent.
+
+The *implicit link name* shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:
+
+ [Google][]
+
+And then define the link:
+
+ [Google]: http://google.com/
+
+Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:
+
+ Visit [Daring Fireball][] for more information.
+
+And then define the link:
+
+ [Daring Fireball]: http://daringfireball.net/
+
+Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.
+
+Here's an example of reference links in action:
+
+ I get 10 times more traffic from [Google] [1] than from
+ [Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Using the implicit link name shortcut, you could instead write:
+
+ I get 10 times more traffic from [Google][] than from
+ [Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+
+Both of the above examples will produce the following HTML output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from
+ <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+ or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+For comparison, here is the same paragraph written using
+Markdown's inline link style:
+
+ I get 10 times more traffic from [Google](http://google.com/ "Google")
+ than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+ [MSN](http://search.msn.com/ "MSN Search").
+
+The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.
+
+With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.
+
+
+<h3 id="em">Emphasis</h3>
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`<strong>` tag. E.g., this input:
+
+ *single asterisks*
+
+ _single underscores_
+
+ **double asterisks**
+
+ __double underscores__
+
+will produce:
+
+ <em>single asterisks</em>
+
+ <em>single underscores</em>
+
+ <strong>double asterisks</strong>
+
+ <strong>double underscores</strong>
+
+You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.
+
+Emphasis can be used in the middle of a word:
+
+ un*fucking*believable
+
+But if you surround an `*` or `_` with spaces, it'll be treated as a
+literal asterisk or underscore.
+
+To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:
+
+ \*this text is surrounded by literal asterisks\*
+
+
+
+<h3 id="code">Code</h3>
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+ Use the `printf()` function.
+
+will produce:
+
+ <p>Use the <code>printf()</code> function.</p>
+
+To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:
+
+ ``There is a literal backtick (`) here.``
+
+which will produce this:
+
+ <p><code>There is a literal backtick (`) here.</code></p>
+
+The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:
+
+ A single backtick in a code span: `` ` ``
+
+ A backtick-delimited string in a code span: `` `foo` ``
+
+will produce:
+
+ <p>A single backtick in a code span: <code>`</code></p>
+
+ <p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:
+
+ Please don't use any `<blink>` tags.
+
+into:
+
+ <p>Please don't use any <code><blink></code> tags.</p>
+
+You can write this:
+
+ `—` is the decimal-encoded equivalent of `—`.
+
+to produce:
+
+ <p><code>&#8212;</code> is the decimal-encoded
+ equivalent of <code>&mdash;</code>.</p>
+
+
+
+<h3 id="img">Images</h3>
+
+Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.
+
+Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: *inline* and *reference*.
+
+Inline image syntax looks like this:
+
+ 
+
+ 
+
+That is:
+
+* An exclamation mark: `!`;
+* followed by a set of square brackets, containing the `alt`
+ attribute text for the image;
+* followed by a set of parentheses, containing the URL or path to
+ the image, and an optional `title` attribute enclosed in double
+ or single quotes.
+
+Reference-style image syntax looks like this:
+
+ ![Alt text][id]
+
+Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:
+
+ [id]: url/to/image "Optional title attribute"
+
+As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML `<img>` tags.
+
+
+* * *
+
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+
+ <http://example.com/>
+
+Markdown will turn this into:
+
+ <a href="http://example.com/">http://example.com/</a>
+
+Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:
+
+ <address@example.com>
+
+into something like this:
+
+ <a href="mailto:addre
+ ss@example.co
+ m">address@exa
+ mple.com</a>
+
+which will render in a browser as a clickable link to "address@example.com".
+
+(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)
+
+
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML `<em>` tag), you can backslashes
+before the asterisks, like this:
+
+ \*literal asterisks\*
+
+Markdown provides backslash escapes for the following characters:
+
+ \ backslash
+ ` backtick
+ * asterisk
+ _ underscore
+ {} curly braces
+ [] square brackets
+ () parentheses
+ # hash mark
+ + plus sign
+ - minus sign (hyphen)
+ . dot
+ ! exclamation mark
+
-<p>This is the body with footnotes<sup id="fnref:foo"><a class="footnote-ref" href="#fn:foo" rel="footnote">1</a></sup> \r
-that have named<sup id="fnref:bar"><a class="footnote-ref" href="#fn:bar" rel="footnote">2</a></sup> markers and \r
-oddly<sup id="fnref:56"><a class="footnote-ref" href="#fn:56" rel="footnote">3</a></sup> numbered<sup id="fnref:99"><a class="footnote-ref" href="#fn:99" rel="footnote">4</a></sup> markers.</p>\r
-<div class="footnote">\r
-<hr />\r
-<ol>\r
-<li id="fn:foo">\r
-<p>Footnote marked <code>foo</code>. <a class="footnote-backref" href="#fnref:foo" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:bar">\r
-<p>This one is marked <em>bar</em>. <a class="footnote-backref" href="#fnref:bar" rev="footnote" title="Jump back to footnote 2 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:56">\r
-<p>A <strong>numbered</strong> footnote. <a class="footnote-backref" href="#fnref:56" rev="footnote" title="Jump back to footnote 3 in the text">↩</a></p>\r
-</li>\r
-<li id="fn:99">\r
-<p>The last one. <a class="footnote-backref" href="#fnref:99" rev="footnote" title="Jump back to footnote 4 in the text">↩</a></p>\r
-</li>\r
-</ol>\r
+<p>This is the body with footnotes<sup id="fnref:foo"><a class="footnote-ref" href="#fn:foo" rel="footnote">1</a></sup>
+that have named<sup id="fnref:bar"><a class="footnote-ref" href="#fn:bar" rel="footnote">2</a></sup> markers and
+oddly<sup id="fnref:56"><a class="footnote-ref" href="#fn:56" rel="footnote">3</a></sup> numbered<sup id="fnref:99"><a class="footnote-ref" href="#fn:99" rel="footnote">4</a></sup> markers.</p>
+<div class="footnote">
+<hr />
+<ol>
+<li id="fn:foo">
+<p>Footnote marked <code>foo</code>. <a class="footnote-backref" href="#fnref:foo" rev="footnote" title="Jump back to footnote 1 in the text">↩</a></p>
+</li>
+<li id="fn:bar">
+<p>This one is marked <em>bar</em>. <a class="footnote-backref" href="#fnref:bar" rev="footnote" title="Jump back to footnote 2 in the text">↩</a></p>
+</li>
+<li id="fn:56">
+<p>A <strong>numbered</strong> footnote. <a class="footnote-backref" href="#fnref:56" rev="footnote" title="Jump back to footnote 3 in the text">↩</a></p>
+</li>
+<li id="fn:99">
+<p>The last one. <a class="footnote-backref" href="#fnref:99" rev="footnote" title="Jump back to footnote 4 in the text">↩</a></p>
+</li>
+</ol>
</div>
\ No newline at end of file
-This is the body with footnotes[^foo] \r
-that have named[^bar] markers and \r
-oddly[^56] numbered[^99] markers.\r
-\r
-[^foo]: Footnote marked ``foo``.\r
-[^bar]: This one is marked *bar*.\r
-[^56]: A __numbered__ footnote.\r
-[^99]: The last one.\r
-\r
+This is the body with footnotes[^foo]
+that have named[^bar] markers and
+oddly[^56] numbered[^99] markers.
+
+[^foo]: Footnote marked ``foo``.
+[^bar]: This one is marked *bar*.
+[^56]: A __numbered__ footnote.
+[^99]: The last one.
+
-<div>\r
-<p><em>foo</em></p>\r
-</div>\r
-<div class="baz">\r
-<p><em>bar</em></p>\r
-</div>\r
-<div>\r
-<p><em>blah</em></p>\r
-</div>\r
-<div name="Example">\r
-<p>The text of the <code>Example</code> element.</p>\r
-<div name="DefaultBlockMode">\r
-<p>This text gets wrapped in <code>p</code> tags.</p>\r
-</div>\r
-<p>The tail of the <code>DefaultBlockMode</code> subelement.</p>\r
-<p name="DefaultSpanMode">\r
-This text <em>is not</em> wrapped in additional <code>p</code> tags.</p>\r
-<p>The tail of the <code>DefaultSpanMode</code> subelement.</p>\r
-<div name="SpanModeOverride">\r
-This <code>div</code> block is not wrapped in paragraph tags.\r
-Note: Subelements are not required to have tail text.</div>\r
-<p name="BlockModeOverride">\r
-<p>This <code>p</code> block <em>is</em> foolishly wrapped in further paragraph tags.</p>\r
-</p>\r
-<p>The tail of the <code>BlockModeOverride</code> subelement.</p>\r
-<div name="RawHtml">\r
-Raw html blocks may also be nested.\r
-</div>\r
-\r
-</div>\r
-<p>This text is after the markdown in html.</p>
\ No newline at end of file
+<div>
+<p><em>foo</em></p>
+</div>
+<div class="baz">
+<p><em>bar</em></p>
+</div>
+<div>
+<p><em>blah</em></p>
+</div>
+<div name="Example">
+<p>The text of the <code>Example</code> element.</p>
+<div name="DefaultBlockMode">
+<p>This text gets wrapped in <code>p</code> tags.</p>
+</div>
+<p>The tail of the <code>DefaultBlockMode</code> subelement.</p>
+<p name="DefaultSpanMode">
+This text <em>is not</em> wrapped in additional <code>p</code> tags.</p>
+<p>The tail of the <code>DefaultSpanMode</code> subelement.</p>
+<div name="SpanModeOverride">
+This <code>div</code> block is not wrapped in paragraph tags.
+Note: Subelements are not required to have tail text.</div>
+<p name="BlockModeOverride">
+<p>This <code>p</code> block <em>is</em> foolishly wrapped in further paragraph tags.</p>
+</p>
+<p>The tail of the <code>BlockModeOverride</code> subelement.</p>
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+
+
+
+</div>
+<p>This text is after the markdown in html.</p>
+<div name="issue308">
+<p><span>1</span>
+<span>2</span></p>
+</div>
\ No newline at end of file
-<div markdown="1">_foo_</div>\r
-\r
-<div markdown=1 class="baz">\r
-_bar_\r
-</div>\r
-\r
-<div markdown>\r
-\r
-_blah_\r
-\r
-</div>\r
- \r
-<div markdown="1" name="Example">\r
-\r
-The text of the `Example` element.\r
-\r
-<div markdown="1" name="DefaultBlockMode">\r
-This text gets wrapped in `p` tags.\r
-</div>\r
-\r
-The tail of the `DefaultBlockMode` subelement.\r
-\r
-<p markdown="1" name="DefaultSpanMode">\r
-This text *is not* wrapped in additional `p` tags.\r
-</p>\r
-\r
-The tail of the `DefaultSpanMode` subelement.\r
-\r
-<div markdown="span" name="SpanModeOverride">\r
-This `div` block is not wrapped in paragraph tags.\r
-Note: Subelements are not required to have tail text.\r
-</div>\r
-\r
-<p markdown="block" name="BlockModeOverride">\r
-This `p` block *is* foolishly wrapped in further paragraph tags.\r
-</p>\r
-\r
-The tail of the `BlockModeOverride` subelement.\r
-\r
-<div name="RawHtml">\r
-Raw html blocks may also be nested.\r
-</div>\r
-\r
-</div>\r
-\r
-This text is after the markdown in html.\r
+<div markdown="1">_foo_</div>
+
+<div markdown=1 class="baz">
+_bar_
+</div>
+
+<div markdown>
+
+_blah_
+
+</div>
+
+<div markdown="1" name="Example">
+
+The text of the `Example` element.
+
+<div markdown="1" name="DefaultBlockMode">
+This text gets wrapped in `p` tags.
+</div>
+
+The tail of the `DefaultBlockMode` subelement.
+
+<p markdown="1" name="DefaultSpanMode">
+This text *is not* wrapped in additional `p` tags.
+</p>
+
+The tail of the `DefaultSpanMode` subelement.
+
+<div markdown="span" name="SpanModeOverride">
+This `div` block is not wrapped in paragraph tags.
+Note: Subelements are not required to have tail text.
+</div>
+
+<p markdown="block" name="BlockModeOverride">
+This `p` block *is* foolishly wrapped in further paragraph tags.
+</p>
+
+The tail of the `BlockModeOverride` subelement.
+
+<div name="RawHtml">
+Raw html blocks may also be nested.
+</div>
+
+</div>
+
+This text is after the markdown in html.
+
+<div markdown="1" name="issue308">
+
+<span>1</span>
+<span>2</span>
+
+</div>
-<p>Some text</p>\r
-<dl>\r
-<dt>term1</dt>\r
-<dd>Def1</dd>\r
-<dt>term2-1</dt>\r
-<dt>term2-2</dt>\r
-<dd>Def2-1</dd>\r
-<dd>Def2-2</dd>\r
-</dl>\r
-<p>more text</p>\r
-<dl>\r
-<dt>term <em>3</em></dt>\r
-<dd>\r
-<p>def 3\r
-line <strong>2</strong> of def 3</p>\r
-<p>paragraph 2 of def 3.</p>\r
-</dd>\r
-<dd>\r
-<p>def 3-2</p>\r
-<pre><code># A code block in a def\r
-</code></pre>\r
-<blockquote>\r
-<p>a blockquote</p>\r
-</blockquote>\r
-<ul>\r
-<li>\r
-<p>a list item</p>\r
-</li>\r
-<li>\r
-<blockquote>\r
-<p>blockquote in list</p>\r
-</blockquote>\r
-</li>\r
-</ul>\r
-</dd>\r
-</dl>\r
-<p>and more text.</p>\r
-<dl>\r
-<dt>term 4</dt>\r
-<dd>def4\r
- line 2 of def 4</dd>\r
-</dl>\r
+<p>Some text</p>
+<dl>
+<dt>term1</dt>
+<dd>Def1</dd>
+<dt>term2-1</dt>
+<dt>term2-2</dt>
+<dd>Def2-1</dd>
+<dd>Def2-2</dd>
+</dl>
+<p>more text</p>
+<dl>
+<dt>term <em>3</em></dt>
+<dd>
+<p>def 3
+line <strong>2</strong> of def 3</p>
+<p>paragraph 2 of def 3.</p>
+</dd>
+<dd>
+<p>def 3-2</p>
+<pre><code># A code block in a def
+</code></pre>
+<blockquote>
+<p>a blockquote</p>
+</blockquote>
+<ul>
+<li>
+<p>a list item</p>
+</li>
+<li>
+<blockquote>
+<p>blockquote in list</p>
+</blockquote>
+</li>
+</ul>
+</dd>
+</dl>
+<p>and more text.</p>
+<dl>
+<dt>term 4</dt>
+<dd>def4
+ line 2 of def 4</dd>
+</dl>
<p>final text.</p>
\ No newline at end of file
-Some text\r
-\r
-term1\r
-: Def1\r
-\r
-term2-1\r
-term2-2\r
-: Def2-1\r
-: Def2-2\r
-\r
-more text\r
-\r
-term *3*\r
-: def 3\r
- line __2__ of def 3\r
-\r
- paragraph 2 of def 3.\r
-\r
-: def 3-2\r
-\r
- # A code block in a def\r
-\r
- > a blockquote\r
-\r
- * a list item\r
-\r
- * > blockquote in list\r
-\r
-and more text.\r
-\r
-term 4\r
-: def4\r
- line 2 of def 4\r
-\r
-final text.\r
+Some text
+
+term1
+: Def1
+
+term2-1
+term2-2
+: Def2-1
+: Def2-2
+
+more text
+
+term *3*
+: def 3
+ line __2__ of def 3
+
+ paragraph 2 of def 3.
+
+: def 3-2
+
+ # A code block in a def
+
+ > a blockquote
+
+ * a list item
+
+ * > blockquote in list
+
+and more text.
+
+term 4
+: def4
+ line 2 of def 4
+
+final text.
-<h2>Table Tests</h2>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>First Header</th>\r
-<th>Second Header</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>First Header</th>\r
-<th>Second Header</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>Item</th>\r
-<th align="right">Value</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td>Computer</td>\r
-<td align="right">$1600</td>\r
-</tr>\r
-<tr>\r
-<td>Phone</td>\r
-<td align="right">$12</td>\r
-</tr>\r
-<tr>\r
-<td>Pipe</td>\r
-<td align="right">$1</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>Function name</th>\r
-<th>Description</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td><code>help()</code></td>\r
-<td>Display the help window.</td>\r
-</tr>\r
-<tr>\r
-<td><code>destroy()</code></td>\r
-<td><strong>Destroy your computer!</strong></td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th align="left">foo</th>\r
-<th align="center">bar</th>\r
-<th align="right">baz</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td align="left"></td>\r
-<td align="center">Q</td>\r
-<td align="right"></td>\r
-</tr>\r
-<tr>\r
-<td align="left">W</td>\r
-<td align="center"></td>\r
-<td align="right">W</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>foo</th>\r
-<th>bar</th>\r
-<th>baz</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td></td>\r
-<td>Q</td>\r
-<td></td>\r
-</tr>\r
-<tr>\r
-<td>W</td>\r
-<td></td>\r
-<td>W</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<p>Three spaces in front of a table:</p>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>First Header</th>\r
-<th>Second Header</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<table>\r
-<thead>\r
-<tr>\r
-<th>First Header</th>\r
-<th>Second Header</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-</tbody>\r
-</table>\r
-<p>Four spaces is a code block:</p>\r
-<pre><code>First Header | Second Header\r
------------- | -------------\r
-Content Cell | Content Cell\r
-Content Cell | Content Cell\r
+<h2>Table Tests</h2>
+<table>
+<thead>
+<tr>
+<th>First Header</th>
+<th>Second Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+</tbody>
+</table>
+<table>
+<thead>
+<tr>
+<th>First Header</th>
+<th>Second Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+</tbody>
+</table>
+<table>
+<thead>
+<tr>
+<th>Item</th>
+<th align="right">Value</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Computer</td>
+<td align="right">$1600</td>
+</tr>
+<tr>
+<td>Phone</td>
+<td align="right">$12</td>
+</tr>
+<tr>
+<td>Pipe</td>
+<td align="right">$1</td>
+</tr>
+</tbody>
+</table>
+<table>
+<thead>
+<tr>
+<th>Function name</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><code>help()</code></td>
+<td>Display the help window.</td>
+</tr>
+<tr>
+<td><code>destroy()</code></td>
+<td><strong>Destroy your computer!</strong></td>
+</tr>
+</tbody>
+</table>
+<table>
+<thead>
+<tr>
+<th align="left">foo</th>
+<th align="center">bar</th>
+<th align="right">baz</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="left"></td>
+<td align="center">Q</td>
+<td align="right"></td>
+</tr>
+<tr>
+<td align="left">W</td>
+<td align="center"></td>
+<td align="right">W</td>
+</tr>
+</tbody>
+</table>
+<table>
+<thead>
+<tr>
+<th>foo</th>
+<th>bar</th>
+<th>baz</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td></td>
+<td>Q</td>
+<td></td>
+</tr>
+<tr>
+<td>W</td>
+<td></td>
+<td>W</td>
+</tr>
+</tbody>
+</table>
+<p>Three spaces in front of a table:</p>
+<table>
+<thead>
+<tr>
+<th>First Header</th>
+<th>Second Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+</tbody>
+</table>
+<table>
+<thead>
+<tr>
+<th>First Header</th>
+<th>Second Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+<tr>
+<td>Content Cell</td>
+<td>Content Cell</td>
+</tr>
+</tbody>
+</table>
+<p>Four spaces is a code block:</p>
+<pre><code>First Header | Second Header
+------------ | -------------
+Content Cell | Content Cell
+Content Cell | Content Cell
</code></pre>
\ No newline at end of file
-Table Tests\r
------------\r
-\r
-First Header | Second Header\r
-------------- | -------------\r
-Content Cell | Content Cell\r
-Content Cell | Content Cell\r
-\r
-| First Header | Second Header |\r
-| ------------- | ------------- |\r
-| Content Cell | Content Cell |\r
-| Content Cell | Content Cell |\r
-\r
-| Item | Value |\r
-| :-------- | -----:|\r
-| Computer | $1600 |\r
-| Phone | $12 |\r
-| Pipe | $1 |\r
-\r
-| Function name | Description |\r
-| ------------- | ------------------------------ |\r
-| `help()` | Display the help window. |\r
-| `destroy()` | **Destroy your computer!** |\r
-\r
-|foo|bar|baz|\r
-|:--|:-:|--:|\r
-| | Q | |\r
-|W | | W|\r
-\r
-foo|bar|baz\r
----|---|---\r
- | Q |\r
- W | | W\r
-\r
-Three spaces in front of a table:\r
-\r
- First Header | Second Header\r
- ------------ | -------------\r
- Content Cell | Content Cell\r
- Content Cell | Content Cell\r
-\r
- | First Header | Second Header |\r
- | ------------ | ------------- |\r
- | Content Cell | Content Cell |\r
- | Content Cell | Content Cell |\r
-\r
-Four spaces is a code block:\r
- \r
- First Header | Second Header\r
- ------------ | -------------\r
- Content Cell | Content Cell\r
- Content Cell | Content Cell\r
+Table Tests
+-----------
+
+First Header | Second Header
+------------- | -------------
+Content Cell | Content Cell
+Content Cell | Content Cell
+
+| First Header | Second Header |
+| ------------- | ------------- |
+| Content Cell | Content Cell |
+| Content Cell | Content Cell |
+
+| Item | Value |
+| :-------- | -----:|
+| Computer | $1600 |
+| Phone | $12 |
+| Pipe | $1 |
+
+| Function name | Description |
+| ------------- | ------------------------------ |
+| `help()` | Display the help window. |
+| `destroy()` | **Destroy your computer!** |
+
+|foo|bar|baz|
+|:--|:-:|--:|
+| | Q | |
+|W | | W|
+
+foo|bar|baz
+---|---|---
+ | Q |
+ W | | W
+
+Three spaces in front of a table:
+
+ First Header | Second Header
+ ------------ | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
+
+ | First Header | Second Header |
+ | ------------ | ------------- |
+ | Content Cell | Content Cell |
+ | Content Cell | Content Cell |
+
+Four spaces is a code block:
+
+ First Header | Second Header
+ ------------ | -------------
+ Content Cell | Content Cell
+ Content Cell | Content Cell
-<table>\r
-<thead>\r
-<tr>\r
-<th>First Header</th>\r
-<th>Second Header</th>\r
-</tr>\r
-</thead>\r
-<tbody>\r
-<tr>\r
-<td class="foo bar" title="Some title!">Content Cell</td>\r
-<td>Content Cell</td>\r
-</tr>\r
-<tr>\r
-<td>Content Cell</td>\r
-<td class="foo bar" title="Some title!">Content Cell</td>\r
-</tr>\r
-</tbody>\r
+<table>
+<thead>
+<tr>
+<th>First Header</th>
+<th>Second Header</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="foo bar" title="Some title!">Content Cell</td>
+<td>Content Cell</td>
+</tr>
+<tr>
+<td>Content Cell</td>
+<td class="foo bar" title="Some title!">Content Cell</td>
+</tr>
+</tbody>
</table>
\ No newline at end of file
-First Header | Second Header\r
------------------------------------------------------- | -------------\r
-Content Cell{: class="foo bar" title="Some title!" } | Content Cell\r
-Content Cell | Content Cell{: class="foo bar" title="Some title!" }\r
+First Header | Second Header
+------------------------------------------------------ | -------------
+Content Cell{: class="foo bar" title="Some title!" } | Content Cell
+Content Cell | Content Cell{: class="foo bar" title="Some title!" }
-[DEFAULT]\r
-extensions=extra\r
-\r
-[loose_def_list]\r
-extensions=def_list\r
-\r
-[simple_def-lists]\r
-extensions=def_list\r
-\r
-[abbr]\r
-extensions=abbr\r
-\r
-[footnotes]\r
-extensions=footnotes\r
-\r
-[tables]\r
-extensions=tables\r
-\r
-[tables_and_attr_list]\r
-extensions=tables,attr_list\r
+DEFAULT:
+ extensions:
+ - markdown.extensions.extra
+
+loose_def_list:
+ extensions:
+ - markdown.extensions.def_list
+
+simple_def-lists:
+ extensions:
+ - markdown.extensions.def_list
+
+abbr:
+ extensions:
+ - markdown.extensions.abbr
+
+footnotes:
+ extensions:
+ - markdown.extensions.footnotes
+
+tables:
+ extensions:
+ - markdown.extensions.tables
+
+tables_and_attr_list:
+ extensions:
+ - markdown.extensions.tables
+ - markdown.extensions.attr_list
+
+extra_config:
+ extensions:
+ - markdown.extensions.extra
+ extension_configs:
+ markdown.extensions.extra:
+ markdown.extensions.footnotes:
+ PLACE_MARKER: ~~~placemarker~~~
-<p>index 0000000..6e956a9</p>\r
-<pre><code>--- /dev/null\r
-+++ b/test/data/stripped_text/mike-30-lili\r
-@@ -0,0 +1,27 @@\r
-+Summary:\r
-+ drift_mod.py | 1 +\r
-+ 1 files changed, 1 insertions(+), 0 deletions(-)\r
-+\r
-+commit da4bfb04debdd994683740878d09988b2641513d\r
-+Author: Mike Dirolf <mike@dirolf.com>\r
-+Date: Tue Jan 17 13:42:28 2012 -0500\r
-+\r
-+```\r
-+minor: just wanted to push something.\r
-+```\r
-+\r
-+diff --git a/drift_mod.py b/drift_mod.py\r
-+index 34dfba6..8a88a69 100644\r
-+\r
-+```\r
-+--- a/drift_mod.py\r
-++++ b/drift_mod.py\r
-+@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('\r
-+ '|\+ .*'\r
-+ '|- .*'\r
-+ ')$')\r
-++\r
-+ def wrap_context_diffs(message_text):\r
-+ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,\r
-+ CONTEXT_DIFF_LINE_PATTERN,\r
-+```\r
+<p>index 0000000..6e956a9</p>
+<pre><code>--- /dev/null
++++ b/test/data/stripped_text/mike-30-lili
+@@ -0,0 +1,27 @@
++Summary:
++ drift_mod.py | 1 +
++ 1 files changed, 1 insertions(+), 0 deletions(-)
++
++commit da4bfb04debdd994683740878d09988b2641513d
++Author: Mike Dirolf <mike@dirolf.com>
++Date: Tue Jan 17 13:42:28 2012 -0500
++
++```
++minor: just wanted to push something.
++```
++
++diff --git a/drift_mod.py b/drift_mod.py
++index 34dfba6..8a88a69 100644
++
++```
++--- a/drift_mod.py
+++++ b/drift_mod.py
++@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('
++ '|\+ .*'
++ '|- .*'
++ ')$')
+++
++ def wrap_context_diffs(message_text):
++ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,
++ CONTEXT_DIFF_LINE_PATTERN,
++```
</code></pre>
\ No newline at end of file
-index 0000000..6e956a9\r
-\r
-```\r
---- /dev/null\r
-+++ b/test/data/stripped_text/mike-30-lili\r
-@@ -0,0 +1,27 @@\r
-+Summary:\r
-+ drift_mod.py | 1 +\r
-+ 1 files changed, 1 insertions(+), 0 deletions(-)\r
-+\r
-+commit da4bfb04debdd994683740878d09988b2641513d\r
-+Author: Mike Dirolf <mike@dirolf.com>\r
-+Date: Tue Jan 17 13:42:28 2012 -0500\r
-+\r
-+```\r
-+minor: just wanted to push something.\r
-+```\r
-+\r
-+diff --git a/drift_mod.py b/drift_mod.py\r
-+index 34dfba6..8a88a69 100644\r
-+\r
-+```\r
-+--- a/drift_mod.py\r
-++++ b/drift_mod.py\r
-+@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('\r
-+ '|\+ .*'\r
-+ '|- .*'\r
-+ ')$')\r
-++\r
-+ def wrap_context_diffs(message_text):\r
-+ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,\r
-+ CONTEXT_DIFF_LINE_PATTERN,\r
-+```\r
-```\r
+index 0000000..6e956a9
+
+```
+--- /dev/null
++++ b/test/data/stripped_text/mike-30-lili
+@@ -0,0 +1,27 @@
++Summary:
++ drift_mod.py | 1 +
++ 1 files changed, 1 insertions(+), 0 deletions(-)
++
++commit da4bfb04debdd994683740878d09988b2641513d
++Author: Mike Dirolf <mike@dirolf.com>
++Date: Tue Jan 17 13:42:28 2012 -0500
++
++```
++minor: just wanted to push something.
++```
++
++diff --git a/drift_mod.py b/drift_mod.py
++index 34dfba6..8a88a69 100644
++
++```
++--- a/drift_mod.py
+++++ b/drift_mod.py
++@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('
++ '|\+ .*'
++ '|- .*'
++ ')$')
+++
++ def wrap_context_diffs(message_text):
++ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,
++ CONTEXT_DIFF_LINE_PATTERN,
++```
+```
-<p>index 0000000..6e956a9</p>\r
-<pre><code class="diff">--- /dev/null\r
-+++ b/test/data/stripped_text/mike-30-lili\r
-@@ -0,0 +1,27 @@\r
-+Summary:\r
-+ drift_mod.py | 1 +\r
-+ 1 files changed, 1 insertions(+), 0 deletions(-)\r
-+\r
-+commit da4bfb04debdd994683740878d09988b2641513d\r
-+Author: Mike Dirolf <mike@dirolf.com>\r
-+Date: Tue Jan 17 13:42:28 2012 -0500\r
-+\r
-+```\r
-+minor: just wanted to push something.\r
-+```\r
-+\r
-+diff --git a/drift_mod.py b/drift_mod.py\r
-+index 34dfba6..8a88a69 100644\r
-+\r
-+```\r
-+--- a/drift_mod.py\r
-++++ b/drift_mod.py\r
-+@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('\r
-+ '|\+ .*'\r
-+ '|- .*'\r
-+ ')$')\r
-++\r
-+ def wrap_context_diffs(message_text):\r
-+ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,\r
-+ CONTEXT_DIFF_LINE_PATTERN,\r
-+```\r
-</code></pre>\r
-\r
-<p>Test support for foo+bar lexer names.</p>\r
-<pre><code class="html+jinja"><title>{% block title %}{% endblock %}</title>\r
-<ul>\r
-{% for user in users %}\r
- <li><a href="{{ user.url }}">{{ user.username }}</a></li>\r
-{% endfor %}\r
-</ul>\r
+<p>index 0000000..6e956a9</p>
+<pre><code class="diff">--- /dev/null
++++ b/test/data/stripped_text/mike-30-lili
+@@ -0,0 +1,27 @@
++Summary:
++ drift_mod.py | 1 +
++ 1 files changed, 1 insertions(+), 0 deletions(-)
++
++commit da4bfb04debdd994683740878d09988b2641513d
++Author: Mike Dirolf <mike@dirolf.com>
++Date: Tue Jan 17 13:42:28 2012 -0500
++
++```
++minor: just wanted to push something.
++```
++
++diff --git a/drift_mod.py b/drift_mod.py
++index 34dfba6..8a88a69 100644
++
++```
++--- a/drift_mod.py
+++++ b/drift_mod.py
++@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('
++ '|\+ .*'
++ '|- .*'
++ ')$')
+++
++ def wrap_context_diffs(message_text):
++ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,
++ CONTEXT_DIFF_LINE_PATTERN,
++```
+</code></pre>
+
+<p>Test support for foo+bar lexer names.</p>
+<pre><code class="html+jinja"><title>{% block title %}{% endblock %}</title>
+<ul>
+{% for user in users %}
+ <li><a href="{{ user.url }}">{{ user.username }}</a></li>
+{% endfor %}
+</ul>
</code></pre>
\ No newline at end of file
-index 0000000..6e956a9\r
-\r
-```diff\r
---- /dev/null\r
-+++ b/test/data/stripped_text/mike-30-lili\r
-@@ -0,0 +1,27 @@\r
-+Summary:\r
-+ drift_mod.py | 1 +\r
-+ 1 files changed, 1 insertions(+), 0 deletions(-)\r
-+\r
-+commit da4bfb04debdd994683740878d09988b2641513d\r
-+Author: Mike Dirolf <mike@dirolf.com>\r
-+Date: Tue Jan 17 13:42:28 2012 -0500\r
-+\r
-+```\r
-+minor: just wanted to push something.\r
-+```\r
-+\r
-+diff --git a/drift_mod.py b/drift_mod.py\r
-+index 34dfba6..8a88a69 100644\r
-+\r
-+```\r
-+--- a/drift_mod.py\r
-++++ b/drift_mod.py\r
-+@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('\r
-+ '|\+ .*'\r
-+ '|- .*'\r
-+ ')$')\r
-++\r
-+ def wrap_context_diffs(message_text):\r
-+ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,\r
-+ CONTEXT_DIFF_LINE_PATTERN,\r
-+```\r
-```\r
-\r
-Test support for foo+bar lexer names.\r
-\r
-```html+jinja\r
-<title>{% block title %}{% endblock %}</title>\r
-<ul>\r
-{% for user in users %}\r
- <li><a href="{{ user.url }}">{{ user.username }}</a></li>\r
-{% endfor %}\r
-</ul>\r
-```\r
+index 0000000..6e956a9
+
+```diff
+--- /dev/null
++++ b/test/data/stripped_text/mike-30-lili
+@@ -0,0 +1,27 @@
++Summary:
++ drift_mod.py | 1 +
++ 1 files changed, 1 insertions(+), 0 deletions(-)
++
++commit da4bfb04debdd994683740878d09988b2641513d
++Author: Mike Dirolf <mike@dirolf.com>
++Date: Tue Jan 17 13:42:28 2012 -0500
++
++```
++minor: just wanted to push something.
++```
++
++diff --git a/drift_mod.py b/drift_mod.py
++index 34dfba6..8a88a69 100644
++
++```
++--- a/drift_mod.py
+++++ b/drift_mod.py
++@@ -281,6 +281,7 @@ CONTEXT_DIFF_LINE_PATTERN = re.compile(r'^('
++ '|\+ .*'
++ '|- .*'
++ ')$')
+++
++ def wrap_context_diffs(message_text):
++ return _wrap_diff(CONTEXT_DIFF_HEADER_PATTERN,
++ CONTEXT_DIFF_LINE_PATTERN,
++```
+```
+
+Test support for foo+bar lexer names.
+
+```html+jinja
+<title>{% block title %}{% endblock %}</title>
+<ul>
+{% for user in users %}
+ <li><a href="{{ user.url }}">{{ user.username }}</a></li>
+{% endfor %}
+</ul>
+```
-Foo\r
+Foo
{: #bar}
\ No newline at end of file
-<ol>\r
-<li>Ordered</li>\r
-<li>List</li>\r
-</ol>\r
-<ul>\r
-<li>Unordered</li>\r
-<li>List</li>\r
-</ul>\r
-<ol>\r
-<li>Ordered again</li>\r
-</ol>\r
-<p>Paragraph\r
-* not a list item</p>\r
-<ol>\r
-<li>More ordered\r
-* not a list item</li>\r
-</ol>\r
-<ul>\r
-<li>Unordered again\r
-1. not a list item</li>\r
+<ol>
+<li>Ordered</li>
+<li>List</li>
+</ol>
+<ul>
+<li>Unordered</li>
+<li>List</li>
+</ul>
+<ol>
+<li>Ordered again</li>
+</ol>
+<p>Paragraph
+* not a list item</p>
+<ol>
+<li>More ordered
+* not a list item</li>
+</ol>
+<ul>
+<li>Unordered again
+1. not a list item</li>
</ul>
\ No newline at end of file
-1. Ordered\r
-2. List\r
-\r
-* Unordered\r
-* List\r
-\r
-1. Ordered again\r
-\r
-Paragraph\r
-* not a list item\r
-\r
-1. More ordered\r
-* not a list item\r
-\r
-* Unordered again\r
-1. not a list item\r
+1. Ordered
+2. List
+
+* Unordered
+* List
+
+1. Ordered again
+
+Paragraph
+* not a list item
+
+1. More ordered
+* not a list item
+
+* Unordered again
+1. not a list item
-<p>1440–80’s<br />\r
-1440–‘80s<br />\r
-1440—‘80s<br />\r
-1960s<br />\r
-1960’s<br />\r
-one two ‘60s<br />\r
-‘60s</p>\r
-<p>It’s fun. What’s fun?<br />\r
-“Isn’t this fun”? — she said…<br />\r
-“‘Quoted’ words in a larger quote.”<br />\r
-‘Quoted “words” in a larger quote.’<br />\r
-“quoted” text and <strong>bold “quoted” text</strong><br />\r
-‘quoted’ text and <strong>bold ‘quoted’ text</strong><br />\r
-em-dashes (—) and ellipes (…)<br />\r
-“<a href="http://example.com">Link</a>” — she said.</p>\r
-<hr />\r
-<p>Escaped -- ndash<br />\r
-'Escaped' "quotes"<br />\r
-Escaped ellipsis...</p>\r
-<p>‘Escaped "quotes" in real ones’<br />\r
-'“Real” quotes in escaped ones'</p>
\ No newline at end of file
+<p>’.
+1440–80’s<br />
+1440–‘80s<br />
+1440—‘80s<br />
+1960s<br />
+1960’s<br />
+one two ‘60s<br />
+‘60s</p>
+<p>It’s fun. What’s fun?<br />
+“Isn’t this fun”? — she said…<br />
+“‘Quoted’ words in a larger quote.”<br />
+‘Quoted “words” in a larger quote.’<br />
+“quoted” text and <strong>bold “quoted” text</strong><br />
+‘quoted’ text and <strong>bold ‘quoted’ text</strong><br />
+em-dashes (—) and ellipes (…)<br />
+“<a href="http://example.com">Link</a>” — she said.</p>
+<p>“Ellipsis within quotes…”</p>
+<p>Кавычки-«ёлочки»<br />
+Anführungszeichen-»Chevrons«</p>
+<hr />
+<p>Escaped -- ndash<br />
+'Escaped' "quotes"<br />
+Escaped ellipsis...</p>
+<p>‘Escaped "quotes" in real ones’<br />
+'“Real” quotes in escaped ones'</p>
+<p>Skip <code>"code" -- --- 'spans' ...</code>.</p>
+<pre><code>Also skip "code" 'blocks'
+foo -- bar --- baz ...
+</code></pre>
\ No newline at end of file
-1440--80's \r
-1440--'80s \r
-1440---'80s \r
-1960s \r
-1960's \r
-one two '60s \r
-'60s\r
-\r
-It's fun. What's fun? \r
-"Isn't this fun"? --- she said... \r
-"'Quoted' words in a larger quote." \r
-'Quoted "words" in a larger quote.' \r
-"quoted" text and **bold "quoted" text** \r
-'quoted' text and **bold 'quoted' text** \r
-em-dashes (---) and ellipes (...) \r
-"[Link](http://example.com)" --- she said.\r
-\r
---- -- ---\r
-\r
-Escaped \-- ndash \r
-\'Escaped\' \"quotes\" \r
-Escaped ellipsis\...\r
-\r
-'Escaped \"quotes\" in real ones' \r
-\'"Real" quotes in escaped ones\'
\ No newline at end of file
+'.
+1440--80's
+1440--'80s
+1440---'80s
+1960s
+1960's
+one two '60s
+'60s
+
+It's fun. What's fun?
+"Isn't this fun"? --- she said...
+"'Quoted' words in a larger quote."
+'Quoted "words" in a larger quote.'
+"quoted" text and **bold "quoted" text**
+'quoted' text and **bold 'quoted' text**
+em-dashes (---) and ellipes (...)
+"[Link](http://example.com)" --- she said.
+
+"Ellipsis within quotes..."
+
+Кавычки-<<ёлочки>>
+Anführungszeichen->>Chevrons<<
+
+--- -- ---
+
+Escaped \-- ndash
+\'Escaped\' \"quotes\"
+Escaped ellipsis\...
+
+'Escaped \"quotes\" in real ones'
+\'"Real" quotes in escaped ones\'
+
+Skip `"code" -- --- 'spans' ...`.
+
+ Also skip "code" 'blocks'
+ foo -- bar --- baz ...
-[attr_list]\r
-extensions=attr_list,def_list\r
-\r
-[codehilite]\r
-extensions=codehilite\r
-# This passes or not based on version of pygments.\r
-skip=1\r
-\r
-[toc]\r
-extensions=toc\r
-\r
-[toc_invalid]\r
-extensions=toc\r
-\r
-[toc_out_of_order]\r
-extensions=toc\r
-\r
-[toc_nested]\r
-extensions=toc(permalink=1)\r
-\r
-[toc_nested2]\r
-extensions=toc(permalink=[link])\r
-\r
-[wikilinks]\r
-extensions=wikilinks\r
-\r
-[fenced_code]\r
-extensions=fenced_code\r
-\r
-[github_flavored]\r
-extensions=fenced_code\r
-\r
-[sane_lists]\r
-extensions=sane_lists\r
-\r
-[nl2br_w_attr_list]\r
-extensions=nl2br,attr_list\r
-\r
-[admonition]\r
-extensions=admonition\r
-\r
-[smarty]\r
-extensions=smarty\r
+attr_list:
+ extensions:
+ - markdown.extensions.attr_list
+ - markdown.extensions.def_list
+ - markdown.extensions.smarty
+
+codehilite:
+ extensions:
+ - markdown.extensions.codehilite
+ # This passes or not based on version of pygments.
+ skip: True
+
+toc:
+ extensions:
+ - markdown.extensions.toc
+
+toc_invalid:
+ extensions:
+ - markdown.extensions.toc
+
+toc_out_of_order:
+ extensions:
+ - markdown.extensions.toc
+
+toc_nested:
+ extensions:
+ - markdown.extensions.toc
+ extension_configs:
+ markdown.extensions.toc:
+ permalink: True
+
+toc_nested2:
+ extensions:
+ - markdown.extensions.toc
+ extension_configs:
+ markdown.extensions.toc:
+ permalink: "[link]"
+
+wikilinks:
+ extensions:
+ - markdown.extensions.wikilinks
+
+fenced_code:
+ extensions:
+ - markdown.extensions.fenced_code
+
+github_flavored:
+ extensions:
+ - markdown.extensions.fenced_code
+
+sane_lists:
+ extensions:
+ - markdown.extensions.sane_lists
+
+nl2br_w_attr_list:
+ extensions:
+ - markdown.extensions.nl2br
+ - markdown.extensions.attr_list
+
+admonition:
+ extensions:
+ - markdown.extensions.admonition
+
+smarty:
+ extensions:
+ - markdown.extensions.smarty
+ extension_configs:
+ markdown.extensions.smarty:
+ smart_angled_quotes: True
-<div class="toc">\r
-<ul>\r
-<li><a href="#overview">Overview</a><ul>\r
-<li><a href="#philosophy">Philosophy</a></li>\r
-<li><a href="#inline-html">Inline HTML</a></li>\r
-<li><a href="#automatic-escaping-for-special-characters">Automatic Escaping for Special Characters</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#block-elements">Block Elements</a><ul>\r
-<li><a href="#paragraphs-and-line-breaks">Paragraphs and Line Breaks</a></li>\r
-<li><a href="#headers">Headers</a></li>\r
-<li><a href="#blockquotes">Blockquotes</a></li>\r
-<li><a href="#lists">Lists</a></li>\r
-<li><a href="#code-blocks">Code Blocks</a></li>\r
-<li><a href="#horizontal-rules">Horizontal Rules</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#span-elements">Span Elements</a><ul>\r
-<li><a href="#links">Links</a></li>\r
-<li><a href="#emphasis">Emphasis</a></li>\r
-<li><a href="#code">Code</a></li>\r
-<li><a href="#images">Images</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#miscellaneous">Miscellaneous</a><ul>\r
-<li><a href="#automatic-links">Automatic Links</a></li>\r
-<li><a href="#backslash-escapes">Backslash Escapes</a></li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</div>\r
-<h1 id="overview">Overview</h1>\r
-<h2 id="philosophy">Philosophy</h2>\r
-<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\r
-<p>Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,\r
-<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.</p>\r
-<p>To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like *emphasis*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.</p>\r
-<h2 id="inline-html">Inline HTML</h2>\r
-<p>Markdown's syntax is intended for one purpose: to be used as a\r
-format for <em>writing</em> for the web.</p>\r
-<p>Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is <em>not</em> to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.</p>\r
-<p>For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.</p>\r
-<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,\r
-<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>\r
-<p>For example, to add an HTML table to a Markdown article:</p>\r
-<pre><code>This is a regular paragraph.\r
-\r
-<table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
-</table>\r
-\r
-This is another regular paragraph.\r
-</code></pre>\r
-<p>Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an\r
-HTML block.</p>\r
-<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's\r
-link or image syntax, go right ahead.</p>\r
-<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within\r
-span-level tags.</p>\r
-<h2 id="automatic-escaping-for-special-characters">Automatic Escaping for Special Characters</h2>\r
-<p>In HTML, there are two characters that demand special treatment: <code><</code>\r
-and <code>&</code>. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. <code>&lt;</code>, and\r
-<code>&amp;</code>.</p>\r
-<p>Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:</p>\r
-<pre><code>http://images.google.com/images?num=30&q=larry+bird\r
-</code></pre>\r
-<p>you need to encode the URL as:</p>\r
-<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird\r
-</code></pre>\r
-<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.</p>\r
-<p>Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into <code>&amp;</code>.</p>\r
-<p>So, if you want to include a copyright symbol in your article, you can write:</p>\r
-<pre><code>&copy;\r
-</code></pre>\r
-<p>and Markdown will leave it alone. But if you write:</p>\r
-<pre><code>AT&T\r
-</code></pre>\r
-<p>Markdown will translate it to:</p>\r
-<pre><code>AT&amp;T\r
-</code></pre>\r
-<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:</p>\r
-<pre><code>4 < 5\r
-</code></pre>\r
-<p>Markdown will translate it to:</p>\r
-<pre><code>4 &lt; 5\r
-</code></pre>\r
-<p>However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are <em>always</em> encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single <code><</code>\r
-and <code>&</code> in your example code needs to be escaped.)</p>\r
-<hr />\r
-<h1 id="block-elements">Block Elements</h1>\r
-<h2 id="paragraphs-and-line-breaks">Paragraphs and Line Breaks</h2>\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-<p>The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a <code><br /></code> tag.</p>\r
-<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you\r
-end a line with two or more spaces, then type return.</p>\r
-<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic\r
-"every line break is a <code><br /></code>" rule wouldn't work for Markdown.\r
-Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>\r
-work best -- and look better -- when you format them with hard breaks.</p>\r
-<h2 id="headers">Headers</h2>\r
-<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>\r
-<p>Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:</p>\r
-<pre><code>This is an H1\r
-=============\r
-\r
-This is an H2\r
--------------\r
-</code></pre>\r
-<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>\r
-<p>Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:</p>\r
-<pre><code># This is an H1\r
-\r
-## This is an H2\r
-\r
-###### This is an H6\r
-</code></pre>\r
-<p>Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :</p>\r
-<pre><code># This is an H1 #\r
-\r
-## This is an H2 ##\r
-\r
-### This is an H3 ######\r
-</code></pre>\r
-<h2 id="blockquotes">Blockquotes</h2>\r
-<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a <code>></code> before every line:</p>\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-> \r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-> id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>Markdown allows you to be lazy and only put the <code>></code> before the first\r
-line of a hard-wrapped paragraph:</p>\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of <code>></code>:</p>\r
-<pre><code>> This is the first level of quoting.\r
->\r
-> > This is nested blockquote.\r
->\r
-> Back to the first level.\r
-</code></pre>\r
-<p>Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:</p>\r
-<pre><code>> ## This is a header.\r
-> \r
-> 1. This is the first list item.\r
-> 2. This is the second list item.\r
-> \r
-> Here's some example code:\r
-> \r
-> return shell_exec("echo $input | $markdown_script");\r
-</code></pre>\r
-<p>Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.</p>\r
-<h2 id="lists">Lists</h2>\r
-<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>\r
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:</p>\r
-<pre><code>* Red\r
-* Green\r
-* Blue\r
-</code></pre>\r
-<p>is equivalent to:</p>\r
-<pre><code>+ Red\r
-+ Green\r
-+ Blue\r
-</code></pre>\r
-<p>and:</p>\r
-<pre><code>- Red\r
-- Green\r
-- Blue\r
-</code></pre>\r
-<p>Ordered lists use numbers followed by periods:</p>\r
-<pre><code>1. Bird\r
-2. McHale\r
-3. Parish\r
-</code></pre>\r
-<p>It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:</p>\r
-<pre><code><ol>\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-</code></pre>\r
-<p>If you instead wrote the list in Markdown like this:</p>\r
-<pre><code>1. Bird\r
-1. McHale\r
-1. Parish\r
-</code></pre>\r
-<p>or even:</p>\r
-<pre><code>3. Bird\r
-1. McHale\r
-8. Parish\r
-</code></pre>\r
-<p>you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.</p>\r
-<p>If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.</p>\r
-<p>List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.</p>\r
-<p>To make lists look nice, you can wrap items with hanging indents:</p>\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>But if you want to be lazy, you don't have to:</p>\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
-Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
-viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
-Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>If list items are separated by blank lines, Markdown will wrap the\r
-items in <code><p></code> tags in the HTML output. For example, this input:</p>\r
-<pre><code>* Bird\r
-* Magic\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><ul>\r
-<li>Bird</li>\r
-<li>Magic</li>\r
-</ul>\r
-</code></pre>\r
-<p>But this:</p>\r
-<pre><code>* Bird\r
-\r
-* Magic\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><ul>\r
-<li><p>Bird</p></li>\r
-<li><p>Magic</p></li>\r
-</ul>\r
-</code></pre>\r
-<p>List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:</p>\r
-<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
-2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-<p>It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:</p>\r
-<pre><code>* This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
-only required to indent the first line. Lorem ipsum dolor\r
-sit amet, consectetuer adipiscing elit.\r
-\r
-* Another item in the same list.\r
-</code></pre>\r
-<p>To put a blockquote within a list item, the blockquote's <code>></code>\r
-delimiters need to be indented:</p>\r
-<pre><code>* A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-</code></pre>\r
-<p>To put a code block within a list item, the code block needs\r
-to be indented <em>twice</em> -- 8 spaces or two tabs:</p>\r
-<pre><code>* A list item with a code block:\r
-\r
- <code goes here>\r
-</code></pre>\r
-<p>It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:</p>\r
-<pre><code>1986. What a great season.\r
-</code></pre>\r
-<p>In other words, a <em>number-period-space</em> sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:</p>\r
-<pre><code>1986\. What a great season.\r
-</code></pre>\r
-<h2 id="code-blocks">Code Blocks</h2>\r
-<p>Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both <code><pre></code> and <code><code></code> tags.</p>\r
-<p>To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:</p>\r
-<pre><code>This is a normal paragraph:\r
-\r
- This is a code block.\r
-</code></pre>\r
-<p>Markdown will generate:</p>\r
-<pre><code><p>This is a normal paragraph:</p>\r
-\r
-<pre><code>This is a code block.\r
-</code></pre>\r
-</code></pre>\r
-<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:</p>\r
-<pre><code>Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><p>Here is an example of AppleScript:</p>\r
-\r
-<pre><code>tell application "Foo"\r
- beep\r
-end tell\r
-</code></pre>\r
-</code></pre>\r
-<p>A code block continues until it reaches a line that is not indented\r
-(or the end of the article).</p>\r
-<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:</p>\r
-<pre><code> <div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
-</code></pre>\r
-<p>will turn into:</p>\r
-<pre><code><pre><code>&lt;div class="footer"&gt;\r
- &amp;copy; 2004 Foo Corporation\r
-&lt;/div&gt;\r
-</code></pre>\r
-</code></pre>\r
-<p>Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.</p>\r
-<h2 id="horizontal-rules">Horizontal Rules</h2>\r
-<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:</p>\r
-<pre><code>* * *\r
-\r
-***\r
-\r
-*****\r
-\r
-- - -\r
-\r
----------------------------------------\r
-\r
-_ _ _\r
-</code></pre>\r
-<hr />\r
-<h1 id="span-elements">Span Elements</h1>\r
-<h2 id="links">Links</h2>\r
-<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>\r
-<p>In both styles, the link text is delimited by [square brackets].</p>\r
-<p>To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an <em>optional</em>\r
-title for the link, surrounded in quotes. For example:</p>\r
-<pre><code>This is [an example](http://example.com/ "Title") inline link.\r
-\r
-[This link](http://example.net/) has no title attribute.\r
-</code></pre>\r
-<p>Will produce:</p>\r
-<pre><code><p>This is <a href="http://example.com/" title="Title">\r
-an example</a> inline link.</p>\r
-\r
-<p><a href="http://example.net/">This link</a> has no\r
-title attribute.</p>\r
-</code></pre>\r
-<p>If you're referring to a local resource on the same server, you can\r
-use relative paths:</p>\r
-<pre><code>See my [About](/about/) page for details.\r
-</code></pre>\r
-<p>Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:</p>\r
-<pre><code>This is [an example][id] reference-style link.\r
-</code></pre>\r
-<p>You can optionally use a space to separate the sets of brackets:</p>\r
-<pre><code>This is [an example] [id] reference-style link.\r
-</code></pre>\r
-<p>Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:</p>\r
-<pre><code>[id]: http://example.com/ "Optional Title Here"\r
-</code></pre>\r
-<p>That is:</p>\r
-<ul>\r
-<li>Square brackets containing the link identifier (optionally\r
- indented from the left margin using up to three spaces);</li>\r
-<li>followed by a colon;</li>\r
-<li>followed by one or more spaces (or tabs);</li>\r
-<li>followed by the URL for the link;</li>\r
-<li>optionally followed by a title attribute for the link, enclosed\r
- in double or single quotes.</li>\r
-</ul>\r
-<p>The link URL may, optionally, be surrounded by angle brackets:</p>\r
-<pre><code>[id]: <http://example.com/> "Optional Title Here"\r
-</code></pre>\r
-<p>You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:</p>\r
-<pre><code>[id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-</code></pre>\r
-<p>Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.</p>\r
-<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>\r
-<pre><code>[link text][a]\r
-[link text][A]\r
-</code></pre>\r
-<p>are equivalent.</p>\r
-<p>The <em>implicit link name</em> shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:</p>\r
-<pre><code>[Google][]\r
-</code></pre>\r
-<p>And then define the link:</p>\r
-<pre><code>[Google]: http://google.com/\r
-</code></pre>\r
-<p>Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:</p>\r
-<pre><code>Visit [Daring Fireball][] for more information.\r
-</code></pre>\r
-<p>And then define the link:</p>\r
-<pre><code>[Daring Fireball]: http://daringfireball.net/\r
-</code></pre>\r
-<p>Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.</p>\r
-<p>Here's an example of reference links in action:</p>\r
-<pre><code>I get 10 times more traffic from [Google] [1] than from\r
-[Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Using the implicit link name shortcut, you could instead write:</p>\r
-<pre><code>I get 10 times more traffic from [Google][] than from\r
-[Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-<p>Both of the above examples will produce the following HTML output:</p>\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from\r
-<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
-or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-<p>For comparison, here is the same paragraph written using\r
-Markdown's inline link style:</p>\r
-<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")\r
-than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
-[MSN](http://search.msn.com/ "MSN Search").\r
-</code></pre>\r
-<p>The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.</p>\r
-<p>With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.</p>\r
-<h2 id="emphasis">Emphasis</h2>\r
-<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of\r
-emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an\r
-HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML\r
-<code><strong></code> tag. E.g., this input:</p>\r
-<pre><code>*single asterisks*\r
-\r
-_single underscores_\r
-\r
-**double asterisks**\r
-\r
-__double underscores__\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><em>single asterisks</em>\r
-\r
-<em>single underscores</em>\r
-\r
-<strong>double asterisks</strong>\r
-\r
-<strong>double underscores</strong>\r
-</code></pre>\r
-<p>You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.</p>\r
-<p>Emphasis can be used in the middle of a word:</p>\r
-<pre><code>un*fucking*believable\r
-</code></pre>\r
-<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a\r
-literal asterisk or underscore.</p>\r
-<p>To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:</p>\r
-<pre><code>\*this text is surrounded by literal asterisks\*\r
-</code></pre>\r
-<h2 id="code">Code</h2>\r
-<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:</p>\r
-<pre><code>Use the `printf()` function.\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><p>Use the <code>printf()</code> function.</p>\r
-</code></pre>\r
-<p>To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:</p>\r
-<pre><code>``There is a literal backtick (`) here.``\r
-</code></pre>\r
-<p>which will produce this:</p>\r
-<pre><code><p><code>There is a literal backtick (`) here.</code></p>\r
-</code></pre>\r
-<p>The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:</p>\r
-<pre><code>A single backtick in a code span: `` ` ``\r
-\r
-A backtick-delimited string in a code span: `` `foo` ``\r
-</code></pre>\r
-<p>will produce:</p>\r
-<pre><code><p>A single backtick in a code span: <code>`</code></p>\r
-\r
-<p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-</code></pre>\r
-<p>With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:</p>\r
-<pre><code>Please don't use any `<blink>` tags.\r
-</code></pre>\r
-<p>into:</p>\r
-<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>\r
-</code></pre>\r
-<p>You can write this:</p>\r
-<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.\r
-</code></pre>\r
-<p>to produce:</p>\r
-<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded\r
-equivalent of <code>&amp;mdash;</code>.</p>\r
-</code></pre>\r
-<h2 id="images">Images</h2>\r
-<p>Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.</p>\r
-<p>Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>\r
-<p>Inline image syntax looks like this:</p>\r
-<pre><code>\r
-\r
-\r
-</code></pre>\r
-<p>That is:</p>\r
-<ul>\r
-<li>An exclamation mark: <code>!</code>;</li>\r
-<li>followed by a set of square brackets, containing the <code>alt</code>\r
- attribute text for the image;</li>\r
-<li>followed by a set of parentheses, containing the URL or path to\r
- the image, and an optional <code>title</code> attribute enclosed in double\r
- or single quotes.</li>\r
-</ul>\r
-<p>Reference-style image syntax looks like this:</p>\r
-<pre><code>![Alt text][id]\r
-</code></pre>\r
-<p>Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:</p>\r
-<pre><code>[id]: url/to/image "Optional title attribute"\r
-</code></pre>\r
-<p>As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML <code><img></code> tags.</p>\r
-<hr />\r
-<h1 id="miscellaneous">Miscellaneous</h1>\r
-<h2 id="automatic-links">Automatic Links</h2>\r
-<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>\r
-<pre><code><http://example.com/>\r
-</code></pre>\r
-<p>Markdown will turn this into:</p>\r
-<pre><code><a href="http://example.com/">http://example.com/</a>\r
-</code></pre>\r
-<p>Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:</p>\r
-<pre><code><address@example.com>\r
-</code></pre>\r
-<p>into something like this:</p>\r
-<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;\r
-&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;\r
-&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;\r
-&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>\r
-</code></pre>\r
-<p>which will render in a browser as a clickable link to "address@example.com".</p>\r
-<p>(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)</p>\r
-<h2 id="backslash-escapes">Backslash Escapes</h2>\r
-<p>Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes\r
-before the asterisks, like this:</p>\r
-<pre><code>\*literal asterisks\*\r
-</code></pre>\r
-<p>Markdown provides backslash escapes for the following characters:</p>\r
-<pre><code>\ backslash\r
-` backtick\r
-* asterisk\r
-_ underscore\r
-{} curly braces\r
-[] square brackets\r
-() parentheses\r
-# hash mark\r
-+ plus sign\r
-- minus sign (hyphen)\r
-. dot\r
-! exclamation mark\r
+<div class="toc">
+<ul>
+<li><a href="#overview">Overview</a><ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#inline-html">Inline HTML</a></li>
+<li><a href="#automatic-escaping-for-special-characters">Automatic Escaping for Special Characters</a></li>
+</ul>
+</li>
+<li><a href="#block-elements">Block Elements</a><ul>
+<li><a href="#paragraphs-and-line-breaks">Paragraphs and Line Breaks</a></li>
+<li><a href="#headers">Headers</a></li>
+<li><a href="#blockquotes">Blockquotes</a></li>
+<li><a href="#lists">Lists</a></li>
+<li><a href="#code-blocks">Code Blocks</a></li>
+<li><a href="#horizontal-rules">Horizontal Rules</a></li>
+</ul>
+</li>
+<li><a href="#span-elements">Span Elements</a><ul>
+<li><a href="#links">Links</a></li>
+<li><a href="#emphasis">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#images">Images</a></li>
+</ul>
+</li>
+<li><a href="#miscellaneous">Miscellaneous</a><ul>
+<li><a href="#automatic-links">Automatic Links</a></li>
+<li><a href="#backslash-escapes">Backslash Escapes</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<h1 id="overview">Overview</h1>
+<h2 id="philosophy">Philosophy</h2>
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+<h2 id="inline-html">Inline HTML</h2>
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,
+<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>
+<p>For example, to add an HTML table to a Markdown article:</p>
+<pre><code>This is a regular paragraph.
+
+<table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+</table>
+
+This is another regular paragraph.
+</code></pre>
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+<h2 id="automatic-escaping-for-special-characters">Automatic Escaping for Special Characters</h2>
+<p>In HTML, there are two characters that demand special treatment: <code><</code>
+and <code>&</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&lt;</code>, and
+<code>&amp;</code>.</p>
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+<pre><code>http://images.google.com/images?num=30&q=larry+bird
+</code></pre>
+<p>you need to encode the URL as:</p>
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;</code>.</p>
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+<pre><code>&copy;
+</code></pre>
+<p>and Markdown will leave it alone. But if you write:</p>
+<pre><code>AT&T
+</code></pre>
+<p>Markdown will translate it to:</p>
+<pre><code>AT&amp;T
+</code></pre>
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+<pre><code>4 < 5
+</code></pre>
+<p>Markdown will translate it to:</p>
+<pre><code>4 &lt; 5
+</code></pre>
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code><</code>
+and <code>&</code> in your example code needs to be escaped.)</p>
+<hr />
+<h1 id="block-elements">Block Elements</h1>
+<h2 id="paragraphs-and-line-breaks">Paragraphs and Line Breaks</h2>
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code><br /></code> tag.</p>
+<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic
+"every line break is a <code><br /></code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+<h2 id="headers">Headers</h2>
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+<h2 id="blockquotes">Blockquotes</h2>
+<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>></code> before every line:</p>
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>Markdown allows you to be lazy and only put the <code>></code> before the first
+line of a hard-wrapped paragraph:</p>
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>></code>:</p>
+<pre><code>> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+</code></pre>
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+<pre><code>> ## This is a header.
+>
+> 1. This is the first list item.
+> 2. This is the second list item.
+>
+> Here's some example code:
+>
+> return shell_exec("echo $input | $markdown_script");
+</code></pre>
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+<h2 id="lists">Lists</h2>
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+<p>is equivalent to:</p>
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+<p>and:</p>
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+<p>Ordered lists use numbers followed by periods:</p>
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+<pre><code><ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+</code></pre>
+<p>If you instead wrote the list in Markdown like this:</p>
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+<p>or even:</p>
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>But if you want to be lazy, you don't have to:</p>
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code><p></code> tags in the HTML output. For example, this input:</p>
+<pre><code>* Bird
+* Magic
+</code></pre>
+<p>will turn into:</p>
+<pre><code><ul>
+<li>Bird</li>
+<li>Magic</li>
+</ul>
+</code></pre>
+<p>But this:</p>
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+<p>will turn into:</p>
+<pre><code><ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
+</code></pre>
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:</p>
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+<p>To put a blockquote within a list item, the blockquote's <code>></code>
+delimiters need to be indented:</p>
+<pre><code>* A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+</code></pre>
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+<pre><code>* A list item with a code block:
+
+ <code goes here>
+</code></pre>
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+<pre><code>1986. What a great season.
+</code></pre>
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+<pre><code>1986\. What a great season.
+</code></pre>
+<h2 id="code-blocks">Code Blocks</h2>
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code><pre></code> and <code><code></code> tags.</p>
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+<p>Markdown will generate:</p>
+<pre><code><p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
+</code></pre>
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+<p>will turn into:</p>
+<pre><code><p>Here is an example of AppleScript:</p>
+
+<pre><code>tell application "Foo"
+ beep
+end tell
+</code></pre>
+</code></pre>
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+<pre><code> <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+</code></pre>
+<p>will turn into:</p>
+<pre><code><pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+&lt;/div&gt;
+</code></pre>
+</code></pre>
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+<h2 id="horizontal-rules">Horizontal Rules</h2>
+<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+<hr />
+<h1 id="span-elements">Span Elements</h1>
+<h2 id="links">Links</h2>
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+<p>In both styles, the link text is delimited by [square brackets].</p>
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+<p>Will produce:</p>
+<pre><code><p>This is <a href="http://example.com/" title="Title">
+an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no
+title attribute.</p>
+</code></pre>
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+<p>You can optionally use a space to separate the sets of brackets:</p>
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+<p>That is:</p>
+<ul>
+<li>Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.</li>
+</ul>
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+<pre><code>[id]: <http://example.com/> "Optional Title Here"
+</code></pre>
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+<p>are equivalent.</p>
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+<pre><code>[Google][]
+</code></pre>
+<p>And then define the link:</p>
+<pre><code>[Google]: http://google.com/
+</code></pre>
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+<p>And then define the link:</p>
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+<p>Here's an example of reference links in action:</p>
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Using the implicit link name shortcut, you could instead write:</p>
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+<p>Both of the above examples will produce the following HTML output:</p>
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from
+<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+</code></pre>
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+<h2 id="emphasis">Emphasis</h2>
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code><strong></code> tag. E.g., this input:</p>
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+<p>will produce:</p>
+<pre><code><em>single asterisks</em>
+
+<em>single underscores</em>
+
+<strong>double asterisks</strong>
+
+<strong>double underscores</strong>
+</code></pre>
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+<p>Emphasis can be used in the middle of a word:</p>
+<pre><code>un*fucking*believable
+</code></pre>
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+<h2 id="code">Code</h2>
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+<pre><code>Use the `printf()` function.
+</code></pre>
+<p>will produce:</p>
+<pre><code><p>Use the <code>printf()</code> function.</p>
+</code></pre>
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+<p>which will produce this:</p>
+<pre><code><p><code>There is a literal backtick (`) here.</code></p>
+</code></pre>
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+<p>will produce:</p>
+<pre><code><p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+</code></pre>
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+<pre><code>Please don't use any `<blink>` tags.
+</code></pre>
+<p>into:</p>
+<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+</code></pre>
+<p>You can write this:</p>
+<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+</code></pre>
+<p>to produce:</p>
+<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded
+equivalent of <code>&amp;mdash;</code>.</p>
+</code></pre>
+<h2 id="images">Images</h2>
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+<p>Inline image syntax looks like this:</p>
+<pre><code>
+
+
+</code></pre>
+<p>That is:</p>
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+ attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+ the image, and an optional <code>title</code> attribute enclosed in double
+ or single quotes.</li>
+</ul>
+<p>Reference-style image syntax looks like this:</p>
+<pre><code>![Alt text][id]
+</code></pre>
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code><img></code> tags.</p>
+<hr />
+<h1 id="miscellaneous">Miscellaneous</h1>
+<h2 id="automatic-links">Automatic Links</h2>
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+<pre><code><http://example.com/>
+</code></pre>
+<p>Markdown will turn this into:</p>
+<pre><code><a href="http://example.com/">http://example.com/</a>
+</code></pre>
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+<pre><code><address@example.com>
+</code></pre>
+<p>into something like this:</p>
+<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+</code></pre>
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+<h2 id="backslash-escapes">Backslash Escapes</h2>
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes
+before the asterisks, like this:</p>
+<pre><code>\*literal asterisks\*
+</code></pre>
+<p>Markdown provides backslash escapes for the following characters:</p>
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
</code></pre>
\ No newline at end of file
-\r
-[TOC]\r
-\r
-# Overview\r
-\r
-## Philosophy\r
-\r
-Markdown is intended to be as easy-to-read and easy-to-write as is feasible.\r
-\r
-Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],\r
-[Grutatext] [5], and [EtText] [6] -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.\r
-\r
- [1]: http://docutils.sourceforge.net/mirror/setext.html\r
- [2]: http://www.aaronsw.com/2002/atx/\r
- [3]: http://textism.com/tools/textile/\r
- [4]: http://docutils.sourceforge.net/rst.html\r
- [5]: http://www.triptico.com/software/grutatxt.html\r
- [6]: http://ettext.taint.org/doc/\r
-\r
-To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like \*emphasis\*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.\r
-\r
-\r
-\r
-## Inline HTML\r
-\r
-Markdown's syntax is intended for one purpose: to be used as a\r
-format for *writing* for the web.\r
-\r
-Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is *not* to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a *publishing* format; Markdown is a *writing*\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.\r
-\r
-For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.\r
-\r
-The only restrictions are that block-level HTML elements -- e.g. `<div>`,\r
-`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) `<p>` tags around HTML block-level tags.\r
-\r
-For example, to add an HTML table to a Markdown article:\r
-\r
- This is a regular paragraph.\r
-\r
- <table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
- </table>\r
-\r
- This is another regular paragraph.\r
-\r
-Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an\r
-HTML block.\r
-\r
-Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's\r
-link or image syntax, go right ahead.\r
-\r
-Unlike block-level HTML tags, Markdown syntax *is* processed within\r
-span-level tags.\r
-\r
-\r
-## Automatic Escaping for Special Characters\r
-\r
-In HTML, there are two characters that demand special treatment: `<`\r
-and `&`. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. `<`, and\r
-`&`.\r
-\r
-Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '`AT&T`'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:\r
-\r
- http://images.google.com/images?num=30&q=larry+bird\r
-\r
-you need to encode the URL as:\r
-\r
- http://images.google.com/images?num=30&q=larry+bird\r
-\r
-in your anchor tag `href` attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.\r
-\r
-Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into `&`.\r
-\r
-So, if you want to include a copyright symbol in your article, you can write:\r
-\r
- ©\r
-\r
-and Markdown will leave it alone. But if you write:\r
-\r
- AT&T\r
-\r
-Markdown will translate it to:\r
-\r
- AT&T\r
-\r
-Similarly, because Markdown supports [inline HTML](#html), if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:\r
-\r
- 4 < 5\r
-\r
-Markdown will translate it to:\r
-\r
- 4 < 5\r
-\r
-However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are *always* encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single `<`\r
-and `&` in your example code needs to be escaped.)\r
-\r
-\r
-* * *\r
-\r
-\r
-# Block Elements\r
-\r
-\r
-## Paragraphs and Line Breaks\r
-\r
-A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.\r
-\r
-The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a `<br />` tag.\r
-\r
-When you *do* want to insert a `<br />` break tag using Markdown, you\r
-end a line with two or more spaces, then type return.\r
-\r
-Yes, this takes a tad more effort to create a `<br />`, but a simplistic\r
-"every line break is a `<br />`" rule wouldn't work for Markdown.\r
-Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]\r
-work best -- and look better -- when you format them with hard breaks.\r
-\r
- [bq]: #blockquote\r
- [l]: #list\r
-\r
-\r
-\r
-## Headers\r
-\r
-Markdown supports two styles of headers, [Setext] [1] and [atx] [2].\r
-\r
-Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:\r
-\r
- This is an H1\r
- =============\r
-\r
- This is an H2\r
- -------------\r
-\r
-Any number of underlining `=`'s or `-`'s will work.\r
-\r
-Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:\r
-\r
- # This is an H1\r
-\r
- ## This is an H2\r
-\r
- ###### This is an H6\r
-\r
-Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :\r
-\r
- # This is an H1 #\r
-\r
- ## This is an H2 ##\r
-\r
- ### This is an H3 ######\r
-\r
-\r
-## Blockquotes\r
-\r
-Markdown uses email-style `>` characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a `>` before every line:\r
-\r
- > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
- > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
- > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
- > \r
- > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
- > id sem consectetuer libero luctus adipiscing.\r
-\r
-Markdown allows you to be lazy and only put the `>` before the first\r
-line of a hard-wrapped paragraph:\r
-\r
- > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
- consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
- > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
- id sem consectetuer libero luctus adipiscing.\r
-\r
-Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of `>`:\r
-\r
- > This is the first level of quoting.\r
- >\r
- > > This is nested blockquote.\r
- >\r
- > Back to the first level.\r
-\r
-Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:\r
-\r
- > ## This is a header.\r
- > \r
- > 1. This is the first list item.\r
- > 2. This is the second list item.\r
- > \r
- > Here's some example code:\r
- > \r
- > return shell_exec("echo $input | $markdown_script");\r
-\r
-Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.\r
-\r
-\r
-## Lists\r
-\r
-Markdown supports ordered (numbered) and unordered (bulleted) lists.\r
-\r
-Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:\r
-\r
- * Red\r
- * Green\r
- * Blue\r
-\r
-is equivalent to:\r
-\r
- + Red\r
- + Green\r
- + Blue\r
-\r
-and:\r
-\r
- - Red\r
- - Green\r
- - Blue\r
-\r
-Ordered lists use numbers followed by periods:\r
-\r
- 1. Bird\r
- 2. McHale\r
- 3. Parish\r
-\r
-It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:\r
-\r
- <ol>\r
- <li>Bird</li>\r
- <li>McHale</li>\r
- <li>Parish</li>\r
- </ol>\r
-\r
-If you instead wrote the list in Markdown like this:\r
-\r
- 1. Bird\r
- 1. McHale\r
- 1. Parish\r
-\r
-or even:\r
-\r
- 3. Bird\r
- 1. McHale\r
- 8. Parish\r
-\r
-you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.\r
-\r
-If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.\r
-\r
-List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.\r
-\r
-To make lists look nice, you can wrap items with hanging indents:\r
-\r
- * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
- * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-But if you want to be lazy, you don't have to:\r
-\r
- * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
- * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-If list items are separated by blank lines, Markdown will wrap the\r
-items in `<p>` tags in the HTML output. For example, this input:\r
-\r
- * Bird\r
- * Magic\r
-\r
-will turn into:\r
-\r
- <ul>\r
- <li>Bird</li>\r
- <li>Magic</li>\r
- </ul>\r
-\r
-But this:\r
-\r
- * Bird\r
-\r
- * Magic\r
-\r
-will turn into:\r
-\r
- <ul>\r
- <li><p>Bird</p></li>\r
- <li><p>Magic</p></li>\r
- </ul>\r
-\r
-List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:\r
-\r
- 1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
- 2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-\r
-It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:\r
-\r
- * This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
- only required to indent the first line. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit.\r
-\r
- * Another item in the same list.\r
-\r
-To put a blockquote within a list item, the blockquote's `>`\r
-delimiters need to be indented:\r
-\r
- * A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-\r
-To put a code block within a list item, the code block needs\r
-to be indented *twice* -- 8 spaces or two tabs:\r
-\r
- * A list item with a code block:\r
-\r
- <code goes here>\r
-\r
-\r
-It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:\r
-\r
- 1986. What a great season.\r
-\r
-In other words, a *number-period-space* sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:\r
-\r
- 1986\. What a great season.\r
-\r
-\r
-\r
-## Code Blocks\r
-\r
-Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both `<pre>` and `<code>` tags.\r
-\r
-To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:\r
-\r
- This is a normal paragraph:\r
-\r
- This is a code block.\r
-\r
-Markdown will generate:\r
-\r
- <p>This is a normal paragraph:</p>\r
-\r
- <pre><code>This is a code block.\r
- </code></pre>\r
-\r
-One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:\r
-\r
- Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-\r
-will turn into:\r
-\r
- <p>Here is an example of AppleScript:</p>\r
-\r
- <pre><code>tell application "Foo"\r
- beep\r
- end tell\r
- </code></pre>\r
-\r
-A code block continues until it reaches a line that is not indented\r
-(or the end of the article).\r
-\r
-Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:\r
-\r
- <div class="footer">\r
- © 2004 Foo Corporation\r
- </div>\r
-\r
-will turn into:\r
-\r
- <pre><code><div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
- </code></pre>\r
-\r
-Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.\r
-\r
-\r
-\r
-## Horizontal Rules\r
-\r
-You can produce a horizontal rule tag (`<hr />`) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:\r
-\r
- * * *\r
-\r
- ***\r
-\r
- *****\r
- \r
- - - -\r
-\r
- ---------------------------------------\r
-\r
- _ _ _\r
-\r
-\r
-* * *\r
-\r
-# Span Elements\r
-\r
-## Links\r
-\r
-Markdown supports two style of links: *inline* and *reference*.\r
-\r
-In both styles, the link text is delimited by [square brackets].\r
-\r
-To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an *optional*\r
-title for the link, surrounded in quotes. For example:\r
-\r
- This is [an example](http://example.com/ "Title") inline link.\r
-\r
- [This link](http://example.net/) has no title attribute.\r
-\r
-Will produce:\r
-\r
- <p>This is <a href="http://example.com/" title="Title">\r
- an example</a> inline link.</p>\r
-\r
- <p><a href="http://example.net/">This link</a> has no\r
- title attribute.</p>\r
-\r
-If you're referring to a local resource on the same server, you can\r
-use relative paths:\r
-\r
- See my [About](/about/) page for details. \r
-\r
-Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:\r
-\r
- This is [an example][id] reference-style link.\r
-\r
-You can optionally use a space to separate the sets of brackets:\r
-\r
- This is [an example] [id] reference-style link.\r
-\r
-Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:\r
-\r
- [id]: http://example.com/ "Optional Title Here"\r
-\r
-That is:\r
-\r
-* Square brackets containing the link identifier (optionally\r
- indented from the left margin using up to three spaces);\r
-* followed by a colon;\r
-* followed by one or more spaces (or tabs);\r
-* followed by the URL for the link;\r
-* optionally followed by a title attribute for the link, enclosed\r
- in double or single quotes.\r
-\r
-The link URL may, optionally, be surrounded by angle brackets:\r
-\r
- [id]: <http://example.com/> "Optional Title Here"\r
-\r
-You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:\r
-\r
- [id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-\r
-Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.\r
-\r
-Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:\r
-\r
- [link text][a]\r
- [link text][A]\r
-\r
-are equivalent.\r
-\r
-The *implicit link name* shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:\r
-\r
- [Google][]\r
-\r
-And then define the link:\r
-\r
- [Google]: http://google.com/\r
-\r
-Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:\r
-\r
- Visit [Daring Fireball][] for more information.\r
-\r
-And then define the link:\r
- \r
- [Daring Fireball]: http://daringfireball.net/\r
-\r
-Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.\r
-\r
-Here's an example of reference links in action:\r
-\r
- I get 10 times more traffic from [Google] [1] than from\r
- [Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-\r
-Using the implicit link name shortcut, you could instead write:\r
-\r
- I get 10 times more traffic from [Google][] than from\r
- [Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-\r
-Both of the above examples will produce the following HTML output:\r
-\r
- <p>I get 10 times more traffic from <a href="http://google.com/"\r
- title="Google">Google</a> than from\r
- <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
- or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-\r
-For comparison, here is the same paragraph written using\r
-Markdown's inline link style:\r
-\r
- I get 10 times more traffic from [Google](http://google.com/ "Google")\r
- than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
- [MSN](http://search.msn.com/ "MSN Search").\r
-\r
-The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.\r
-\r
-With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.\r
-\r
-\r
-## Emphasis\r
-\r
-Markdown treats asterisks (`*`) and underscores (`_`) as indicators of\r
-emphasis. Text wrapped with one `*` or `_` will be wrapped with an\r
-HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML\r
-`<strong>` tag. E.g., this input:\r
-\r
- *single asterisks*\r
-\r
- _single underscores_\r
-\r
- **double asterisks**\r
-\r
- __double underscores__\r
-\r
-will produce:\r
-\r
- <em>single asterisks</em>\r
-\r
- <em>single underscores</em>\r
-\r
- <strong>double asterisks</strong>\r
-\r
- <strong>double underscores</strong>\r
-\r
-You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.\r
-\r
-Emphasis can be used in the middle of a word:\r
-\r
- un*fucking*believable\r
-\r
-But if you surround an `*` or `_` with spaces, it'll be treated as a\r
-literal asterisk or underscore.\r
-\r
-To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:\r
-\r
- \*this text is surrounded by literal asterisks\*\r
-\r
-\r
-\r
-## Code\r
-\r
-To indicate a span of code, wrap it with backtick quotes (`` ` ``).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:\r
-\r
- Use the `printf()` function.\r
-\r
-will produce:\r
-\r
- <p>Use the <code>printf()</code> function.</p>\r
-\r
-To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:\r
-\r
- ``There is a literal backtick (`) here.``\r
-\r
-which will produce this:\r
-\r
- <p><code>There is a literal backtick (`) here.</code></p>\r
-\r
-The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:\r
-\r
- A single backtick in a code span: `` ` ``\r
- \r
- A backtick-delimited string in a code span: `` `foo` ``\r
-\r
-will produce:\r
-\r
- <p>A single backtick in a code span: <code>`</code></p>\r
- \r
- <p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-\r
-With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:\r
-\r
- Please don't use any `<blink>` tags.\r
-\r
-into:\r
-\r
- <p>Please don't use any <code><blink></code> tags.</p>\r
-\r
-You can write this:\r
-\r
- `—` is the decimal-encoded equivalent of `—`.\r
-\r
-to produce:\r
-\r
- <p><code>&#8212;</code> is the decimal-encoded\r
- equivalent of <code>&mdash;</code>.</p>\r
-\r
-\r
-\r
-## Images\r
-\r
-Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.\r
-\r
-Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: *inline* and *reference*.\r
-\r
-Inline image syntax looks like this:\r
-\r
- \r
-\r
- \r
-\r
-That is:\r
-\r
-* An exclamation mark: `!`;\r
-* followed by a set of square brackets, containing the `alt`\r
- attribute text for the image;\r
-* followed by a set of parentheses, containing the URL or path to\r
- the image, and an optional `title` attribute enclosed in double\r
- or single quotes.\r
-\r
-Reference-style image syntax looks like this:\r
-\r
- ![Alt text][id]\r
-\r
-Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:\r
-\r
- [id]: url/to/image "Optional title attribute"\r
-\r
-As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML `<img>` tags.\r
-\r
-\r
-* * *\r
-\r
-\r
-# Miscellaneous\r
-\r
-## Automatic Links\r
-\r
-Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:\r
-\r
- <http://example.com/>\r
- \r
-Markdown will turn this into:\r
-\r
- <a href="http://example.com/">http://example.com/</a>\r
-\r
-Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:\r
-\r
- <address@example.com>\r
-\r
-into something like this:\r
-\r
- <a href="mailto:addre\r
- ss@example.co\r
- m">address@exa\r
- mple.com</a>\r
-\r
-which will render in a browser as a clickable link to "address@example.com".\r
-\r
-(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)\r
-\r
-\r
-\r
-## Backslash Escapes\r
-\r
-Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML `<em>` tag), you can backslashes\r
-before the asterisks, like this:\r
-\r
- \*literal asterisks\*\r
-\r
-Markdown provides backslash escapes for the following characters:\r
-\r
- \ backslash\r
- ` backtick\r
- * asterisk\r
- _ underscore\r
- {} curly braces\r
- [] square brackets\r
- () parentheses\r
- # hash mark\r
- + plus sign\r
- - minus sign (hyphen)\r
- . dot\r
- ! exclamation mark\r
-\r
+
+[TOC]
+
+# Overview
+
+## Philosophy
+
+Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+
+Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
+[Grutatext] [5], and [EtText] [6] -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.
+
+ [1]: http://docutils.sourceforge.net/mirror/setext.html
+ [2]: http://www.aaronsw.com/2002/atx/
+ [3]: http://textism.com/tools/textile/
+ [4]: http://docutils.sourceforge.net/rst.html
+ [5]: http://www.triptico.com/software/grutatxt.html
+ [6]: http://ettext.taint.org/doc/
+
+To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like \*emphasis\*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.
+
+
+
+## Inline HTML
+
+Markdown's syntax is intended for one purpose: to be used as a
+format for *writing* for the web.
+
+Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is *not* to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a *publishing* format; Markdown is a *writing*
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.
+
+For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.
+
+The only restrictions are that block-level HTML elements -- e.g. `<div>`,
+`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) `<p>` tags around HTML block-level tags.
+
+For example, to add an HTML table to a Markdown article:
+
+ This is a regular paragraph.
+
+ <table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+ </table>
+
+ This is another regular paragraph.
+
+Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
+HTML block.
+
+Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
+link or image syntax, go right ahead.
+
+Unlike block-level HTML tags, Markdown syntax *is* processed within
+span-level tags.
+
+
+## Automatic Escaping for Special Characters
+
+In HTML, there are two characters that demand special treatment: `<`
+and `&`. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. `<`, and
+`&`.
+
+Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '`AT&T`'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+you need to encode the URL as:
+
+ http://images.google.com/images?num=30&q=larry+bird
+
+in your anchor tag `href` attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.
+
+Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into `&`.
+
+So, if you want to include a copyright symbol in your article, you can write:
+
+ ©
+
+and Markdown will leave it alone. But if you write:
+
+ AT&T
+
+Markdown will translate it to:
+
+ AT&T
+
+Similarly, because Markdown supports [inline HTML](#html), if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:
+
+ 4 < 5
+
+Markdown will translate it to:
+
+ 4 < 5
+
+However, inside Markdown code spans and blocks, angle brackets and
+ampersands are *always* encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single `<`
+and `&` in your example code needs to be escaped.)
+
+
+* * *
+
+
+# Block Elements
+
+
+## Paragraphs and Line Breaks
+
+A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.
+
+The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a `<br />` tag.
+
+When you *do* want to insert a `<br />` break tag using Markdown, you
+end a line with two or more spaces, then type return.
+
+Yes, this takes a tad more effort to create a `<br />`, but a simplistic
+"every line break is a `<br />`" rule wouldn't work for Markdown.
+Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
+work best -- and look better -- when you format them with hard breaks.
+
+ [bq]: #blockquote
+ [l]: #list
+
+
+
+## Headers
+
+Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
+
+Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:
+
+ This is an H1
+ =============
+
+ This is an H2
+ -------------
+
+Any number of underlining `=`'s or `-`'s will work.
+
+Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:
+
+ # This is an H1
+
+ ## This is an H2
+
+ ###### This is an H6
+
+Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :
+
+ # This is an H1 #
+
+ ## This is an H2 ##
+
+ ### This is an H3 ######
+
+
+## Blockquotes
+
+Markdown uses email-style `>` characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a `>` before every line:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+ >
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ > id sem consectetuer libero luctus adipiscing.
+
+Markdown allows you to be lazy and only put the `>` before the first
+line of a hard-wrapped paragraph:
+
+ > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+ consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+ > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+ id sem consectetuer libero luctus adipiscing.
+
+Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of `>`:
+
+ > This is the first level of quoting.
+ >
+ > > This is nested blockquote.
+ >
+ > Back to the first level.
+
+Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:
+
+ > ## This is a header.
+ >
+ > 1. This is the first list item.
+ > 2. This is the second list item.
+ >
+ > Here's some example code:
+ >
+ > return shell_exec("echo $input | $markdown_script");
+
+Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.
+
+
+## Lists
+
+Markdown supports ordered (numbered) and unordered (bulleted) lists.
+
+Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:
+
+ * Red
+ * Green
+ * Blue
+
+is equivalent to:
+
+ + Red
+ + Green
+ + Blue
+
+and:
+
+ - Red
+ - Green
+ - Blue
+
+Ordered lists use numbers followed by periods:
+
+ 1. Bird
+ 2. McHale
+ 3. Parish
+
+It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:
+
+ <ol>
+ <li>Bird</li>
+ <li>McHale</li>
+ <li>Parish</li>
+ </ol>
+
+If you instead wrote the list in Markdown like this:
+
+ 1. Bird
+ 1. McHale
+ 1. Parish
+
+or even:
+
+ 3. Bird
+ 1. McHale
+ 8. Parish
+
+you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.
+
+If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.
+
+List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.
+
+To make lists look nice, you can wrap items with hanging indents:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+But if you want to be lazy, you don't have to:
+
+ * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+ * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+
+If list items are separated by blank lines, Markdown will wrap the
+items in `<p>` tags in the HTML output. For example, this input:
+
+ * Bird
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li>Bird</li>
+ <li>Magic</li>
+ </ul>
+
+But this:
+
+ * Bird
+
+ * Magic
+
+will turn into:
+
+ <ul>
+ <li><p>Bird</p></li>
+ <li><p>Magic</p></li>
+ </ul>
+
+List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:
+
+ 1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+ 2. Suspendisse id sem consectetuer libero luctus adipiscing.
+
+It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:
+
+ * This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+ only required to indent the first line. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit.
+
+ * Another item in the same list.
+
+To put a blockquote within a list item, the blockquote's `>`
+delimiters need to be indented:
+
+ * A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+
+To put a code block within a list item, the code block needs
+to be indented *twice* -- 8 spaces or two tabs:
+
+ * A list item with a code block:
+
+ <code goes here>
+
+
+It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:
+
+ 1986. What a great season.
+
+In other words, a *number-period-space* sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:
+
+ 1986\. What a great season.
+
+
+
+## Code Blocks
+
+Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both `<pre>` and `<code>` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:
+
+ This is a normal paragraph:
+
+ This is a code block.
+
+Markdown will generate:
+
+ <p>This is a normal paragraph:</p>
+
+ <pre><code>This is a code block.
+ </code></pre>
+
+One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:
+
+ Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+
+will turn into:
+
+ <p>Here is an example of AppleScript:</p>
+
+ <pre><code>tell application "Foo"
+ beep
+ end tell
+ </code></pre>
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+ <div class="footer">
+ © 2004 Foo Corporation
+ </div>
+
+will turn into:
+
+ <pre><code><div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+ </code></pre>
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+
+
+## Horizontal Rules
+
+You can produce a horizontal rule tag (`<hr />`) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:
+
+ * * *
+
+ ***
+
+ *****
+
+ - - -
+
+ ---------------------------------------
+
+ _ _ _
+
+
+* * *
+
+# Span Elements
+
+## Links
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+ This is [an example](http://example.com/ "Title") inline link.
+
+ [This link](http://example.net/) has no title attribute.
+
+Will produce:
+
+ <p>This is <a href="http://example.com/" title="Title">
+ an example</a> inline link.</p>
+
+ <p><a href="http://example.net/">This link</a> has no
+ title attribute.</p>
+
+If you're referring to a local resource on the same server, you can
+use relative paths:
+
+ See my [About](/about/) page for details.
+
+Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:
+
+ This is [an example][id] reference-style link.
+
+You can optionally use a space to separate the sets of brackets:
+
+ This is [an example] [id] reference-style link.
+
+Then, anywhere in the document, you define your link label like this,
+on a line by itself:
+
+ [id]: http://example.com/ "Optional Title Here"
+
+That is:
+
+* Square brackets containing the link identifier (optionally
+ indented from the left margin using up to three spaces);
+* followed by a colon;
+* followed by one or more spaces (or tabs);
+* followed by the URL for the link;
+* optionally followed by a title attribute for the link, enclosed
+ in double or single quotes.
+
+The link URL may, optionally, be surrounded by angle brackets:
+
+ [id]: <http://example.com/> "Optional Title Here"
+
+You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:
+
+ [id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+
+Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.
+
+Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
+
+ [link text][a]
+ [link text][A]
+
+are equivalent.
+
+The *implicit link name* shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:
+
+ [Google][]
+
+And then define the link:
+
+ [Google]: http://google.com/
+
+Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:
+
+ Visit [Daring Fireball][] for more information.
+
+And then define the link:
+
+ [Daring Fireball]: http://daringfireball.net/
+
+Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.
+
+Here's an example of reference links in action:
+
+ I get 10 times more traffic from [Google] [1] than from
+ [Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+
+Using the implicit link name shortcut, you could instead write:
+
+ I get 10 times more traffic from [Google][] than from
+ [Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+
+Both of the above examples will produce the following HTML output:
+
+ <p>I get 10 times more traffic from <a href="http://google.com/"
+ title="Google">Google</a> than from
+ <a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+ or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+For comparison, here is the same paragraph written using
+Markdown's inline link style:
+
+ I get 10 times more traffic from [Google](http://google.com/ "Google")
+ than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+ [MSN](http://search.msn.com/ "MSN Search").
+
+The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.
+
+With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.
+
+
+## Emphasis
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`<strong>` tag. E.g., this input:
+
+ *single asterisks*
+
+ _single underscores_
+
+ **double asterisks**
+
+ __double underscores__
+
+will produce:
+
+ <em>single asterisks</em>
+
+ <em>single underscores</em>
+
+ <strong>double asterisks</strong>
+
+ <strong>double underscores</strong>
+
+You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.
+
+Emphasis can be used in the middle of a word:
+
+ un*fucking*believable
+
+But if you surround an `*` or `_` with spaces, it'll be treated as a
+literal asterisk or underscore.
+
+To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:
+
+ \*this text is surrounded by literal asterisks\*
+
+
+
+## Code
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+ Use the `printf()` function.
+
+will produce:
+
+ <p>Use the <code>printf()</code> function.</p>
+
+To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:
+
+ ``There is a literal backtick (`) here.``
+
+which will produce this:
+
+ <p><code>There is a literal backtick (`) here.</code></p>
+
+The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:
+
+ A single backtick in a code span: `` ` ``
+
+ A backtick-delimited string in a code span: `` `foo` ``
+
+will produce:
+
+ <p>A single backtick in a code span: <code>`</code></p>
+
+ <p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:
+
+ Please don't use any `<blink>` tags.
+
+into:
+
+ <p>Please don't use any <code><blink></code> tags.</p>
+
+You can write this:
+
+ `—` is the decimal-encoded equivalent of `—`.
+
+to produce:
+
+ <p><code>&#8212;</code> is the decimal-encoded
+ equivalent of <code>&mdash;</code>.</p>
+
+
+
+## Images
+
+Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.
+
+Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: *inline* and *reference*.
+
+Inline image syntax looks like this:
+
+ 
+
+ 
+
+That is:
+
+* An exclamation mark: `!`;
+* followed by a set of square brackets, containing the `alt`
+ attribute text for the image;
+* followed by a set of parentheses, containing the URL or path to
+ the image, and an optional `title` attribute enclosed in double
+ or single quotes.
+
+Reference-style image syntax looks like this:
+
+ ![Alt text][id]
+
+Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:
+
+ [id]: url/to/image "Optional title attribute"
+
+As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML `<img>` tags.
+
+
+* * *
+
+
+# Miscellaneous
+
+## Automatic Links
+
+Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+
+ <http://example.com/>
+
+Markdown will turn this into:
+
+ <a href="http://example.com/">http://example.com/</a>
+
+Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:
+
+ <address@example.com>
+
+into something like this:
+
+ <a href="mailto:addre
+ ss@example.co
+ m">address@exa
+ mple.com</a>
+
+which will render in a browser as a clickable link to "address@example.com".
+
+(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)
+
+
+
+## Backslash Escapes
+
+Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML `<em>` tag), you can backslashes
+before the asterisks, like this:
+
+ \*literal asterisks\*
+
+Markdown provides backslash escapes for the following characters:
+
+ \ backslash
+ ` backtick
+ * asterisk
+ _ underscore
+ {} curly braces
+ [] square brackets
+ () parentheses
+ # hash mark
+ + plus sign
+ - minus sign (hyphen)
+ . dot
+ ! exclamation mark
+
-<h2 id="toc">[TOC]</h2>\r
-<h1 id="header-1">Header 1</h1>\r
-<p>The TOC marker cannot be inside a header. This test makes sure markdown doesn't \r
-crash when it encounters this errant syntax. The unexpected output should\r
-clue the author in that s/he needs to add a blank line between the TOC and\r
+<h2 id="toc">[TOC]</h2>
+<h1 id="header-1">Header 1</h1>
+<p>The TOC marker cannot be inside a header. This test makes sure markdown doesn't
+crash when it encounters this errant syntax. The unexpected output should
+clue the author in that s/he needs to add a blank line between the TOC and
the <code><hr></code>.</p>
\ No newline at end of file
-[TOC]\r
------\r
-\r
-# Header 1\r
-\r
-The TOC marker cannot be inside a header. This test makes sure markdown doesn't \r
-crash when it encounters this errant syntax. The unexpected output should\r
-clue the author in that s/he needs to add a blank line between the TOC and\r
-the `<hr>`.\r
+[TOC]
+-----
+
+# Header 1
+
+The TOC marker cannot be inside a header. This test makes sure markdown doesn't
+crash when it encounters this errant syntax. The unexpected output should
+clue the author in that s/he needs to add a blank line between the TOC and
+the `<hr>`.
-<h1 id="header-a">Header A<a class="headerlink" href="#header-a" title="Permanent link">¶</a></h1>\r
-<h2 id="header-1">Header 1<a class="headerlink" href="#header-1" title="Permanent link">¶</a></h2>\r
-<h3 id="header-i">Header i<a class="headerlink" href="#header-i" title="Permanent link">¶</a></h3>\r
-<h1 id="header-b">Header <em>B</em><a class="headerlink" href="#header-b" title="Permanent link">¶</a></h1>\r
-<div class="toc">\r
-<ul>\r
-<li><a href="#header-a">Header A</a><ul>\r
-<li><a href="#header-1">Header 1</a><ul>\r
-<li><a href="#header-i">Header i</a></li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</li>\r
-<li><a href="#header-b">Header B</a></li>\r
-</ul>\r
+<h1 id="header-a">Header A<a class="headerlink" href="#header-a" title="Permanent link">¶</a></h1>
+<h2 id="header-1">Header 1<a class="headerlink" href="#header-1" title="Permanent link">¶</a></h2>
+<h3 id="header-i">Header i<a class="headerlink" href="#header-i" title="Permanent link">¶</a></h3>
+<h1 id="header-b">Header <em>B</em><a class="headerlink" href="#header-b" title="Permanent link">¶</a></h1>
+<div class="toc">
+<ul>
+<li><a href="#header-a">Header A</a><ul>
+<li><a href="#header-1">Header 1</a><ul>
+<li><a href="#header-i">Header i</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#header-b">Header B</a></li>
+</ul>
</div>
\ No newline at end of file
-# Header A\r
-\r
-## Header 1\r
-\r
-### Header i\r
-\r
-# Header *B*\r
-\r
-[TOC]\r
+# Header A
+
+## Header 1
+
+### Header i
+
+# Header *B*
+
+[TOC]
-<div class="toc">\r
-<ul>\r
-<li><a href="#start-with-header-other-than-one">Start with header other than one.</a></li>\r
-<li><a href="#header-3">Header 3</a><ul>\r
-<li><a href="#header-4">Header 4</a></li>\r
-</ul>\r
-</li>\r
-<li><a href="#header-3_1">Header 3</a></li>\r
-</ul>\r
-</div>\r
-<h3 id="start-with-header-other-than-one">Start with header other than one.<a class="headerlink" href="#start-with-header-other-than-one" title="Permanent link">[link]</a></h3>\r
-<h3 id="header-3">Header 3<a class="headerlink" href="#header-3" title="Permanent link">[link]</a></h3>\r
-<h4 id="header-4">Header 4<a class="headerlink" href="#header-4" title="Permanent link">[link]</a></h4>\r
+<div class="toc">
+<ul>
+<li><a href="#start-with-header-other-than-one">Start with header other than one.</a></li>
+<li><a href="#header-3">Header 3</a><ul>
+<li><a href="#header-4">Header 4</a></li>
+</ul>
+</li>
+<li><a href="#header-3_1">Header 3</a></li>
+</ul>
+</div>
+<h3 id="start-with-header-other-than-one">Start with header other than one.<a class="headerlink" href="#start-with-header-other-than-one" title="Permanent link">[link]</a></h3>
+<h3 id="header-3">Header 3<a class="headerlink" href="#header-3" title="Permanent link">[link]</a></h3>
+<h4 id="header-4">Header 4<a class="headerlink" href="#header-4" title="Permanent link">[link]</a></h4>
<h3 id="header-3_1">Header 3<a class="headerlink" href="#header-3_1" title="Permanent link">[link]</a></h3>
\ No newline at end of file
-[TOC]\r
-\r
-### Start with header other than one.\r
-\r
-### Header 3\r
-\r
-#### Header 4\r
-\r
-### Header 3\r
-\r
+[TOC]
+
+### Start with header other than one.
+
+### Header 3
+
+#### Header 4
+
+### Header 3
+
-<div class="toc">\r
-<ul>\r
-<li><a href="#header-2">Header 2</a></li>\r
-<li><a href="#header-1">Header 1</a></li>\r
-</ul>\r
-</div>\r
-<h2 id="header-2">Header 2</h2>\r
+<div class="toc">
+<ul>
+<li><a href="#header-2">Header 2</a></li>
+<li><a href="#header-1">Header 1</a></li>
+</ul>
+</div>
+<h2 id="header-2">Header 2</h2>
<h1 id="header-1">Header 1</h1>
\ No newline at end of file
-[TOC]\r
-\r
-## Header 2\r
-\r
-# Header 1\r
+[TOC]
+
+## Header 2
+
+# Header 1
-<p>Some text with a <a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>\r
-<p>A link with <a class="wikilink" href="/white_space_and_underscores/">white space and_underscores</a> and a empty one.</p>\r
-<p>Another with <a class="wikilink" href="/double_spaces/">double spaces</a> and <a class="wikilink" href="/double__underscores/">double__underscores</a> and \r
-one that <a class="wikilink" href="/has_emphasis_inside/">has <em>emphasis</em> inside</a> and one <a class="wikilink" href="/with_multiple_underscores/">with_multiple_underscores</a> \r
-and one that is <em><a class="wikilink" href="/emphasised/">emphasised</a></em>.</p>\r
-<p>And a <a href="http://example.com/RealLink">RealLink</a>.</p>\r
-<p><a href="http://example.com/And_A_AutoLink">http://example.com/And_A_AutoLink</a></p>\r
-<p>And a <a href="/MarkdownLink/" title="A MarkdownLink">MarkdownLink</a> for\r
+<p>Some text with a <a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>
+<p>A link with <a class="wikilink" href="/white_space_and_underscores/">white space and_underscores</a> and a empty one.</p>
+<p>Another with <a class="wikilink" href="/double_spaces/">double spaces</a> and <a class="wikilink" href="/double__underscores/">double__underscores</a> and
+one that <a class="wikilink" href="/has_emphasis_inside/">has <em>emphasis</em> inside</a> and one <a class="wikilink" href="/with_multiple_underscores/">with_multiple_underscores</a>
+and one that is <em><a class="wikilink" href="/emphasised/">emphasised</a></em>.</p>
+<p>And a <a href="http://example.com/RealLink">RealLink</a>.</p>
+<p><a href="http://example.com/And_A_AutoLink">http://example.com/And_A_AutoLink</a></p>
+<p>And a <a href="/MarkdownLink/" title="A MarkdownLink">MarkdownLink</a> for
completeness.</p>
\ No newline at end of file
-Some text with a [[WikiLink]].\r
-\r
-A link with [[ white space and_underscores ]] and a empty [[ ]] one.\r
-\r
-Another with [[double spaces]] and [[double__underscores]] and \r
-one that [[has _emphasis_ inside]] and one [[with_multiple_underscores]] \r
-and one that is _[[emphasised]]_.\r
-\r
-And a <a href="http://example.com/RealLink">RealLink</a>.\r
-\r
-<http://example.com/And_A_AutoLink>\r
-\r
-And a [MarkdownLink](/MarkdownLink/ "A MarkdownLink") for\r
-completeness.\r
+Some text with a [[WikiLink]].
+
+A link with [[ white space and_underscores ]] and a empty [[ ]] one.
+
+Another with [[double spaces]] and [[double__underscores]] and
+one that [[has _emphasis_ inside]] and one [[with_multiple_underscores]]
+and one that is _[[emphasised]]_.
+
+And a <a href="http://example.com/RealLink">RealLink</a>.
+
+<http://example.com/And_A_AutoLink>
+
+And a [MarkdownLink](/MarkdownLink/ "A MarkdownLink") for
+completeness.
+++ /dev/null
-<p>A test of the most<br>\r
-basic of html/xhtml differences.</p>
\ No newline at end of file
+++ /dev/null
-A test of the most \r
-basic of html/xhtml differences.
\ No newline at end of file
+++ /dev/null
-[DEFAULT]\r
-output_format=html4\r
-<p>foo</p>\r
-<div>\r
-bar\r
+<p>foo</p>
+<div>
+bar
</div>
\ No newline at end of file
-<h1>this is a huge header</h1>\r
+<h1>this is a huge header</h1>
<h2>this is a smaller header</h2>
\ No newline at end of file
-# this is a huge header #\r
-## this is a smaller header ##\r
+# this is a huge header #
+## this is a smaller header ##
-[link](http://www.freewisdom.org/this&that)\r
+[link](http://www.freewisdom.org/this&that)
-<p>&</p>\r
+<p>&</p>
<p>AT&T</p>
\ No newline at end of file
-&\r
-\r
-AT&T\r
-\r
-\r
+&
+
+AT&T
+
+
-<h1>بايثون</h1>\r
-<p><strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.</p>\r
-<p>نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.</p>\r
-<p>تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.</p>\r
-<h2>أمثلة</h2>\r
-<p>مثال Hello World!</p>\r
-<pre><code>print "Hello World!"\r
-</code></pre>\r
-<p>مثال لاستخراج المضروب Factorial :</p>\r
-<pre><code>num = 1\r
-x = raw_input('Insert the number please ')\r
-x = int(x)\r
-\r
-if x > 69:\r
- print 'Math Error !'\r
-else:\r
- while x > 1:\r
- num *= x\r
- x = x-1\r
-\r
- print num\r
-</code></pre>\r
-<h2>وصلات خارجية</h2>\r
-<ul>\r
-<li><a href="http://www.python.org">الموقع الرسمي للغة بايثون</a></li>\r
-</ul>\r
+<h1>بايثون</h1>
+<p><strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.</p>
+<p>نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.</p>
+<p>تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.</p>
+<h2>أمثلة</h2>
+<p>مثال Hello World!</p>
+<pre><code>print "Hello World!"
+</code></pre>
+<p>مثال لاستخراج المضروب Factorial :</p>
+<pre><code>num = 1
+x = raw_input('Insert the number please ')
+x = int(x)
+
+if x > 69:
+ print 'Math Error !'
+else:
+ while x > 1:
+ num *= x
+ x = x-1
+
+ print num
+</code></pre>
+<h2>وصلات خارجية</h2>
+<ul>
+<li><a href="http://www.python.org">الموقع الرسمي للغة بايثون</a></li>
+</ul>
<p>بذرة حاس </p>
\ No newline at end of file
-\r
-بايثون\r
-=====\r
-\r
-**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.\r
-\r
-نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.\r
-\r
-تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.\r
-\r
-##أمثلة \r
-مثال Hello World!\r
-\r
- print "Hello World!"\r
-\r
-\r
-مثال لاستخراج المضروب Factorial :\r
-\r
- num = 1\r
- x = raw_input('Insert the number please ')\r
- x = int(x)\r
- \r
- if x > 69:\r
- print 'Math Error !'\r
- else:\r
- while x > 1:\r
- num *= x\r
- x = x-1\r
- \r
- print num\r
-\r
-\r
-\r
-##وصلات خارجية \r
-* [الموقع الرسمي للغة بايثون](http://www.python.org)\r
-\r
- بذرة حاس \r
+
+بايثون
+=====
+
+**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.
+
+نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.
+
+تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.
+
+##أمثلة
+مثال Hello World!
+
+ print "Hello World!"
+
+
+مثال لاستخراج المضروب Factorial :
+
+ num = 1
+ x = raw_input('Insert the number please ')
+ x = int(x)
+
+ if x > 69:
+ print 'Math Error !'
+ else:
+ while x > 1:
+ num *= x
+ x = x-1
+
+ print num
+
+
+
+##وصلات خارجية
+* [الموقع الرسمي للغة بايثون](http://www.python.org)
+
+ بذرة حاس
-![img{@id=foo}][img]\r
-\r
- [img]: http://example.com/i.jpg\r
-\r
+![img{@id=foo}][img]
+
+ [img]: http://example.com/i.jpg
+
-<p id="TABLE.OF.CONTENTS"></p>\r
-<ul>\r
-<li id="TABLEOFCONTENTS"></li>\r
-</ul>\r
-<p id="TABLEOFCONTENTS">Or in the middle of the text </p>\r
+<p id="TABLE.OF.CONTENTS"></p>
+<ul>
+<li id="TABLEOFCONTENTS"></li>
+</ul>
+<p id="TABLEOFCONTENTS">Or in the middle of the text </p>
<p id="tableofcontents"></p>
\ No newline at end of file
-{@id=TABLE.OF.CONTENTS}\r
-\r
-\r
-* {@id=TABLEOFCONTENTS}\r
-\r
-\r
-Or in the middle of the text {@id=TABLEOFCONTENTS}\r
-\r
-{@id=tableofcontents}\r
-\r
+{@id=TABLE.OF.CONTENTS}
+
+
+* {@id=TABLEOFCONTENTS}
+
+
+Or in the middle of the text {@id=TABLEOFCONTENTS}
+
+{@id=tableofcontents}
+
-<http://some.site/weird*url*thing>\r
-\r
+<http://some.site/weird*url*thing>
+
-<http://some.site/нечто*очень*странное>\r
-\r
-\r
+<http://some.site/нечто*очень*странное>
+
+
-<p>\`This should not be in code.\`\r
-`This also should not be in code.`\r
+<p>\`This should not be in code.\`
+`This also should not be in code.`
`And finally this should not be in code.`</p>
\ No newline at end of file
-\\`This should not be in code.\\`\r
-\`This also should not be in code.\`\r
-\`And finally this should not be in code.`\r
+\\`This should not be in code.\\`
+\`This also should not be in code.\`
+\`And finally this should not be in code.`
-<p><strong>Python</strong>(パイソン)は、<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> によって作られたオープンソースのオブジェクト指向スクリプト言語。<a href="http://ja.wikipedia.org/wiki/Perl">Perl</a>とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)</p>\r
-<p>|||||||||||||||||||||||||||||THIS SHOULD BE LTR|||||||||||||||||||||||||</p>\r
-<p dir="rtl">|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| </p>\r
-<p dir="ltr">(<strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوح </p>\r
-<p>پایتون زبان برنامهنویسی تفسیری و سطح بالا ، شیگرا و یک زبان برنامهنویسی تفسیری سمت سرور قدرتمند است که توسط گیدو ون روسوم در سال ۱۹۹۰ ساخته شد. این زبان در ویژگیها شبیه پرل، روبی، اسکیم، اسمالتاک و تیسیال است و از مدیریت خودکار حافظه استفاده میکند</p>\r
-<p>Python,是一种面向对象的、直譯式的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。</p>\r
-<p>ބްލޫ ވޭލްގެ ދޫ މަތީގައި އެއްފަހަރާ 50 މީހުންނަށް ތިބެވިދާނެވެ. ބޮޑު މަހުގެ ދުލަކީ އެހާމެ ބޮޑު އެއްޗެކެވެ.</p>\r
-<p><strong>உருது</strong> 13ஆம் நூற்றாண்டில் உருவான ஒரு இந்தோ-ஐரோப்பிய மொழியாகும். உருது, ஹிந்தியுடன் சேர்த்து "ஹிந்துஸ்தானி" என அழைக்கப்படுகின்றது. மண்டரின், ஆங்கிலம் ஆகியவற்றுக்கு அடுத்தபடியாக மூன்றாவது கூடிய அளவு மக்களால் புரிந்து கொள்ளப்படக்கூடியது ஹிந்துஸ்தானியேயாகும். தாய் மொழியாகப் பேசுபவர்கள் எண்ணிக்கையின் அடிப்படையில் உருது உலகின் 20 ஆவது பெரிய மொழியாகும். 6 கோடி மக்கள் இதனைத் தாய் மொழியாகக் கொண்டுள்ளார்கள். இரண்டாவது மொழியாகக் கொண்டுள்ளவர்கள் உட்பட 11 கோடிப் பேர் இதனைப் பேசுகிறார்கள். உருது பாகிஸ்தானின் அரசகரும மொழியாகவும், இந்தியாவின் அரசகரும மொழிகளுள் ஒன்றாகவும் விளங்குகிறது.</p>\r
-<p>اردو ہندوآریائی زبانوں کی ہندويورپی شاخ کی ایک زبان ہے جو تيرھويں صدی ميں بر صغير ميں پيدا ہوئی ـ اردو پاکستان کی سرکاری زبان ہے اور بھارت کی سرکاری زبانوں ميں سے ايک ہے۔ اردو بھارت ميں 5 کروڑ اور پاکستان ميں 1 کروڑ لوگوں کی مادری زبان ہے مگر اسے بھارت اور پاکستان کے تقریباً 50 کروڑ لوگ بول اور سمجھ سکتے ھیں ۔ جن میں سے تقریباً 10.5 کروڑ لوگ اسے باقاعدہ بولتے ھیں۔</p>\r
-<h1>بايثون</h1>\r
-<p><strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.</p>\r
-<p>|||||||||||||||||||||||||||||THIS SHOULD BE RTL|||||||||||||||||||||||||</p>\r
-<p>(نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.</p>\r
-<p>تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.</p>\r
-<h2>أمثلة</h2>\r
-<p>مثال Hello World!</p>\r
-<pre><code>print "Hello World!"\r
-</code></pre>\r
-<p>مثال لاستخراج المضروب Factorial :</p>\r
-<pre><code>num = 1\r
-x = raw_input('Insert the number please ')\r
-x = int(x)\r
-\r
-if x > 69:\r
- print 'Math Error !'\r
-else:\r
- while x > 1:\r
- num *= x\r
- x = x-1\r
-\r
- print num\r
-</code></pre>\r
-<h2>وصلات خارجية</h2>\r
-<ul>\r
-<li><a href="http://www.python.org">الموقع الرسمي للغة بايثون</a></li>\r
-</ul>\r
-<p>بذرة حاس </p>\r
-<p><strong>Недвард «Нед» Фландерс</strong> (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая. </p>\r
+<p><strong>Python</strong>(パイソン)は、<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> によって作られたオープンソースのオブジェクト指向スクリプト言語。<a href="http://ja.wikipedia.org/wiki/Perl">Perl</a>とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)</p>
+<p>|||||||||||||||||||||||||||||THIS SHOULD BE LTR|||||||||||||||||||||||||</p>
+<p dir="rtl">|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| </p>
+<p dir="ltr">(<strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوح </p>
+<p>پایتون زبان برنامهنویسی تفسیری و سطح بالا ، شیگرا و یک زبان برنامهنویسی تفسیری سمت سرور قدرتمند است که توسط گیدو ون روسوم در سال ۱۹۹۰ ساخته شد. این زبان در ویژگیها شبیه پرل، روبی، اسکیم، اسمالتاک و تیسیال است و از مدیریت خودکار حافظه استفاده میکند</p>
+<p>Python,是一种面向对象的、直譯式的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。</p>
+<p>ބްލޫ ވޭލްގެ ދޫ މަތީގައި އެއްފަހަރާ 50 މީހުންނަށް ތިބެވިދާނެވެ. ބޮޑު މަހުގެ ދުލަކީ އެހާމެ ބޮޑު އެއްޗެކެވެ.</p>
+<p><strong>உருது</strong> 13ஆம் நூற்றாண்டில் உருவான ஒரு இந்தோ-ஐரோப்பிய மொழியாகும். உருது, ஹிந்தியுடன் சேர்த்து "ஹிந்துஸ்தானி" என அழைக்கப்படுகின்றது. மண்டரின், ஆங்கிலம் ஆகியவற்றுக்கு அடுத்தபடியாக மூன்றாவது கூடிய அளவு மக்களால் புரிந்து கொள்ளப்படக்கூடியது ஹிந்துஸ்தானியேயாகும். தாய் மொழியாகப் பேசுபவர்கள் எண்ணிக்கையின் அடிப்படையில் உருது உலகின் 20 ஆவது பெரிய மொழியாகும். 6 கோடி மக்கள் இதனைத் தாய் மொழியாகக் கொண்டுள்ளார்கள். இரண்டாவது மொழியாகக் கொண்டுள்ளவர்கள் உட்பட 11 கோடிப் பேர் இதனைப் பேசுகிறார்கள். உருது பாகிஸ்தானின் அரசகரும மொழியாகவும், இந்தியாவின் அரசகரும மொழிகளுள் ஒன்றாகவும் விளங்குகிறது.</p>
+<p>اردو ہندوآریائی زبانوں کی ہندويورپی شاخ کی ایک زبان ہے جو تيرھويں صدی ميں بر صغير ميں پيدا ہوئی ـ اردو پاکستان کی سرکاری زبان ہے اور بھارت کی سرکاری زبانوں ميں سے ايک ہے۔ اردو بھارت ميں 5 کروڑ اور پاکستان ميں 1 کروڑ لوگوں کی مادری زبان ہے مگر اسے بھارت اور پاکستان کے تقریباً 50 کروڑ لوگ بول اور سمجھ سکتے ھیں ۔ جن میں سے تقریباً 10.5 کروڑ لوگ اسے باقاعدہ بولتے ھیں۔</p>
+<h1>بايثون</h1>
+<p><strong>بايثون</strong> لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.</p>
+<p>|||||||||||||||||||||||||||||THIS SHOULD BE RTL|||||||||||||||||||||||||</p>
+<p>(نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.</p>
+<p>تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.</p>
+<h2>أمثلة</h2>
+<p>مثال Hello World!</p>
+<pre><code>print "Hello World!"
+</code></pre>
+<p>مثال لاستخراج المضروب Factorial :</p>
+<pre><code>num = 1
+x = raw_input('Insert the number please ')
+x = int(x)
+
+if x > 69:
+ print 'Math Error !'
+else:
+ while x > 1:
+ num *= x
+ x = x-1
+
+ print num
+</code></pre>
+<h2>وصلات خارجية</h2>
+<ul>
+<li><a href="http://www.python.org">الموقع الرسمي للغة بايثون</a></li>
+</ul>
+<p>بذرة حاس </p>
+<p><strong>Недвард «Нед» Фландерс</strong> (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая. </p>
<p>Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы <em>Northeast Flanders St.</em> в <a href="http://www.portland.gov">Портленде</a>, Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы <em>NE Flanders St.</em> хулиганы часто исправляли на <em>NED Flanders St.</em></p>
\ No newline at end of file
-**Python**(パイソン)は、[Guido van Rossum](http://en.wikipedia.org/wiki/Guido_van_Rossum) によって作られたオープンソースのオブジェクト指向スクリプト言語。[Perl](http://ja.wikipedia.org/wiki/Perl)とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)\r
-\r
-|||||||||||||||||||||||||||||THIS SHOULD BE LTR|||||||||||||||||||||||||\r
-\r
-|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| {@dir=rtl} \r
-\r
-\r
-(**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير {@dir=ltr} بالإضافة إلى أنها مجانية و مفتوح \r
-\r
-\r
-\r
-\r
-\r
-پایتون زبان برنامهنویسی تفسیری و سطح بالا ، شیگرا و یک زبان برنامهنویسی تفسیری سمت سرور قدرتمند است که توسط گیدو ون روسوم در سال ۱۹۹۰ ساخته شد. این زبان در ویژگیها شبیه پرل، روبی، اسکیم، اسمالتاک و تیسیال است و از مدیریت خودکار حافظه استفاده میکند\r
-\r
-Python,是一种面向对象的、直譯式的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。\r
-\r
-ބްލޫ ވޭލްގެ ދޫ މަތީގައި އެއްފަހަރާ 50 މީހުންނަށް ތިބެވިދާނެވެ. ބޮޑު މަހުގެ ދުލަކީ އެހާމެ ބޮޑު އެއްޗެކެވެ.\r
-\r
-**உருது** 13ஆம் நூற்றாண்டில் உருவான ஒரு இந்தோ-ஐரோப்பிய மொழியாகும். உருது, ஹிந்தியுடன் சேர்த்து "ஹிந்துஸ்தானி" என அழைக்கப்படுகின்றது. மண்டரின், ஆங்கிலம் ஆகியவற்றுக்கு அடுத்தபடியாக மூன்றாவது கூடிய அளவு மக்களால் புரிந்து கொள்ளப்படக்கூடியது ஹிந்துஸ்தானியேயாகும். தாய் மொழியாகப் பேசுபவர்கள் எண்ணிக்கையின் அடிப்படையில் உருது உலகின் 20 ஆவது பெரிய மொழியாகும். 6 கோடி மக்கள் இதனைத் தாய் மொழியாகக் கொண்டுள்ளார்கள். இரண்டாவது மொழியாகக் கொண்டுள்ளவர்கள் உட்பட 11 கோடிப் பேர் இதனைப் பேசுகிறார்கள். உருது பாகிஸ்தானின் அரசகரும மொழியாகவும், இந்தியாவின் அரசகரும மொழிகளுள் ஒன்றாகவும் விளங்குகிறது.\r
-\r
-اردو ہندوآریائی زبانوں کی ہندويورپی شاخ کی ایک زبان ہے جو تيرھويں صدی ميں بر صغير ميں پيدا ہوئی ـ اردو پاکستان کی سرکاری زبان ہے اور بھارت کی سرکاری زبانوں ميں سے ايک ہے۔ اردو بھارت ميں 5 کروڑ اور پاکستان ميں 1 کروڑ لوگوں کی مادری زبان ہے مگر اسے بھارت اور پاکستان کے تقریباً 50 کروڑ لوگ بول اور سمجھ سکتے ھیں ۔ جن میں سے تقریباً 10.5 کروڑ لوگ اسے باقاعدہ بولتے ھیں۔\r
-\r
-بايثون\r
-=====\r
-\r
-**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.\r
-\r
-|||||||||||||||||||||||||||||THIS SHOULD BE RTL|||||||||||||||||||||||||\r
-\r
-(نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.\r
-\r
-تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.\r
-\r
-##أمثلة \r
-مثال Hello World!\r
-\r
- print "Hello World!"\r
-\r
-\r
-مثال لاستخراج المضروب Factorial :\r
-\r
- num = 1\r
- x = raw_input('Insert the number please ')\r
- x = int(x)\r
- \r
- if x > 69:\r
- print 'Math Error !'\r
- else:\r
- while x > 1:\r
- num *= x\r
- x = x-1\r
- \r
- print num\r
-\r
-\r
-\r
-##وصلات خارجية \r
-* [الموقع الرسمي للغة بايثون](http://www.python.org)\r
-\r
- بذرة حاس \r
-\r
-\r
-**Недвард «Нед» Фландерс** (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая. \r
-\r
-Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы *Northeast Flanders St.* в [Портленде](http://www.portland.gov), Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы *NE Flanders St.* хулиганы часто исправляли на _NED Flanders St._\r
-\r
-\r
+**Python**(パイソン)は、[Guido van Rossum](http://en.wikipedia.org/wiki/Guido_van_Rossum) によって作られたオープンソースのオブジェクト指向スクリプト言語。[Perl](http://ja.wikipedia.org/wiki/Perl)とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)
+
+|||||||||||||||||||||||||||||THIS SHOULD BE LTR|||||||||||||||||||||||||
+
+|||||||||||||||||||||||||||||THIS SHOULD BE RTL||||||||||||||||||||||||| {@dir=rtl}
+
+
+(**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (THIS SHOULD BE LTR ) وقابلة للتطوير {@dir=ltr} بالإضافة إلى أنها مجانية و مفتوح
+
+
+
+
+
+پایتون زبان برنامهنویسی تفسیری و سطح بالا ، شیگرا و یک زبان برنامهنویسی تفسیری سمت سرور قدرتمند است که توسط گیدو ون روسوم در سال ۱۹۹۰ ساخته شد. این زبان در ویژگیها شبیه پرل، روبی، اسکیم، اسمالتاک و تیسیال است و از مدیریت خودکار حافظه استفاده میکند
+
+Python,是一种面向对象的、直譯式的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。
+
+ބްލޫ ވޭލްގެ ދޫ މަތީގައި އެއްފަހަރާ 50 މީހުންނަށް ތިބެވިދާނެވެ. ބޮޑު މަހުގެ ދުލަކީ އެހާމެ ބޮޑު އެއްޗެކެވެ.
+
+**உருது** 13ஆம் நூற்றாண்டில் உருவான ஒரு இந்தோ-ஐரோப்பிய மொழியாகும். உருது, ஹிந்தியுடன் சேர்த்து "ஹிந்துஸ்தானி" என அழைக்கப்படுகின்றது. மண்டரின், ஆங்கிலம் ஆகியவற்றுக்கு அடுத்தபடியாக மூன்றாவது கூடிய அளவு மக்களால் புரிந்து கொள்ளப்படக்கூடியது ஹிந்துஸ்தானியேயாகும். தாய் மொழியாகப் பேசுபவர்கள் எண்ணிக்கையின் அடிப்படையில் உருது உலகின் 20 ஆவது பெரிய மொழியாகும். 6 கோடி மக்கள் இதனைத் தாய் மொழியாகக் கொண்டுள்ளார்கள். இரண்டாவது மொழியாகக் கொண்டுள்ளவர்கள் உட்பட 11 கோடிப் பேர் இதனைப் பேசுகிறார்கள். உருது பாகிஸ்தானின் அரசகரும மொழியாகவும், இந்தியாவின் அரசகரும மொழிகளுள் ஒன்றாகவும் விளங்குகிறது.
+
+اردو ہندوآریائی زبانوں کی ہندويورپی شاخ کی ایک زبان ہے جو تيرھويں صدی ميں بر صغير ميں پيدا ہوئی ـ اردو پاکستان کی سرکاری زبان ہے اور بھارت کی سرکاری زبانوں ميں سے ايک ہے۔ اردو بھارت ميں 5 کروڑ اور پاکستان ميں 1 کروڑ لوگوں کی مادری زبان ہے مگر اسے بھارت اور پاکستان کے تقریباً 50 کروڑ لوگ بول اور سمجھ سکتے ھیں ۔ جن میں سے تقریباً 10.5 کروڑ لوگ اسے باقاعدہ بولتے ھیں۔
+
+بايثون
+=====
+
+**بايثون** لغة برمجة حديثة بسيطة، واضحة، سريعة ، تستخدم أسلوب البرمجة الكائنية (OOP) وقابلة للتطوير بالإضافة إلى أنها مجانية و مفتوحة المصدر. صُنفت بالأساس كلغة تفسيرية ، بايثون مصممة أصلاً للأداء بعض المهام الخاصة أو المحدودة. إلا أنه يمكن استخدامها بايثون لإنجاز المشاريع الضخمه كأي لغة برمجية أخرى، غالباً ما يُنصح المبتدئين في ميدان البرمجة بتعلم هذه اللغة لأنها من بين أسهل اللغات البرمجية تعلماً.
+
+|||||||||||||||||||||||||||||THIS SHOULD BE RTL|||||||||||||||||||||||||
+
+(نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم. تم تطويرها بلغة C. أطلق فان رُزوم اسم "بايثون" على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون Monty Python.
+
+تتميز بايثون بمجتمعها النشط ، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة ، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من اجل برمجة الالعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره.
+
+##أمثلة
+مثال Hello World!
+
+ print "Hello World!"
+
+
+مثال لاستخراج المضروب Factorial :
+
+ num = 1
+ x = raw_input('Insert the number please ')
+ x = int(x)
+
+ if x > 69:
+ print 'Math Error !'
+ else:
+ while x > 1:
+ num *= x
+ x = x-1
+
+ print num
+
+
+
+##وصلات خارجية
+* [الموقع الرسمي للغة بايثون](http://www.python.org)
+
+ بذرة حاس
+
+
+**Недвард «Нед» Фландерс** (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая.
+
+Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы *Northeast Flanders St.* в [Портленде](http://www.portland.gov), Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы *NE Flanders St.* хулиганы часто исправляли на _NED Flanders St._
+
+
-<p>aaaaaaaaaaa</p>\r
-<blockquote></blockquote>\r
+<p>aaaaaaaaaaa</p>
+<blockquote></blockquote>
<p>bbbbbbbbbbb</p>
\ No newline at end of file
-\r
-aaaaaaaaaaa\r
-\r
-> \r
-\r
-bbbbbbbbbbb\r
+
+aaaaaaaaaaa
+
+>
+
+bbbbbbbbbbb
-<p>Preserve blank lines in code blocks with tabs:</p>\r
-<pre><code>a code block\r
-\r
-two tabbed lines\r
-\r
-\r
-three tabbed lines\r
-\r
-\r
-\r
-four tabbed lines\r
-\r
-\r
-\r
-\r
-five tabbed lines\r
-\r
-\r
-\r
-\r
-\r
-six tabbed lines\r
-\r
-\r
-\r
-\r
-\r
-\r
-End of tabbed block\r
-</code></pre>\r
-<p>And without tabs:</p>\r
-<pre><code>a code block\r
-\r
-two blank lines\r
-\r
-\r
-three blank lines\r
-\r
-\r
-\r
-four blank lines\r
-\r
-\r
-\r
-\r
-five blank lines\r
-\r
-\r
-\r
-\r
-\r
-six blank lines\r
-\r
-\r
-\r
-\r
-\r
-\r
-End of block\r
-</code></pre>\r
+<p>Preserve blank lines in code blocks with tabs:</p>
+<pre><code>a code block
+
+two tabbed lines
+
+
+three tabbed lines
+
+
+
+four tabbed lines
+
+
+
+
+five tabbed lines
+
+
+
+
+
+six tabbed lines
+
+
+
+
+
+
+End of tabbed block
+</code></pre>
+<p>And without tabs:</p>
+<pre><code>a code block
+
+two blank lines
+
+
+three blank lines
+
+
+
+four blank lines
+
+
+
+
+five blank lines
+
+
+
+
+
+six blank lines
+
+
+
+
+
+
+End of block
+</code></pre>
<p>End of document</p>
\ No newline at end of file
-Preserve blank lines in code blocks with tabs:\r
-\r
- a code block\r
- \r
- two tabbed lines\r
- \r
- \r
- three tabbed lines\r
- \r
- \r
- \r
- four tabbed lines\r
- \r
- \r
- \r
- \r
- five tabbed lines\r
- \r
- \r
- \r
- \r
- \r
- six tabbed lines\r
- \r
- \r
- \r
- \r
- \r
- \r
- End of tabbed block\r
- \r
- \r
- \r
- \r
- \r
- \r
-And without tabs:\r
-\r
- a code block\r
-\r
- two blank lines\r
-\r
-\r
- three blank lines\r
-\r
-\r
-\r
- four blank lines\r
-\r
-\r
-\r
-\r
- five blank lines\r
-\r
-\r
-\r
-\r
-\r
- six blank lines\r
-\r
-\r
-\r
-\r
-\r
-\r
- End of block\r
-\r
-\r
-\r
-\r
-\r
-\r
+Preserve blank lines in code blocks with tabs:
+
+ a code block
+
+ two tabbed lines
+
+
+ three tabbed lines
+
+
+
+ four tabbed lines
+
+
+
+
+ five tabbed lines
+
+
+
+
+
+ six tabbed lines
+
+
+
+
+
+
+ End of tabbed block
+
+
+
+
+
+
+And without tabs:
+
+ a code block
+
+ two blank lines
+
+
+ three blank lines
+
+
+
+ four blank lines
+
+
+
+
+ five blank lines
+
+
+
+
+
+ six blank lines
+
+
+
+
+
+
+ End of block
+
+
+
+
+
+
End of document
\ No newline at end of file
-<section>\r
- <header>\r
- <hgroup>\r
- <h1>Hello :-)</h1>\r
- </hgroup>\r
- </header>\r
- <figure>\r
- <img src="image.png" alt="" />\r
- <figcaption>Caption</figcaption>\r
- </figure>\r
- <footer>\r
- <p>Some footer</p>\r
- </footer>\r
-</section>\r
-\r
+<section>
+ <header>
+ <hgroup>
+ <h1>Hello :-)</h1>
+ </hgroup>
+ </header>
+ <figure>
+ <img src="image.png" alt="" />
+ <figcaption>Caption</figcaption>
+ </figure>
+ <footer>
+ <p>Some footer</p>
+ </footer>
+</section>
+
<figure></figure>
\ No newline at end of file
-<section>\r
- <header>\r
- <hgroup>\r
- <h1>Hello :-)</h1>\r
- </hgroup>\r
- </header>\r
- <figure>\r
- <img src="image.png" alt="" />\r
- <figcaption>Caption</figcaption>\r
- </figure>\r
- <footer>\r
- <p>Some footer</p>\r
- </footer>\r
-</section><figure></figure>\r
+<section>
+ <header>
+ <hgroup>
+ <h1>Hello :-)</h1>
+ </hgroup>
+ </header>
+ <figure>
+ <img src="image.png" alt="" />
+ <figcaption>Caption</figcaption>
+ </figure>
+ <footer>
+ <p>Some footer</p>
+ </footer>
+</section><figure></figure>
-<blockquote>\r
-Raw HTML processing should not confuse this with the blockquote below\r
-</blockquote>\r
-\r
-<div id="current-content">\r
- <div id="primarycontent" class="hfeed">\r
- <div id="post-">\r
- <div class="page-head">\r
- <h2>Header2</h2>\r
- </div>\r
- <div class="entry-content">\r
- <h3>Header3</h3>\r
- <p>Paragraph</p>\r
- <h3>Header3</h3>\r
- <p>Paragraph</p>\r
- <blockquote>\r
- <p>Paragraph</p>\r
- </blockquote>\r
- <p>Paragraph</p>\r
- <p><a href="/somelink">linktext</a></p>\r
- </div>\r
- </div><!-- #post-ID -->\r
- <!-- add contact form here -->\r
- </div><!-- #primarycontent -->\r
-</div>\r
-\r
+<blockquote>
+Raw HTML processing should not confuse this with the blockquote below
+</blockquote>
+
+<div id="current-content">
+ <div id="primarycontent" class="hfeed">
+ <div id="post-">
+ <div class="page-head">
+ <h2>Header2</h2>
+ </div>
+ <div class="entry-content">
+ <h3>Header3</h3>
+ <p>Paragraph</p>
+ <h3>Header3</h3>
+ <p>Paragraph</p>
+ <blockquote>
+ <p>Paragraph</p>
+ </blockquote>
+ <p>Paragraph</p>
+ <p><a href="/somelink">linktext</a></p>
+ </div>
+ </div><!-- #post-ID -->
+ <!-- add contact form here -->
+ </div><!-- #primarycontent -->
+</div>
+
<!-- #current-content -->
\ No newline at end of file
-<blockquote>\r
-Raw HTML processing should not confuse this with the blockquote below\r
-</blockquote>\r
-<div id="current-content">\r
- <div id="primarycontent" class="hfeed">\r
- <div id="post-">\r
- <div class="page-head">\r
- <h2>Header2</h2>\r
- </div>\r
- <div class="entry-content">\r
- <h3>Header3</h3>\r
- <p>Paragraph</p>\r
- <h3>Header3</h3>\r
- <p>Paragraph</p>\r
- <blockquote>\r
- <p>Paragraph</p>\r
- </blockquote>\r
- <p>Paragraph</p>\r
- <p><a href="/somelink">linktext</a></p>\r
- </div>\r
- </div><!-- #post-ID -->\r
- <!-- add contact form here -->\r
- </div><!-- #primarycontent -->\r
-</div><!-- #current-content -->\r
+<blockquote>
+Raw HTML processing should not confuse this with the blockquote below
+</blockquote>
+<div id="current-content">
+ <div id="primarycontent" class="hfeed">
+ <div id="post-">
+ <div class="page-head">
+ <h2>Header2</h2>
+ </div>
+ <div class="entry-content">
+ <h3>Header3</h3>
+ <p>Paragraph</p>
+ <h3>Header3</h3>
+ <p>Paragraph</p>
+ <blockquote>
+ <p>Paragraph</p>
+ </blockquote>
+ <p>Paragraph</p>
+ <p><a href="/somelink">linktext</a></p>
+ </div>
+ </div><!-- #post-ID -->
+ <!-- add contact form here -->
+ </div><!-- #primarycontent -->
+</div><!-- #current-content -->
-<p>foo</p>\r
-\r
-<ul>\r
-<li>\r
-<p>bar</p>\r
-</li>\r
-<li>\r
-<p>baz</p>\r
-</li>\r
+<p>foo</p>
+
+<ul>
+<li>
+<p>bar</p>
+</li>
+<li>
+<p>baz</p>
+</li>
</ul>
\ No newline at end of file
-<p>foo</p>\r
-<ul>\r
-<li>\r
-<p>bar</p>\r
-</li>\r
-<li>\r
-<p>baz</p>\r
-</li>\r
-</ul>\r
+<p>foo</p>
+<ul>
+<li>
+<p>bar</p>
+</li>
+<li>
+<p>baz</p>
+</li>
+</ul>
-<p>Paragraph</p>\r
-<blockquote>\r
-<p>Block quote\r
-Yep</p>\r
-</blockquote>\r
-<p>Paragraph</p>\r
-<blockquote>\r
-<p>no space\r
-Nope</p>\r
-</blockquote>\r
-<p>Paragraph one</p>\r
-<blockquote>\r
-<p>blockquote\r
-More blockquote.</p>\r
+<p>Paragraph</p>
+<blockquote>
+<p>Block quote
+Yep</p>
+</blockquote>
+<p>Paragraph</p>
+<blockquote>
+<p>no space
+Nope</p>
+</blockquote>
+<p>Paragraph one</p>
+<blockquote>
+<p>blockquote
+More blockquote.</p>
</blockquote>
\ No newline at end of file
-Paragraph\r
-> Block quote\r
-> Yep\r
-\r
-Paragraph\r
->no space\r
->Nope\r
-\r
-Paragraph one\r
-> blockquote\r
-More blockquote.\r
+Paragraph
+> Block quote
+> Yep
+
+Paragraph
+>no space
+>Nope
+
+Paragraph one
+> blockquote
+More blockquote.
-<p>This is a paragraph.</p>\r
-<hr />\r
-<blockquote>\r
-<p>Block quote with horizontal lines.</p>\r
-<hr />\r
-<blockquote>\r
-<p>Double block quote.</p>\r
-<hr />\r
-<p>End of the double block quote.</p>\r
-</blockquote>\r
-<p>A new paragraph.\r
-With multiple lines.\r
-Even a lazy line.</p>\r
-<hr />\r
-<p>The last line.</p>\r
+<p>This is a paragraph.</p>
+<hr />
+<blockquote>
+<p>Block quote with horizontal lines.</p>
+<hr />
+<blockquote>
+<p>Double block quote.</p>
+<hr />
+<p>End of the double block quote.</p>
+</blockquote>
+<p>A new paragraph.
+With multiple lines.
+Even a lazy line.</p>
+<hr />
+<p>The last line.</p>
</blockquote>
\ No newline at end of file
-This is a paragraph.\r
-\r
----\r
-\r
-> Block quote with horizontal lines.\r
-\r
-> ---\r
-\r
-> > Double block quote.\r
-\r
-> > ---\r
-\r
-> > End of the double block quote.\r
-\r
-> A new paragraph.\r
-> With multiple lines.\r
-Even a lazy line.\r
-\r
-> ---\r
-\r
-> The last line.\r
+This is a paragraph.
+
+---
+
+> Block quote with horizontal lines.
+
+> ---
+
+> > Double block quote.
+
+> > ---
+
+> > End of the double block quote.
+
+> A new paragraph.
+> With multiple lines.
+Even a lazy line.
+
+> ---
+
+> The last line.
-<blockquote>\r
-<p>blockquote with no whitespace before <code>></code>.</p>\r
-</blockquote>\r
-<p>foo</p>\r
-<blockquote>\r
-<p>blockquote with one space before the <code>></code>.</p>\r
-</blockquote>\r
-<p>bar</p>\r
-<blockquote>\r
-<p>blockquote with 2 spaces.</p>\r
-</blockquote>\r
-<p>baz</p>\r
-<blockquote>\r
-<p>this has three spaces so its a paragraph.</p>\r
-</blockquote>\r
-<p>blah</p>\r
-<pre><code>> this one had four so it's a code block.\r
-</code></pre>\r
-<blockquote>\r
-<blockquote>\r
-<p>this nested blockquote has 0 on level one and 3 (one after the first <code>></code> + 2 more) on level 2.</p>\r
-<p>and this has 4 on level 2 - another code block.</p>\r
-</blockquote>\r
+<blockquote>
+<p>blockquote with no whitespace before <code>></code>.</p>
+</blockquote>
+<p>foo</p>
+<blockquote>
+<p>blockquote with one space before the <code>></code>.</p>
+</blockquote>
+<p>bar</p>
+<blockquote>
+<p>blockquote with 2 spaces.</p>
+</blockquote>
+<p>baz</p>
+<blockquote>
+<p>this has three spaces so its a paragraph.</p>
+</blockquote>
+<p>blah</p>
+<pre><code>> this one had four so it's a code block.
+</code></pre>
+<blockquote>
+<blockquote>
+<p>this nested blockquote has 0 on level one and 3 (one after the first <code>></code> + 2 more) on level 2.</p>
+<p>and this has 4 on level 2 - another code block.</p>
+</blockquote>
</blockquote>
\ No newline at end of file
-> blockquote with no whitespace before `>`.\r
-\r
-foo\r
-\r
- > blockquote with one space before the `>`.\r
-\r
-bar\r
-\r
- > blockquote with 2 spaces.\r
-\r
-baz\r
-\r
- > this has three spaces so its a paragraph.\r
-\r
-blah\r
-\r
- > this one had four so it's a code block.\r
-\r
-> > this nested blockquote has 0 on level one and 3 (one after the first `>` + 2 more) on level 2.\r
-\r
-> > and this has 4 on level 2 - another code block.\r
+> blockquote with no whitespace before `>`.
+
+foo
+
+ > blockquote with one space before the `>`.
+
+bar
+
+ > blockquote with 2 spaces.
+
+baz
+
+ > this has three spaces so its a paragraph.
+
+blah
+
+ > this one had four so it's a code block.
+
+> > this nested blockquote has 0 on level one and 3 (one after the first `>` + 2 more) on level 2.
+
+> > and this has 4 on level 2 - another code block.
-**bold [link](http://example.com)**\r
+**bold [link](http://example.com)**
-<p>Output:</p>\r
-<pre><code><p>Some of these words <em>are emphasized</em>.\r
-Some of these words <em>are emphasized also</em>.</p>\r
-\r
-<p>Use two asterisks for <strong>strong emphasis</strong>.\r
-Or, if you prefer, <strong>use two underscores instead</strong>.</p>\r
-</code></pre>\r
-<h2>Lists</h2>\r
-<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,\r
-<code>+</code>, and <code>-</code>) as list markers. These three markers are\r
+<p>Output:</p>
+<pre><code><p>Some of these words <em>are emphasized</em>.
+Some of these words <em>are emphasized also</em>.</p>
+
+<p>Use two asterisks for <strong>strong emphasis</strong>.
+Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+</code></pre>
+<h2>Lists</h2>
+<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
+<code>+</code>, and <code>-</code>) as list markers. These three markers are
interchangable; this:</p>
\ No newline at end of file
-Output:\r
-\r
- <p>Some of these words <em>are emphasized</em>.\r
- Some of these words <em>are emphasized also</em>.</p>\r
-\r
- <p>Use two asterisks for <strong>strong emphasis</strong>.\r
- Or, if you prefer, <strong>use two underscores instead</strong>.</p>\r
-\r
-\r
-\r
-## Lists ##\r
-\r
-Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,\r
-`+`, and `-`) as list markers. These three markers are\r
-interchangable; this:\r
-\r
+Output:
+
+ <p>Some of these words <em>are emphasized</em>.
+ Some of these words <em>are emphasized also</em>.</p>
+
+ <p>Use two asterisks for <strong>strong emphasis</strong>.
+ Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+
+
+
+## Lists ##
+
+Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
+`+`, and `-`) as list markers. These three markers are
+interchangable; this:
+
-<p>[x\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
+<p>[x
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
xxx xxx xxx xxx xxx xxx xxx xxx</p>
\ No newline at end of file
-\r
-[x\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
-xxx xxx xxx xxx xxx xxx xxx xxx\r
+
+[x
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
+xxx xxx xxx xxx xxx xxx xxx xxx
-<p><img alt="alt" src="local-img.jpg" />\r
-<img alt="alt" src="local-img.jpg" title="" />\r
-<img alt="alt" src="local-img.jpg" title="normal title" /></p>\r
-<p><img alt="alt" src="local-img.jpg" title="(just title in brackets)" />\r
-<img alt="alt" src="local-img.jpg" title="title with brackets (I think)" /></p>\r
-<p><img alt="alt" src="local-img.jpg" title="(" />\r
-<img alt="alt" src="local-img.jpg" title="(open only" />\r
-<img alt="alt" src="local-img.jpg" title=")" />\r
+<p><img alt="alt" src="local-img.jpg" />
+<img alt="alt" src="local-img.jpg" title="" />
+<img alt="alt" src="local-img.jpg" title="normal title" /></p>
+<p><img alt="alt" src="local-img.jpg" title="(just title in brackets)" />
+<img alt="alt" src="local-img.jpg" title="title with brackets (I think)" /></p>
+<p><img alt="alt" src="local-img.jpg" title="(" />
+<img alt="alt" src="local-img.jpg" title="(open only" />
+<img alt="alt" src="local-img.jpg" title=")" />
<img alt="alt" src="local-img.jpg" title="close only)" /></p>
\ No newline at end of file
-\r
-\r
-\r
-\r
-")\r
-")\r
-\r
-\r
-\r
-")\r
-")\r
-\r
+
+
+
+
+")
+")
+
+
+
+")
+")
+
-<pre><code>print "This is a code block."\r
+<pre><code>print "This is a code block."
</code></pre>
\ No newline at end of file
- print "This is a code block."\r
+ print "This is a code block."
-<p>X<0</p>\r
-<p>X>0</p>\r
-<!-- A comment -->\r
-\r
-<div>as if</div>\r
-\r
-<!-- comment -->\r
-\r
+<p>X<0</p>
+<p>X>0</p>
+<!-- A comment -->
+
+<div>as if</div>
+
+<!-- comment -->
+
<p><strong>no blank line</strong></p>
\ No newline at end of file
-X<0\r
-\r
-X>0\r
-\r
-<!-- A comment -->\r
-\r
-<div>as if</div>\r
-\r
-<!-- comment -->\r
-__no blank line__\r
+X<0
+
+X>0
+
+<!-- A comment -->
+
+<div>as if</div>
+
+<!-- comment -->
+__no blank line__
-<div id="sidebar">\r
-\r
- _foo_\r
-\r
-</div>\r
-\r
-<p>And now in uppercase:</p>\r
-<DIV>\r
-foo\r
+<div id="sidebar">
+
+ _foo_
+
+</div>
+
+<p>And now in uppercase:</p>
+<DIV>
+foo
</DIV>
\ No newline at end of file
-<div id="sidebar">\r
-\r
- _foo_\r
-\r
-</div>\r
-\r
-And now in uppercase:\r
-\r
-<DIV>\r
-foo\r
-</DIV>\r
+<div id="sidebar">
+
+ _foo_
+
+</div>
+
+And now in uppercase:
+
+<DIV>
+foo
+</DIV>
-<h1>Title</h1>\r
-<ul>\r
-<li><em><a href="http://packages.python.org/Markdown/">Python in Markdown</a> by some\r
- great folks</em> - This <em>does</em> work as expected.</li>\r
-<li><em><a href="http://packages.python.org/Markdown/">Python in Markdown</a> by some\r
- great folks</em> - This <em>does</em> work as expected.</li>\r
-<li><a href="http://packages.python.org/Markdown/"><em>Python in Markdown</em></a> by some\r
- great folks - This <em>does</em> work as expected.</li>\r
-<li><a href="http://packages.python.org/Markdown/"><em>Python in Markdown</em></a> <em>by some\r
- great folks</em> - This <em>does</em> work as expected.</li>\r
-</ul>\r
-<p><em><a href="http://packages.python.org/Markdown/">Python in Markdown</a> by some\r
+<h1>Title</h1>
+<ul>
+<li><em><a href="https://pythonhosted.org/Markdown/">Python in Markdown</a> by some
+ great folks</em> - This <em>does</em> work as expected.</li>
+<li><em><a href="https://pythonhosted.org/Markdown/">Python in Markdown</a> by some
+ great folks</em> - This <em>does</em> work as expected.</li>
+<li><a href="https://pythonhosted.org/Markdown/"><em>Python in Markdown</em></a> by some
+ great folks - This <em>does</em> work as expected.</li>
+<li><a href="https://pythonhosted.org/Markdown/"><em>Python in Markdown</em></a> <em>by some
+ great folks</em> - This <em>does</em> work as expected.</li>
+</ul>
+<p><em><a href="https://pythonhosted.org/Markdown/">Python in Markdown</a> by some
great folks</em> - This <em>does</em> work as expected.</p>
\ No newline at end of file
-# Title\r
-\r
- - *[Python in Markdown](http://packages.python.org/Markdown/) by some\r
- great folks* - This *does* work as expected.\r
- - _[Python in Markdown](http://packages.python.org/Markdown/) by some\r
- great folks_ - This *does* work as expected.\r
- - [_Python in Markdown_](http://packages.python.org/Markdown/) by some\r
- great folks - This *does* work as expected.\r
- - [_Python in Markdown_](http://packages.python.org/Markdown/) _by some\r
- great folks_ - This *does* work as expected.\r
-\r
-_[Python in Markdown](http://packages.python.org/Markdown/) by some\r
-great folks_ - This *does* work as expected.\r
-\r
+# Title
+
+ - *[Python in Markdown](https://pythonhosted.org/Markdown/) by some
+ great folks* - This *does* work as expected.
+ - _[Python in Markdown](https://pythonhosted.org/Markdown/) by some
+ great folks_ - This *does* work as expected.
+ - [_Python in Markdown_](https://pythonhosted.org/Markdown/) by some
+ great folks - This *does* work as expected.
+ - [_Python in Markdown_](https://pythonhosted.org/Markdown/) _by some
+ great folks_ - This *does* work as expected.
+
+_[Python in Markdown](https://pythonhosted.org/Markdown/) by some
+great folks_ - This *does* work as expected.
+
-<p>One asterisk: *</p>\r
-<p>One underscore: _</p>\r
-<p>Two asterisks: **</p>\r
-<p>With spaces: * *</p>\r
-<p>Two underscores __</p>\r
-<p>with spaces: _ _</p>\r
-<p>three asterisks: ***</p>\r
-<p>with spaces: * * *</p>\r
-<p>three underscores: ___</p>\r
-<p>with spaces: _ _ _</p>\r
+<p>One asterisk: *</p>
+<p>One underscore: _</p>
+<p>Two asterisks: **</p>
+<p>With spaces: * *</p>
+<p>Two underscores __</p>
+<p>with spaces: _ _</p>
+<p>three asterisks: ***</p>
+<p>with spaces: * * *</p>
+<p>three underscores: ___</p>
+<p>with spaces: _ _ _</p>
<p>One char: <em>a</em></p>
\ No newline at end of file
-One asterisk: *\r
-\r
-One underscore: _\r
-\r
-Two asterisks: **\r
-\r
-With spaces: * *\r
-\r
-Two underscores __\r
-\r
-with spaces: _ _\r
-\r
-three asterisks: ***\r
-\r
-with spaces: * * *\r
-\r
-three underscores: ___\r
-\r
-with spaces: _ _ _\r
-\r
-One char: _a_\r
+One asterisk: *
+
+One underscore: _
+
+Two asterisks: **
+
+With spaces: * *
+
+Two underscores __
+
+with spaces: _ _
+
+three asterisks: ***
+
+with spaces: * * *
+
+three underscores: ___
+
+with spaces: _ _ _
+
+One char: _a_
-<p>asdfasdfadsfasd <a href="mailto:yuri@freewisdom.org">yuri@freewisdom.org</a> or you can say \r
-instead <a href="mailto:yuri@freewisdom.org">yuri@freewisdom.org</a></p>
\ No newline at end of file
+<p>asdfasdfadsfasd <a href="mailto:yuri@freewisdom.org">yuri@freewisdom.org</a> or you can say
+instead <a href="mailto:yuri@freewisdom.org">yuri@freewisdom.org</a></p>
+<p><a href="mailto:bob&sue@example.com">bob&sue@example.com</a></p>
\ No newline at end of file
-\r
-asdfasdfadsfasd <yuri@freewisdom.org> or you can say \r
-instead <mailto:yuri@freewisdom.org>\r
+
+asdfasdfadsfasd <yuri@freewisdom.org> or you can say
+instead <mailto:yuri@freewisdom.org>
+
+<bob&sue@example.com>
-<p><span id="e116142240">[javascript protected email address]</span>\r
-<script type="text/javascript">\r
- var a="gqMjyw7lZCaKk6p0J3uAUYS1.dbIW2hXzDHmiVNotOPRe_Ev@c4Gs58+LBr-F9QTfxn";\r
- var b=a.split("").sort().join("");\r
- var c="F_-F6F_-FMe_";\r
- var d="";\r
- for(var e=0;e<c.length;e++)\r
- d+=b.charAt(a.indexOf(c.charAt(e)));\r
- document\r
- .getElementById("e116142240")\r
- .innerHTML="<a href=\"mailto:"+d+"\">"+d+"</a>";\r
+<p><span id="e116142240">[javascript protected email address]</span>
+<script type="text/javascript">
+ var a="gqMjyw7lZCaKk6p0J3uAUYS1.dbIW2hXzDHmiVNotOPRe_Ev@c4Gs58+LBr-F9QTfxn";
+ var b=a.split("").sort().join("");
+ var c="F_-F6F_-FMe_";
+ var d="";
+ for(var e=0;e<c.length;e++)
+ d+=b.charAt(a.indexOf(c.charAt(e)));
+ document
+ .getElementById("e116142240")
+ .innerHTML="<a href=\"mailto:"+d+"\">"+d+"</a>";
</script></p>
\ No newline at end of file
-<span id="e116142240">[javascript protected email address]</span>\r
-<script type="text/javascript">\r
- var a="gqMjyw7lZCaKk6p0J3uAUYS1.dbIW2hXzDHmiVNotOPRe_Ev@c4Gs58+LBr-F9QTfxn";\r
- var b=a.split("").sort().join("");\r
- var c="F_-F6F_-FMe_";\r
- var d="";\r
- for(var e=0;e<c.length;e++)\r
- d+=b.charAt(a.indexOf(c.charAt(e)));\r
- document\r
- .getElementById("e116142240")\r
- .innerHTML="<a href=\"mailto:"+d+"\">"+d+"</a>";\r
-</script>\r
+<span id="e116142240">[javascript protected email address]</span>
+<script type="text/javascript">
+ var a="gqMjyw7lZCaKk6p0J3uAUYS1.dbIW2hXzDHmiVNotOPRe_Ev@c4Gs58+LBr-F9QTfxn";
+ var b=a.split("").sort().join("");
+ var c="F_-F6F_-FMe_";
+ var d="";
+ for(var e=0;e<c.length;e++)
+ d+=b.charAt(a.indexOf(c.charAt(e)));
+ document
+ .getElementById("e116142240")
+ .innerHTML="<a href=\"mailto:"+d+"\">"+d+"</a>";
+</script>
-<p>Backslashed in links:</p>\r
-<p><a href="/query?q=go:GO\:0000307">q=go:GO\:0000307</a></p>\r
-<p><a href="/query?q=go:GO\:0000308" title="/query?q=go:GO\:0000308">q=go:GO\:0000308</a></p>
\ No newline at end of file
+<p>Backslashed in links:</p>
+<p><a href="/query?q=go:GO\:0000307">q=go:GO\:0000307</a></p>
+<p><a href="/query?q=go:GO\:0000308" title="/query?q=go:GO\:0000308">q=go:GO\:0000308</a></p>
+<p>a \non-escaped char.</p>
\ No newline at end of file
-Backslashed in links:\r
-\r
-[q=go:GO\\:0000307](/query?q=go:GO\\:0000307)\r
-\r
-[q=go:GO\\:0000308][foo]\r
-\r
-[foo]: /query?q=go:GO\:0000308 "/query?q=go:GO\:0000308"\r
+Backslashed in links:
+
+[q=go:GO\\:0000307](/query?q=go:GO\\:0000307)
+
+[q=go:GO\\:0000308][foo]
+
+[foo]: /query?q=go:GO\:0000308 "/query?q=go:GO\:0000308"
+
+a \non-escaped char.
\ No newline at end of file
-<ol>\r
-<li>this starts a list <em>with</em> numbers</li>\r
-<li>this will show as number "2"</li>\r
-<li>this will show as number "3."</li>\r
-<li>any number, +, -, or * will keep the list going.</li>\r
-</ol>\r
-<p>aaaaaaaaaaaaaaa</p>\r
-<ul>\r
-<li>now a normal list</li>\r
-<li>and more</li>\r
+<ol>
+<li>this starts a list <em>with</em> numbers</li>
+<li>this will show as number "2"</li>
+<li>this will show as number "3."</li>
+<li>any number, +, -, or * will keep the list going.</li>
+</ol>
+<p>aaaaaaaaaaaaaaa</p>
+<ul>
+<li>now a normal list</li>
+<li>and more</li>
</ul>
\ No newline at end of file
-1. this starts a list *with* numbers\r
-+ this will show as number "2"\r
-* this will show as number "3."\r
-9. any number, +, -, or * will keep the list going.\r
-\r
-aaaaaaaaaaaaaaa\r
-\r
-- now a normal list\r
-- and more\r
+1. this starts a list *with* numbers
++ this will show as number "2"
+* this will show as number "3."
+9. any number, +, -, or * will keep the list going.
+
+aaaaaaaaaaaaaaa
+
+- now a normal list
+- and more
-<h2>Header</h2>\r
-<h1>Header 2</h1>\r
-<h3>H3</h3>\r
-<h1>H1</h1>\r
+<h2>Header</h2>
+<h1>Header 2</h1>
+<h3>H3</h3>
+<h1>H1</h1>
<h2>H2</h2>
\ No newline at end of file
-Header\r
-------\r
-\r
-Header 2\r
-========\r
-\r
-### H3\r
-\r
-H1\r
-= \r
-\r
-H2\r
---\r
+Header
+------
+
+Header 2
+========
+
+### H3
+
+H1
+=
+
+H2
+--
-<p>a</p>\r
-<pre>\r
-#!/usr/bin/python\r
-hello</pre>\r
-\r
-<p>a</p>\r
-<pre>\r
-!/usr/bin/python\r
-hello</pre>\r
-\r
+<p>a</p>
+<pre>
+#!/usr/bin/python
+hello</pre>
+
+<p>a</p>
+<pre>
+!/usr/bin/python
+hello</pre>
+
<p>a</p>
\ No newline at end of file
-a\r
-\r
-<pre>\r
-#!/usr/bin/python\r
-hello</pre>\r
-\r
-a\r
-\r
-<pre>\r
-!/usr/bin/python\r
-hello</pre>\r
-\r
-a\r
+a
+
+<pre>
+#!/usr/bin/python
+hello</pre>
+
+a
+
+<pre>
+!/usr/bin/python
+hello</pre>
+
+a
-<p>Tight List:</p>\r
-<ul>\r
-<li>\r
-<h1>Header1</h1>\r
-Line 1-2 - <strong>not</strong> a header <em>or</em> paragraph!</li>\r
-<li>\r
-<h1>Header2</h1>\r
-Line 2-2 - not a header or paragraph!</li>\r
-</ul>\r
-<p>Loose List:</p>\r
-<ul>\r
-<li>\r
-<h1>Header1</h1>\r
-<p>Line 1-2 - <em>a</em> paragraph</p>\r
-</li>\r
-<li>\r
-<h1>Header2</h1>\r
-<p>Line 2-2 - a paragraph</p>\r
-</li>\r
+<p>Tight List:</p>
+<ul>
+<li>
+<h1>Header1</h1>
+Line 1-2 - <strong>not</strong> a header <em>or</em> paragraph!</li>
+<li>
+<h1>Header2</h1>
+Line 2-2 - not a header or paragraph!</li>
+</ul>
+<p>Loose List:</p>
+<ul>
+<li>
+<h1>Header1</h1>
+<p>Line 1-2 - <em>a</em> paragraph</p>
+</li>
+<li>
+<h1>Header2</h1>
+<p>Line 2-2 - a paragraph</p>
+</li>
</ul>
\ No newline at end of file
-Tight List:\r
-\r
-* #Header1\r
-Line 1-2 - **not** a header *or* paragraph!\r
-* #Header2\r
-Line 2-2 - not a header or paragraph!\r
-\r
-Loose List:\r
-\r
-* #Header1\r
-Line 1-2 - *a* paragraph\r
-\r
-* #Header2\r
-Line 2-2 - a paragraph\r
+Tight List:
+
+* #Header1
+Line 1-2 - **not** a header *or* paragraph!
+* #Header2
+Line 2-2 - not a header or paragraph!
+
+Loose List:
+
+* #Header1
+Line 1-2 - *a* paragraph
+
+* #Header2
+Line 2-2 - a paragraph
-<h3>Hello world</h3>\r
-<p>Line 2\r
-Line 3</p>\r
-<h1>[Markdown][5]</h1>\r
-<h1><a href="http://some.link.com/">Markdown</a></h1>\r
-<h1>[5]: http://foo.com/</h1>\r
-<h1>Issue #1: Markdown</h1>\r
-<p>Text</p>\r
-<h1>Header</h1>\r
+<h3>Hello world</h3>
+<p>Line 2
+Line 3</p>
+<h1>[Markdown][5]</h1>
+<h1><a href="http://some.link.com/">Markdown</a></h1>
+<h1>[5]: http://foo.com/</h1>
+<h1>Issue #1: Markdown</h1>
+<p>Text</p>
+<h1>Header</h1>
<p>Some other text</p>
\ No newline at end of file
-### Hello world\r
-Line 2\r
-Line 3\r
-\r
-# [Markdown][5] \r
-\r
-# [Markdown](http://some.link.com/)\r
-\r
-# [5]: http://foo.com/\r
-\r
-# Issue #1: Markdown\r
-\r
-Text\r
-# Header\r
-Some other text\r
+### Hello world
+Line 2
+Line 3
+
+# [Markdown][5]
+
+# [Markdown](http://some.link.com/)
+
+# [5]: http://foo.com/
+
+# Issue #1: Markdown
+
+Text
+# Header
+Some other text
-<h1>Header</h1>\r
+<h1>Header</h1>
<p>Next line</p>
\ No newline at end of file
-\r
-#Header\r
-Next line\r
-\r
-\r
+
+#Header
+Next line
+
+
-<p>Here is HTML <!-- **comment** -->\r
+<p>Here is HTML <!-- **comment** -->
and once more <p><!--comment--></p></p>
\ No newline at end of file
-Here is HTML <!-- **comment** -->\r
-and once more <p><!--comment--></p>\r
+Here is HTML <!-- **comment** -->
+and once more <p><!--comment--></p>
-<h1>Block level html</h1>\r
-\r
-<p>Some inline <b>stuff<b>. </p>\r
-<p>Now some <arbitrary>arbitrary tags</arbitrary>.</p>\r
-<div>More block level html.</div>\r
-\r
-<div class="foo bar" title="with 'quoted' text." valueless_attr weirdness="<i>foo</i>">\r
-Html with various attributes.\r
-</div>\r
-\r
-<p>And of course <script>blah</script>.</p>\r
-<p><a href="script>stuff</script">this <script>link</a></p>\r
-<p>Some funky <x\]> inline stuff with markdown escaping syntax.</p>\r
-<p><img scr="foo.png" title="Only one inline element on a line." /></p>\r
-<p>And now a line with only an opening bracket:</p>\r
-<p><</p>\r
-<p>And one with other stuff but no closing bracket:</p>\r
+<h1>Block level html</h1>
+
+<p>Some inline <b>stuff<b>. </p>
+<p>Now some <arbitrary>arbitrary tags</arbitrary>.</p>
+<div>More block level html.</div>
+
+<div class="foo bar" title="with 'quoted' text." valueless_attr weirdness="<i>foo</i>">
+Html with various attributes.
+</div>
+
+<p>And of course <script>blah</script>.</p>
+<p><a href="script>stuff</script">this <script>link</a></p>
+<p>Some funky <x\]> inline stuff with markdown escaping syntax.</p>
+<p><img scr="foo.png" title="Only one inline element on a line." /></p>
+<p>And now a line with only an opening bracket:</p>
+<p><</p>
+<p>And one with other stuff but no closing bracket:</p>
<p>< foo</p>
\ No newline at end of file
-\r
-<h1>Block level html</h1>\r
-\r
-Some inline <b>stuff<b>. \r
-\r
-Now some <arbitrary>arbitrary tags</arbitrary>.\r
-\r
-<div>More block level html.</div>\r
-\r
-<div class="foo bar" title="with 'quoted' text." valueless_attr weirdness="<i>foo</i>">\r
-Html with various attributes.\r
-</div>\r
-\r
-And of course <script>blah</script>.\r
-\r
-[this <script>link](<script>stuff</script>)\r
-\r
-Some funky <x\]> inline stuff with markdown escaping syntax.\r
-\r
-<img scr="foo.png" title="Only one inline element on a line." />\r
-\r
-And now a line with only an opening bracket:\r
-\r
-<\r
-\r
-And one with other stuff but no closing bracket:\r
-\r
-< foo\r
-\r
+
+<h1>Block level html</h1>
+
+Some inline <b>stuff<b>.
+
+Now some <arbitrary>arbitrary tags</arbitrary>.
+
+<div>More block level html.</div>
+
+<div class="foo bar" title="with 'quoted' text." valueless_attr weirdness="<i>foo</i>">
+Html with various attributes.
+</div>
+
+And of course <script>blah</script>.
+
+[this <script>link](<script>stuff</script>)
+
+Some funky <x\]> inline stuff with markdown escaping syntax.
+
+<img scr="foo.png" title="Only one inline element on a line." />
+
+And now a line with only an opening bracket:
+
+<
+
+And one with other stuff but no closing bracket:
+
+< foo
+
-<p><a href="http://src.com/"><em>link!</em></a></p>\r
+<p><a href="http://src.com/"><em>link!</em></a></p>
<p><em><a href="http://www.freewisdom.org">link</a></em></p>
\ No newline at end of file
-[*link!*](http://src.com/)\r
-\r
-*[link](http://www.freewisdom.org)*\r
+[*link!*](http://src.com/)
+
+*[link](http://www.freewisdom.org)*
-<p><img alt="Poster" src="http://humane_man.jpg" title="The most humane man." /></p>
\ No newline at end of file
+<p><img alt="Poster" src="http://humane_man.jpg" title="The most humane man." /></p>
+<p><img alt="Poster" src="http://humane_man.jpg" title="The most humane man." /></p>
+<p><img alt="Blank" src="" /></p>
\ No newline at end of file
-\r
-\r
+
+
+
+![Poster][]
+
+[Poster]:http://humane_man.jpg "The most humane man."
+
+![Blank]()
\ No newline at end of file
-\r
-\r
-[](path/to/image.png)\r
+
+
+[](path/to/image.png)
-<ins>Hello, fellow developer</ins> this ins should be wrapped in a p.\r
+<ins>Hello, fellow developer</ins> this ins should be wrapped in a p.
-<a href="stuff"> __ok__? </a>\r
+<a href="stuff"> __ok__? </a>
-<h1>パイソン (Python)</h1>\r
-<p><strong>Python</strong>(パイソン)は、<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> によって作られたオープンソースのオブジェクト指向スクリプト言語。<a href="http://ja.wikipedia.org/wiki/Perl">Perl</a>とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)</p>\r
-<h2>概要</h2>\r
-<p>プログラミング言語 Python は初心者から専門家まで幅広いユーザ層を獲得している。利用目的は汎用で、方向性としてはJavaに近い。ただし、最初からネットワーク利用をメインとして考えられているJavaよりセキュリティについてはやや寛大である。多くのプラットフォームをサポートしており(⇒<a href="#somelink">動作するプラットフォーム</a>)、豊富なライブラリがあることから、産業界でも利用が増えつつある。また、Pythonは純粋なプログラミング言語のほかにも、多くの異なる言語で書かれたモジュールをまとめる糊言語のひとつとして位置づけることができる。実際Pythonは多くの商用アプリケーションでスクリプト言語として採用されている(⇒Pythonを使っている製品あるいはソフトウェアの一覧)。豊富なドキュメントをもち、Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。</p>\r
-<p>Python は基本的にインタプリタ上で実行されることを念頭において設計されており、以下のような特徴をもっている:</p>\r
-<ul>\r
-<li>動的な型付け。</li>\r
-<li>オブジェクトのメンバに対するアクセスが制限されていない。(属性や専用のメソッドフックを実装することによって制限は可能。)</li>\r
-<li>モジュール、クラス、オブジェクト等の言語の要素が内部からアクセス可能であり、リフレクションを利用した記述が可能。</li>\r
-</ul>\r
+<h1>パイソン (Python)</h1>
+<p><strong>Python</strong>(パイソン)は、<a href="http://en.wikipedia.org/wiki/Guido_van_Rossum">Guido van Rossum</a> によって作られたオープンソースのオブジェクト指向スクリプト言語。<a href="http://ja.wikipedia.org/wiki/Perl">Perl</a>とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)</p>
+<h2>概要</h2>
+<p>プログラミング言語 Python は初心者から専門家まで幅広いユーザ層を獲得している。利用目的は汎用で、方向性としてはJavaに近い。ただし、最初からネットワーク利用をメインとして考えられているJavaよりセキュリティについてはやや寛大である。多くのプラットフォームをサポートしており(⇒<a href="#somelink">動作するプラットフォーム</a>)、豊富なライブラリがあることから、産業界でも利用が増えつつある。また、Pythonは純粋なプログラミング言語のほかにも、多くの異なる言語で書かれたモジュールをまとめる糊言語のひとつとして位置づけることができる。実際Pythonは多くの商用アプリケーションでスクリプト言語として採用されている(⇒Pythonを使っている製品あるいはソフトウェアの一覧)。豊富なドキュメントをもち、Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。</p>
+<p>Python は基本的にインタプリタ上で実行されることを念頭において設計されており、以下のような特徴をもっている:</p>
+<ul>
+<li>動的な型付け。</li>
+<li>オブジェクトのメンバに対するアクセスが制限されていない。(属性や専用のメソッドフックを実装することによって制限は可能。)</li>
+<li>モジュール、クラス、オブジェクト等の言語の要素が内部からアクセス可能であり、リフレクションを利用した記述が可能。</li>
+</ul>
<p>また、Pythonではインデントによりブロックを指定する構文を採用している(⇒<a href="#jklj">オフサイドルール</a>)。この構文はPythonに慣れたユーザからは称賛をもって受け入れられているが、他の言語のユーザからは批判も多い。このほかにも、大きすぎる実行ファイルや、Javaに比べて遅い処理速度などが欠点として指摘されている。しかし <strong>プロトタイピング</strong> の際にはこれらの点はさして問題とはならないことから、研究開発部門では頻繁に利用されている。</p>
\ No newline at end of file
-パイソン (Python)\r
-=======\r
-\r
-**Python**(パイソン)は、[Guido van Rossum](http://en.wikipedia.org/wiki/Guido_van_Rossum) によって作られたオープンソースのオブジェクト指向スクリプト言語。[Perl](http://ja.wikipedia.org/wiki/Perl)とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)\r
-\r
-## 概要\r
-プログラミング言語 Python は初心者から専門家まで幅広いユーザ層を獲得している。利用目的は汎用で、方向性としてはJavaに近い。ただし、最初からネットワーク利用をメインとして考えられているJavaよりセキュリティについてはやや寛大である。多くのプラットフォームをサポートしており(⇒[動作するプラットフォーム](#somelink))、豊富なライブラリがあることから、産業界でも利用が増えつつある。また、Pythonは純粋なプログラミング言語のほかにも、多くの異なる言語で書かれたモジュールをまとめる糊言語のひとつとして位置づけることができる。実際Pythonは多くの商用アプリケーションでスクリプト言語として採用されている(⇒Pythonを使っている製品あるいはソフトウェアの一覧)。豊富なドキュメントをもち、Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。\r
-\r
-Python は基本的にインタプリタ上で実行されることを念頭において設計されており、以下のような特徴をもっている:\r
-\r
-* 動的な型付け。\r
-* オブジェクトのメンバに対するアクセスが制限されていない。(属性や専用のメソッドフックを実装することによって制限は可能。)\r
-* モジュール、クラス、オブジェクト等の言語の要素が内部からアクセス可能であり、リフレクションを利用した記述が可能。\r
-\r
-また、Pythonではインデントによりブロックを指定する構文を採用している(⇒[オフサイドルール](#jklj))。この構文はPythonに慣れたユーザからは称賛をもって受け入れられているが、他の言語のユーザからは批判も多い。このほかにも、大きすぎる実行ファイルや、Javaに比べて遅い処理速度などが欠点として指摘されている。しかし **プロトタイピング** の際にはこれらの点はさして問題とはならないことから、研究開発部門では頻繁に利用されている。\r
+パイソン (Python)
+=======
+
+**Python**(パイソン)は、[Guido van Rossum](http://en.wikipedia.org/wiki/Guido_van_Rossum) によって作られたオープンソースのオブジェクト指向スクリプト言語。[Perl](http://ja.wikipedia.org/wiki/Perl)とともに欧米で広く普及している。イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』にちなんで名付けられた。 (Pythonには、爬虫類のニシキヘビの意味があり、Python言語のマスコットやアイコンとして使われることがある。)
+
+## 概要
+プログラミング言語 Python は初心者から専門家まで幅広いユーザ層を獲得している。利用目的は汎用で、方向性としてはJavaに近い。ただし、最初からネットワーク利用をメインとして考えられているJavaよりセキュリティについてはやや寛大である。多くのプラットフォームをサポートしており(⇒[動作するプラットフォーム](#somelink))、豊富なライブラリがあることから、産業界でも利用が増えつつある。また、Pythonは純粋なプログラミング言語のほかにも、多くの異なる言語で書かれたモジュールをまとめる糊言語のひとつとして位置づけることができる。実際Pythonは多くの商用アプリケーションでスクリプト言語として採用されている(⇒Pythonを使っている製品あるいはソフトウェアの一覧)。豊富なドキュメントをもち、Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。
+
+Python は基本的にインタプリタ上で実行されることを念頭において設計されており、以下のような特徴をもっている:
+
+* 動的な型付け。
+* オブジェクトのメンバに対するアクセスが制限されていない。(属性や専用のメソッドフックを実装することによって制限は可能。)
+* モジュール、クラス、オブジェクト等の言語の要素が内部からアクセス可能であり、リフレクションを利用した記述が可能。
+
+また、Pythonではインデントによりブロックを指定する構文を採用している(⇒[オフサイドルール](#jklj))。この構文はPythonに慣れたユーザからは称賛をもって受け入れられているが、他の言語のユーザからは批判も多い。このほかにも、大きすぎる実行ファイルや、Javaに比べて遅い処理速度などが欠点として指摘されている。しかし **プロトタイピング** の際にはこれらの点はさして問題とはならないことから、研究開発部門では頻繁に利用されている。
-<blockquote>\r
-<p>Line one of lazy block quote.\r
-Line two of lazy block quote.</p>\r
-<p>Line one of paragraph two.\r
-Line two of paragraph two.</p>\r
+<blockquote>
+<p>Line one of lazy block quote.
+Line two of lazy block quote.</p>
+<p>Line one of paragraph two.
+Line two of paragraph two.</p>
</blockquote>
\ No newline at end of file
-> Line one of lazy block quote.\r
-Line two of lazy block quote.\r
-\r
-> Line one of paragraph two.\r
-Line two of paragraph two.\r
+> Line one of lazy block quote.
+Line two of lazy block quote.
+
+> Line one of paragraph two.
+Line two of paragraph two.
-[ZIP archives](http://en.wikipedia.org/wiki/ZIP_(file_format) "ZIP (file format) - Wikipedia, the free encyclopedia")\r
+[ZIP archives](http://en.wikipedia.org/wiki/ZIP_(file_format) "ZIP (file format) - Wikipedia, the free encyclopedia")
-<ul>\r
-<li>A multi-paragraph list, \r
-unindented.</li>\r
-</ul>\r
-<p>Simple tight list</p>\r
-<ul>\r
-<li>Uno</li>\r
-<li>Due</li>\r
-<li>Tri</li>\r
-</ul>\r
-<p>A singleton tight list:</p>\r
-<ul>\r
-<li>Uno</li>\r
-</ul>\r
-<p>A lose list:</p>\r
-<ul>\r
-<li>\r
-<p>One</p>\r
-</li>\r
-<li>\r
-<p>Two</p>\r
-</li>\r
-<li>\r
-<p>Three</p>\r
-</li>\r
-</ul>\r
-<p>A lose list with paragraphs</p>\r
-<ul>\r
-<li>\r
-<p>One one one one</p>\r
-<p>one one one one</p>\r
-</li>\r
-<li>\r
-<p>Two two two two</p>\r
-</li>\r
+<ul>
+<li>A multi-paragraph list,
+unindented.</li>
+</ul>
+<p>Simple tight list</p>
+<ul>
+<li>Uno</li>
+<li>Due</li>
+<li>Tri</li>
+</ul>
+<p>A singleton tight list:</p>
+<ul>
+<li>Uno</li>
+</ul>
+<p>A lose list:</p>
+<ul>
+<li>
+<p>One</p>
+</li>
+<li>
+<p>Two</p>
+</li>
+<li>
+<p>Three</p>
+</li>
+</ul>
+<p>A lose list with paragraphs</p>
+<ul>
+<li>
+<p>One one one one</p>
+<p>one one one one</p>
+</li>
+<li>
+<p>Two two two two</p>
+</li>
</ul>
\ No newline at end of file
-\r
-* A multi-paragraph list, \r
-unindented.\r
-\r
-\r
-\r
-Simple tight list\r
-\r
-* Uno\r
-* Due\r
-* Tri\r
-\r
-A singleton tight list:\r
-\r
-* Uno\r
-\r
-A lose list:\r
-\r
-* One\r
-\r
-* Two\r
-\r
-* Three\r
-\r
-A lose list with paragraphs\r
-\r
-* One one one one\r
-\r
- one one one one\r
-\r
-* Two two two two\r
+
+* A multi-paragraph list,
+unindented.
+
+
+
+Simple tight list
+
+* Uno
+* Due
+* Tri
+
+A singleton tight list:
+
+* Uno
+
+A lose list:
+
+* One
+
+* Two
+
+* Three
+
+A lose list with paragraphs
+
+* One one one one
+
+ one one one one
+
+* Two two two two
-<ul>\r
-<li>blah blah blah\r
-sdf asdf asdf asdf asdf\r
-asda asdf asdfasd</li>\r
+<ul>
+<li>blah blah blah
+sdf asdf asdf asdf asdf
+asda asdf asdfasd</li>
</ul>
\ No newline at end of file
-* blah blah blah\r
-sdf asdf asdf asdf asdf\r
-asda asdf asdfasd\r
+* blah blah blah
+sdf asdf asdf asdf asdf
+asda asdf asdfasd
-<ul>\r
-<li>blah blah blah\r
- sdf asdf asdf asdf asdf\r
- asda asdf asdfasd</li>\r
+<ul>
+<li>blah blah blah
+ sdf asdf asdf asdf asdf
+ asda asdf asdfasd</li>
</ul>
\ No newline at end of file
-* blah blah blah\r
- sdf asdf asdf asdf asdf\r
- asda asdf asdfasd\r
+* blah blah blah
+ sdf asdf asdf asdf asdf
+ asda asdf asdfasd
-<ul>\r
-<li>item1</li>\r
-<li>item2<ol>\r
-<li>Number 1</li>\r
-<li>Number 2</li>\r
-</ol>\r
-</li>\r
+<ul>
+<li>item1</li>
+<li>item2<ol>
+<li>Number 1</li>
+<li>Number 2</li>
+</ol>
+</li>
</ul>
\ No newline at end of file
-\r
-* item1\r
-* item2\r
- 1. Number 1\r
- 2. Number 2\r
+
+* item1
+* item2
+ 1. Number 1
+ 2. Number 2
-<blockquote>\r
-<p>This is a test of a block quote\r
-With just two lines</p>\r
-</blockquote>\r
-<p>A paragraph</p>\r
-<blockquote>\r
-<p>This is a more difficult case\r
-With a list item inside the quote</p>\r
-<ul>\r
-<li>Alpha</li>\r
-<li>Beta\r
-Etc.</li>\r
-</ul>\r
+<blockquote>
+<p>This is a test of a block quote
+With just two lines</p>
+</blockquote>
+<p>A paragraph</p>
+<blockquote>
+<p>This is a more difficult case
+With a list item inside the quote</p>
+<ul>
+<li>Alpha</li>
+<li>Beta
+Etc.</li>
+</ul>
</blockquote>
\ No newline at end of file
-> This is a test of a block quote\r
-> With just two lines\r
-\r
-A paragraph\r
-\r
-> This is a more difficult case\r
-> With a list item inside the quote\r
->\r
-> * Alpha\r
-> * Beta\r
-> Etc.\r
-\r
+> This is a test of a block quote
+> With just two lines
+
+A paragraph
+
+> This is a more difficult case
+> With a list item inside the quote
+>
+> * Alpha
+> * Beta
+> Etc.
+
-<p>Test five or more spaces as start of list:</p>\r
-<ul>\r
-<li>five spaces</li>\r
-</ul>\r
-<p>not first item:</p>\r
-<ul>\r
-<li>one space</li>\r
-<li>five spaces</li>\r
-</ul>\r
-<p>loose list:</p>\r
-<ul>\r
-<li>\r
-<p>one space</p>\r
-</li>\r
-<li>\r
-<p>five spaces</p>\r
-</li>\r
+<p>Test five or more spaces as start of list:</p>
+<ul>
+<li>five spaces</li>
+</ul>
+<p>not first item:</p>
+<ul>
+<li>one space</li>
+<li>five spaces</li>
+</ul>
+<p>loose list:</p>
+<ul>
+<li>
+<p>one space</p>
+</li>
+<li>
+<p>five spaces</p>
+</li>
</ul>
\ No newline at end of file
-Test five or more spaces as start of list:\r
-\r
-* five spaces\r
-\r
-not first item:\r
-\r
-* one space\r
-* five spaces\r
-\r
-loose list:\r
-\r
-* one space\r
-\r
-* five spaces\r
+Test five or more spaces as start of list:
+
+* five spaces
+
+not first item:
+
+* one space
+* five spaces
+
+loose list:
+
+* one space
+
+* five spaces
-<ul>\r
-<li>item 1</li>\r
-<li>\r
-<ul>\r
-<li>item 2-1</li>\r
-<li>item 2-2</li>\r
-<li>item 2-3</li>\r
-<li>item 2-4</li>\r
-</ul>\r
-</li>\r
-<li>item 3</li>\r
-<li>\r
-<ul>\r
-<li>\r
-<p>item 4-1</p>\r
-</li>\r
-<li>\r
-<p>item 4-2</p>\r
-</li>\r
-<li>\r
-<p>item 4-3</p>\r
-</li>\r
-<li>\r
-<p>item 4-4</p>\r
-</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<h2>same as above, different spacing</h2>\r
-<ul>\r
-<li>item 1</li>\r
-<li>\r
-<ul>\r
-<li>item 2-1</li>\r
-<li>item 2-2</li>\r
-</ul>\r
-</li>\r
-<li>item 3</li>\r
-<li>\r
-<ul>\r
-<li>\r
-<p>item 4-1</p>\r
-</li>\r
-<li>\r
-<p>item 4-2</p>\r
-</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<h2>only 1 item in nested list ##</h2>\r
-<ul>\r
-<li>item 1</li>\r
-<li>\r
-<ul>\r
-<li>item 2-1</li>\r
-</ul>\r
-</li>\r
-<li>item 3</li>\r
-<li>\r
-<ul>\r
-<li>item 4-1</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-<h2>Something ludicrous ##</h2>\r
-<ul>\r
-<li>item 1</li>\r
-<li>\r
-<ul>\r
-<li>item 2-1</li>\r
-<li>item 2-2</li>\r
-<li>\r
-<ul>\r
-<li>item 2-2-1</li>\r
-<li>item 2-2-2</li>\r
-</ul>\r
-</li>\r
-<li>item 2-3</li>\r
-</ul>\r
-</li>\r
-<li>item 3</li>\r
-<li>\r
-<ul>\r
-<li>\r
-<p>item 4-1</p>\r
-</li>\r
-<li>\r
-<ul>\r
-<li>item 4-1-1</li>\r
-<li>item 4-1-2</li>\r
-</ul>\r
-</li>\r
-<li>\r
-<p>item 4-2</p>\r
-</li>\r
-</ul>\r
-</li>\r
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+<li>item 2-2</li>
+<li>item 2-3</li>
+<li>item 2-4</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>
+<p>item 4-1</p>
+</li>
+<li>
+<p>item 4-2</p>
+</li>
+<li>
+<p>item 4-3</p>
+</li>
+<li>
+<p>item 4-4</p>
+</li>
+</ul>
+</li>
+</ul>
+<h2>same as above, different spacing</h2>
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+<li>item 2-2</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>
+<p>item 4-1</p>
+</li>
+<li>
+<p>item 4-2</p>
+</li>
+</ul>
+</li>
+</ul>
+<h2>only 1 item in nested list ##</h2>
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>item 4-1</li>
+</ul>
+</li>
+</ul>
+<h2>Something ludicrous ##</h2>
+<ul>
+<li>item 1</li>
+<li>
+<ul>
+<li>item 2-1</li>
+<li>item 2-2</li>
+<li>
+<ul>
+<li>item 2-2-1</li>
+<li>item 2-2-2</li>
+</ul>
+</li>
+<li>item 2-3</li>
+</ul>
+</li>
+<li>item 3</li>
+<li>
+<ul>
+<li>
+<p>item 4-1</p>
+</li>
+<li>
+<ul>
+<li>item 4-1-1</li>
+<li>item 4-1-2</li>
+</ul>
+</li>
+<li>
+<p>item 4-2</p>
+</li>
+</ul>
+</li>
</ul>
\ No newline at end of file
-* item 1\r
-* * item 2-1\r
- * item 2-2\r
- * item 2-3\r
- * item 2-4\r
-* item 3\r
-* * item 4-1\r
-\r
- * item 4-2\r
-\r
- * item 4-3\r
-\r
- * item 4-4\r
-\r
-## same as above, different spacing\r
-* item 1\r
-* * item 2-1\r
- * item 2-2\r
-* item 3\r
-* * item 4-1\r
-\r
- * item 4-2\r
-\r
-## only 1 item in nested list ## \r
-* item 1\r
-* * item 2-1\r
-* item 3\r
-* * item 4-1\r
-\r
-## Something ludicrous ## \r
-* item 1\r
-* * item 2-1\r
- * item 2-2\r
- * * item 2-2-1\r
- * item 2-2-2\r
- * item 2-3\r
-* item 3\r
-* * item 4-1\r
-\r
- * * item 4-1-1\r
- * item 4-1-2\r
-\r
- * item 4-2\r
-\r
+* item 1
+* * item 2-1
+ * item 2-2
+ * item 2-3
+ * item 2-4
+* item 3
+* * item 4-1
+
+ * item 4-2
+
+ * item 4-3
+
+ * item 4-4
+
+## same as above, different spacing
+* item 1
+* * item 2-1
+ * item 2-2
+* item 3
+* * item 4-1
+
+ * item 4-2
+
+## only 1 item in nested list ##
+* item 1
+* * item 2-1
+* item 3
+* * item 4-1
+
+## Something ludicrous ##
+* item 1
+* * item 2-1
+ * item 2-2
+ * * item 2-2-1
+ * item 2-2-2
+ * item 2-3
+* item 3
+* * item 4-1
+
+ * * item 4-1-1
+ * item 4-1-2
+
+ * item 4-2
+
-<h1>Lists with blockquotes</h1>\r
-<ol>\r
-<li>\r
-<blockquote>\r
-<p>Four-score and seven years ago...</p>\r
-</blockquote>\r
-</li>\r
-<li>\r
-<blockquote>\r
-<p>We have nothing to fear...</p>\r
-</blockquote>\r
-</li>\r
-<li>\r
-<blockquote>\r
-<p>This is it...</p>\r
-</blockquote>\r
-</li>\r
-</ol>\r
-<h1>Multi-line blockquotes</h1>\r
-<ul>\r
-<li>\r
-<blockquote>\r
-<p>Four-score and sever years ago\r
-our fathers brought forth</p>\r
-</blockquote>\r
-</li>\r
-<li>\r
-<blockquote>\r
-<p>We have nothing to fear\r
-but fear itself</p>\r
-</blockquote>\r
-</li>\r
-<li>\r
-<blockquote>\r
-<p>This is it\r
-as far as I'm concerned</p>\r
-</blockquote>\r
-</li>\r
+<h1>Lists with blockquotes</h1>
+<ol>
+<li>
+<blockquote>
+<p>Four-score and seven years ago...</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>We have nothing to fear...</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>This is it...</p>
+</blockquote>
+</li>
+</ol>
+<h1>Multi-line blockquotes</h1>
+<ul>
+<li>
+<blockquote>
+<p>Four-score and sever years ago
+our fathers brought forth</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>We have nothing to fear
+but fear itself</p>
+</blockquote>
+</li>
+<li>
+<blockquote>
+<p>This is it
+as far as I'm concerned</p>
+</blockquote>
+</li>
</ul>
\ No newline at end of file
-# Lists with blockquotes\r
-1. > Four-score and seven years ago...\r
-\r
-2. > We have nothing to fear...\r
-\r
-3. > This is it...\r
-\r
-# Multi-line blockquotes\r
-* > Four-score and sever years ago\r
- > our fathers brought forth\r
-\r
-* > We have nothing to fear\r
- > but fear itself\r
-\r
-* > This is it\r
- > as far as I'm concerned\r
+# Lists with blockquotes
+1. > Four-score and seven years ago...
+
+2. > We have nothing to fear...
+
+3. > This is it...
+
+# Multi-line blockquotes
+* > Four-score and sever years ago
+ > our fathers brought forth
+
+* > We have nothing to fear
+ > but fear itself
+
+* > This is it
+ > as far as I'm concerned
-<p>\r
-\r
-_foo_\r
-\r
-</p>\r
-\r
-<p>\r
-_foo_\r
-</p>\r
-\r
-<p>_foo_</p>\r
-\r
-<p>\r
-\r
-_foo_\r
-</p>\r
-\r
-<p>\r
-_foo_\r
-\r
+<p>
+
+_foo_
+
+</p>
+
+<p>
+_foo_
+</p>
+
+<p>_foo_</p>
+
+<p>
+
+_foo_
+</p>
+
+<p>
+_foo_
+
</p>
\ No newline at end of file
-<p>\r
-\r
-_foo_\r
-\r
-</p>\r
-\r
-<p>\r
-_foo_\r
-</p>\r
-\r
-<p>_foo_</p>\r
-\r
-<p>\r
-\r
-_foo_\r
-</p>\r
-\r
-<p>\r
-_foo_\r
-\r
-</p>\r
+<p>
+
+_foo_
+
+</p>
+
+<p>
+_foo_
+</p>
+
+<p>_foo_</p>
+
+<p>
+
+_foo_
+</p>
+
+<p>
+_foo_
+
+</p>
-<p>Some text</p>\r
-\r
-<div>some more text</div>\r
-\r
-<p>and a bit more</p>\r
-<p>And this output</p>\r
-\r
-<p><em>Compatible with PHP Markdown Extra 1.2.2 and Markdown.pl1.0.2b8:</em></p>\r
-<!-- comment -->\r
-\r
-<p><div>text</div><br /></p>\r
-\r
-<p><br /></p>\r
+<p>Some text</p>
+
+<div>some more text</div>
+
+<p>and a bit more</p>
+<p>And this output</p>
+
+<p><em>Compatible with PHP Markdown Extra 1.2.2 and Markdown.pl1.0.2b8:</em></p>
+<!-- comment -->
+
+<p><div>text</div><br /></p>
+
+<p><br /></p>
<p>Should be in p</p>
\ No newline at end of file
-<p>Some text</p><div>some more text</div>\r
-\r
-and a bit more\r
-\r
-<p>And this output</p> *Compatible with PHP Markdown Extra 1.2.2 and Markdown.pl1.0.2b8:*\r
-\r
-<!-- comment --><p><div>text</div><br /></p><br />\r
-\r
-Should be in p\r
+<p>Some text</p><div>some more text</div>
+
+and a bit more
+
+<p>And this output</p> *Compatible with PHP Markdown Extra 1.2.2 and Markdown.pl1.0.2b8:*
+
+<!-- comment --><p><div>text</div><br /></p><br />
+
+Should be in p
-This is a [missing link][empty] and a [valid][link] and [missing][again].\r
-\r
-[link]: http://example.com\r
-\r
+This is a [missing link][empty] and a [valid][link] and [missing][again].
+
+[link]: http://example.com
+
-<!asd@asdfd.com>\r
-\r
-<p>Foo</p>\r
-<p><asd!@asdfd.com></p>\r
-<p>Bar</p>\r
-<!--asd@asdfd.com>\r
-\r
+<!asd@asdfd.com>
+
+<p>Foo</p>
+<p><asd!@asdfd.com></p>
+<p>Bar</p>
+<!--asd@asdfd.com>
+
Still in unclosed comment
\ No newline at end of file
-<!asd@asdfd.com>\r
-\r
-Foo\r
-\r
-<asd!@asdfd.com>\r
-\r
-Bar\r
-\r
-<!--asd@asdfd.com>\r
-\r
-Still in unclosed comment\r
+<!asd@asdfd.com>
+
+Foo
+
+<asd!@asdfd.com>
+
+Bar
+
+<!--asd@asdfd.com>
+
+Still in unclosed comment
-<div>\r
-\r
-asdf asdfasd\r
-\r
-</div>\r
-\r
-<div>\r
-\r
-foo bar\r
-\r
-</div>\r
-\r
+<div>
+
+asdf asdfasd
+
+</div>
+
+<div>
+
+foo bar
+
+</div>
+
<p>No blank line.</p>
\ No newline at end of file
-\r
-<div>\r
-\r
-asdf asdfasd\r
-\r
-</div>\r
-\r
-<div>\r
-\r
-foo bar\r
-\r
-</div>\r
-No blank line.\r
+
+<div>
+
+asdf asdfasd
+
+</div>
+
+<div>
+
+foo bar
+
+</div>
+No blank line.
-<blockquote>\r
-<p>This is line one of paragraph one\r
-This is line two of paragraph one</p>\r
-<p>This is line one of paragraph two</p>\r
-<p>This is another blockquote.</p>\r
+<blockquote>
+<p>This is line one of paragraph one
+This is line two of paragraph one</p>
+<p>This is line one of paragraph two</p>
+<p>This is another blockquote.</p>
</blockquote>
\ No newline at end of file
-> This is line one of paragraph one\r
-> This is line two of paragraph one\r
-\r
-> This is line one of paragraph two\r
-\r
-\r
-\r
-> This is another blockquote.\r
+> This is line one of paragraph one
+> This is line two of paragraph one
+
+> This is line one of paragraph two
+
+
+
+> This is another blockquote.
-<h1 id="inthebeginning">Header </h1>\r
-<p>Now, let's try something <em class="special">inline</em>, to see if it works</p>\r
-<p>Blah blah blah <a href="http://www.slashdot.org">http://www.slashdot.org</a></p>\r
-<ul>\r
-<li>Basic list</li>\r
-<li>Basic list 2</li>\r
-</ul>\r
-<p>addss</p>\r
-<ul>\r
-<li>Lazy list</li>\r
-</ul>\r
-<p>An <a href="http://example.com" title="Title">example</a> (oops)</p>\r
-<p>Now, let's use a footnote[^1]. Not bad, eh?\r
-Let's continue.</p>\r
-<p>[^1]: Here is the text of the footnote\r
- continued on several lines.\r
- some more of the footnote, etc.</p>\r
-<pre><code>Actually, another paragraph too.\r
-</code></pre>\r
+<h1 id="inthebeginning">Header </h1>
+<p>Now, let's try something <em class="special">inline</em>, to see if it works</p>
+<p>Blah blah blah <a href="http://www.slashdot.org">http://www.slashdot.org</a></p>
+<ul>
+<li>Basic list</li>
+<li>Basic list 2</li>
+</ul>
+<p>addss</p>
+<ul>
+<li>Lazy list</li>
+</ul>
+<p>An <a href="http://example.com" title="Title">example</a> (oops)</p>
+<p>Now, let's use a footnote[^1]. Not bad, eh?
+Let's continue.</p>
+<p>[^1]: Here is the text of the footnote
+ continued on several lines.
+ some more of the footnote, etc.</p>
+<pre><code>Actually, another paragraph too.
+</code></pre>
<p>And then there is a little bit of text.</p>
\ No newline at end of file
-\r
-# Header {@id=inthebeginning}\r
-\r
-Now, let's try something *inline{@class=special}*, to see if it works\r
-\r
-\r
-Blah blah blah <http://www.slashdot.org>\r
-\r
-* Basic list\r
-* Basic list 2\r
-\r
-addss\r
-\r
- * Lazy list\r
-\r
-An [example][ref] (oops)\r
-\r
- [ref]: http://example.com "Title" \r
-\r
-\r
-Now, let's use a footnote[^1]. Not bad, eh?\r
-Let's continue.\r
-\r
- [^1]: Here is the text of the footnote\r
- continued on several lines.\r
- some more of the footnote, etc.\r
-\r
- Actually, another paragraph too.\r
-\r
-And then there is a little bit of text.\r
-\r
-\r
+
+# Header {@id=inthebeginning}
+
+Now, let's try something *inline{@class=special}*, to see if it works
+
+
+Blah blah blah <http://www.slashdot.org>
+
+* Basic list
+* Basic list 2
+
+addss
+
+ * Lazy list
+
+An [example][ref] (oops)
+
+ [ref]: http://example.com "Title"
+
+
+Now, let's use a footnote[^1]. Not bad, eh?
+Let's continue.
+
+ [^1]: Here is the text of the footnote
+ continued on several lines.
+ some more of the footnote, etc.
+
+ Actually, another paragraph too.
+
+And then there is a little bit of text.
+
+
-<!--\r
-\r
-foo\r
-\r
--->\r
-\r
-<p>\r
-\r
-foo\r
-\r
-</p>\r
-\r
-<div>\r
-\r
-foo\r
-\r
-</div>\r
-\r
-<!-- foo\r
-\r
--->\r
-\r
-<!-- <tag>\r
-\r
--->\r
-\r
-<!--\r
-\r
-foo -->\r
-\r
-<!--\r
-\r
-<tag> -->\r
-\r
-<!-- unclosed comment\r
-\r
+<!--
+
+foo
+
+-->
+
+<p>
+
+foo
+
+</p>
+
+<div>
+
+foo
+
+</div>
+
+<!-- foo
+
+-->
+
+<!-- <tag>
+
+-->
+
+<!--
+
+foo -->
+
+<!--
+
+<tag> -->
+
+<!-- unclosed comment
+
__Still__ a comment (browsers see it that way)
\ No newline at end of file
-<!--\r
-\r
-foo\r
-\r
---> \r
-\r
-<p>\r
-\r
-foo\r
-\r
-</p>\r
-\r
-\r
-<div>\r
-\r
-foo\r
-\r
-</div>\r
-\r
-<!-- foo\r
-\r
--->\r
-\r
-<!-- <tag>\r
-\r
--->\r
-\r
-<!--\r
-\r
-foo -->\r
-\r
-<!--\r
-\r
-<tag> -->\r
-\r
-<!-- unclosed comment\r
-\r
-__Still__ a comment (browsers see it that way)\r
+<!--
+
+foo
+
+-->
+
+<p>
+
+foo
+
+</p>
+
+
+<div>
+
+foo
+
+</div>
+
+<!-- foo
+
+-->
+
+<!-- <tag>
+
+-->
+
+<!--
+
+foo -->
+
+<!--
+
+<tag> -->
+
+<!-- unclosed comment
+
+__Still__ a comment (browsers see it that way)
-<ul>\r
-<li>\r
-<p>item 1</p>\r
-<p>paragraph 2</p>\r
-</li>\r
-<li>\r
-<p>item 2</p>\r
-<ul>\r
-<li>item 2-1</li>\r
-<li>\r
-<p>item 2-2</p>\r
-<ul>\r
-<li>item 2-2-1</li>\r
-</ul>\r
-</li>\r
-<li>\r
-<p>item 2-3</p>\r
-<ul>\r
-<li>item 2-3-1</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</li>\r
-<li>\r
-<p>item 3</p>\r
-</li>\r
-</ul>\r
-<p>plain text</p>\r
-<ul>\r
-<li>item 1<ul>\r
-<li>item 1-1</li>\r
-<li>item 1-2<ul>\r
-<li>item 1-2-1</li>\r
-</ul>\r
-</li>\r
-</ul>\r
-</li>\r
-<li>item 2</li>\r
-<li>item 3</li>\r
-<li>\r
-<p>item 4</p>\r
-<ul>\r
-<li>item 4-1</li>\r
-<li>item 4-2</li>\r
-<li>\r
-<p>item 4-3</p>\r
-<p>Paragraph under item 4-3</p>\r
-</li>\r
-</ul>\r
-<p>Paragraph under item 4</p>\r
-</li>\r
+<ul>
+<li>
+<p>item 1</p>
+<p>paragraph 2</p>
+</li>
+<li>
+<p>item 2</p>
+<ul>
+<li>item 2-1</li>
+<li>
+<p>item 2-2</p>
+<ul>
+<li>item 2-2-1</li>
+</ul>
+</li>
+<li>
+<p>item 2-3</p>
+<ul>
+<li>item 2-3-1</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>
+<p>item 3</p>
+</li>
+</ul>
+<p>plain text</p>
+<ul>
+<li>item 1<ul>
+<li>item 1-1</li>
+<li>item 1-2<ul>
+<li>item 1-2-1</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>item 2</li>
+<li>item 3</li>
+<li>
+<p>item 4</p>
+<ul>
+<li>item 4-1</li>
+<li>item 4-2</li>
+<li>
+<p>item 4-3</p>
+<p>Paragraph under item 4-3</p>
+</li>
+</ul>
+<p>Paragraph under item 4</p>
+</li>
</ul>
\ No newline at end of file
-* item 1\r
-\r
- paragraph 2\r
-\r
-* item 2\r
-\r
- * item 2-1\r
- * item 2-2\r
-\r
- * item 2-2-1\r
-\r
- * item 2-3\r
-\r
- * item 2-3-1\r
-\r
-* item 3\r
-\r
-plain text\r
-\r
-* item 1\r
- * item 1-1\r
- * item 1-2\r
- * item 1-2-1\r
-* item 2\r
-* item 3\r
-* item 4\r
- * item 4-1\r
- * item 4-2\r
- * item 4-3\r
-\r
- Paragraph under item 4-3\r
-\r
- Paragraph under item 4\r
+* item 1
+
+ paragraph 2
+
+* item 2
+
+ * item 2-1
+ * item 2-2
+
+ * item 2-2-1
+
+ * item 2-3
+
+ * item 2-3-1
+
+* item 3
+
+plain text
+
+* item 1
+ * item 1-1
+ * item 1-2
+ * item 1-2-1
+* item 2
+* item 3
+* item 4
+ * item 4-1
+ * item 4-2
+ * item 4-3
+
+ Paragraph under item 4-3
+
+ Paragraph under item 4
-<p><strong><em><a href="http://example.com">link</a></em></strong>\r
-<strong><em><a href="http://example.com">link</a></em></strong>\r
-<strong><a href="http://example.com"><em>link</em></a></strong>\r
-<strong><a href="http://example.com"><em>link</em></a></strong>\r
-<strong><a href="http://example.com"><em>link</em></a></strong>\r
-<strong><a href="http://example.com"><em>link</em></a></strong>\r
+<p><strong><em><a href="http://example.com">link</a></em></strong>
+<strong><em><a href="http://example.com">link</a></em></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
+<strong><a href="http://example.com"><em>link</em></a></strong>
<a href="http://example.com"><strong><em>link</em></strong></a></p>
\ No newline at end of file
-___[link](http://example.com)___\r
-***[link](http://example.com)***\r
-**[*link*](http://example.com)**\r
-__[_link_](http://example.com)__\r
-__[*link*](http://example.com)__\r
-**[_link_](http://example.com)**\r
-[***link***](http://example.com)\r
+___[link](http://example.com)___
+***[link](http://example.com)***
+**[*link*](http://example.com)**
+__[_link_](http://example.com)__
+__[*link*](http://example.com)__
+**[_link_](http://example.com)**
+[***link***](http://example.com)
+++ /dev/null
-<p>Regression <em>test</em> for issue 87</p>\r
-<p>It's run with enable_attributes=False so this {@id=explanation} should not become an attribute</p>
\ No newline at end of file
+++ /dev/null
-Regression *test* for issue 87\r
-\r
-It's run with enable_attributes=False so this {@id=explanation} should not become an attribute\r
-\r
-[Link](http://www.stuff.com/q?x=1&y=2<>)\r
+
+[Link](http://www.stuff.com/q?x=1&y=2<>)
-<p><a href="mailto:user@gmail.com">user@gmail.com</a></p>\r
+<p><a href="mailto:user@gmail.com">user@gmail.com</a></p>
<p>This is an entity: ê </p>
\ No newline at end of file
-\r
-<user@gmail.com>\r
-\r
-This is an entity: ê \r
+
+<user@gmail.com>
+
+This is an entity: ê
-<p>Here is a paragraph, followed by a horizontal rule.</p>\r
-<hr />\r
-<p>Followed by another paragraph.</p>\r
-<p>Here is another paragraph, followed by:\r
-*** not an HR.\r
+<p>Here is a paragraph, followed by a horizontal rule.</p>
+<hr />
+<p>Followed by another paragraph.</p>
+<p>Here is another paragraph, followed by:
+*** not an HR.
Followed by more of the same paragraph.</p>
\ No newline at end of file
-Here is a paragraph, followed by a horizontal rule.\r
-***\r
-Followed by another paragraph.\r
-\r
-Here is another paragraph, followed by:\r
-*** not an HR.\r
-Followed by more of the same paragraph.\r
+Here is a paragraph, followed by a horizontal rule.
+***
+Followed by another paragraph.
+
+Here is another paragraph, followed by:
+*** not an HR.
+Followed by more of the same paragraph.
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\r
- "http://www.w3.org/TR/html4/strict.dtd">\r
-\r
-<p><b>This should have a p tag</b></p>\r
-<!--This is a comment -->\r
-\r
-<div>This shouldn't</div>\r
-\r
-<?php echo "block_level";?>\r
-\r
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+
+<p><b>This should have a p tag</b></p>
+<!--This is a comment -->
+
+<div>This shouldn't</div>
+
+<?php echo "block_level";?>
+
<p><?php echo "not_block_level";?></p>
\ No newline at end of file
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\r
- "http://www.w3.org/TR/html4/strict.dtd">\r
-\r
-<b>This should have a p tag</b>\r
-\r
-<!--This is a comment -->\r
-\r
-<div>This shouldn't</div>\r
-\r
-<?php echo "block_level";?>\r
-\r
- <?php echo "not_block_level";?>\r
-\r
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+ "http://www.w3.org/TR/html4/strict.dtd">
+
+<b>This should have a p tag</b>
+
+<!--This is a comment -->
+
+<div>This shouldn't</div>
+
+<?php echo "block_level";?>
+
+ <?php echo "not_block_level";?>
+
-<pre>\r
-\r
-aaa\r
-\r
-bbb\r
-</pre>\r
-\r
-<pre>\r
-* and this is pre-formatted content\r
-* and it should be printed just like this\r
-* and not formatted as a list\r
-\r
+<pre>
+
+aaa
+
+bbb
+</pre>
+
+<pre>
+* and this is pre-formatted content
+* and it should be printed just like this
+* and not formatted as a list
+
</pre>
\ No newline at end of file
-<pre>\r
-\r
-aaa\r
-\r
-bbb\r
-</pre>\r
-\r
-<pre>\r
-* and this is pre-formatted content\r
-* and it should be printed just like this\r
-* and not formatted as a list\r
-\r
-</pre>\r
-\r
+<pre>
+
+aaa
+
+bbb
+</pre>
+
+<pre>
+* and this is pre-formatted content
+* and it should be printed just like this
+* and not formatted as a list
+
+</pre>
+
-<p>Preserve whitespace in raw html</p>\r
-<pre>\r
-class Foo():\r
- bar = 'bar'\r
-\r
- def baz(self):\r
- print self.bar\r
+<p>Preserve whitespace in raw html</p>
+<pre>
+class Foo():
+ bar = 'bar'
+
+ def baz(self):
+ print self.bar
</pre>
\ No newline at end of file
-Preserve whitespace in raw html\r
-\r
-<pre>\r
-class Foo():\r
- bar = 'bar'\r
-\r
- def baz(self):\r
- print self.bar\r
-</pre>\r
-\r
+Preserve whitespace in raw html
+
+<pre>
+class Foo():
+ bar = 'bar'
+
+ def baz(self):
+ print self.bar
+</pre>
+
-<h1>Недвард «Нед» Фландерс</h1>\r
-<p><strong>Недвард «Нед» Фландерс</strong> (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая. </p>\r
-<p>Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы <em>Northeast Flanders St.</em> в <a href="http://www.portland.gov">Портленде</a>, Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы <em>NE Flanders St.</em> хулиганы часто исправляли на <em>NED Flanders St.</em></p>\r
-<h2>Биография</h2>\r
-<p>Нед Фландерс родился в Нью-Йорке, его родители были битниками. Его отец в точности похож на взрослого Неда, только он носил козлиную бородку. Их отказ от воспитания Неда и то, что они, в общем-то, были плохими родителями («мы ничего в этом не понимаем и не знаем как начать») привело к тому, что Нед превратился в ужасного сорванца. В конце концов они согласились на экспериментальную восьмимесячную шлепологическую терапию Миннесотского Университета (воспоминания Неда в эпизоде «Hurricane Neddy»), которая научила его подавлять чувство злости. Побочным эфектом терапии стало то, что Нед стал ненавидеть своих родителей (это одна из двух вещей которые ненавидит Фландерс, вторая — отделения почты, чьи длинные очереди, суета и угрюмый персонал раздражают его).</p>\r
+<h1>Недвард «Нед» Фландерс</h1>
+<p><strong>Недвард «Нед» Фландерс</strong> (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая. </p>
+<p>Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы <em>Northeast Flanders St.</em> в <a href="http://www.portland.gov">Портленде</a>, Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы <em>NE Flanders St.</em> хулиганы часто исправляли на <em>NED Flanders St.</em></p>
+<h2>Биография</h2>
+<p>Нед Фландерс родился в Нью-Йорке, его родители были битниками. Его отец в точности похож на взрослого Неда, только он носил козлиную бородку. Их отказ от воспитания Неда и то, что они, в общем-то, были плохими родителями («мы ничего в этом не понимаем и не знаем как начать») привело к тому, что Нед превратился в ужасного сорванца. В конце концов они согласились на экспериментальную восьмимесячную шлепологическую терапию Миннесотского Университета (воспоминания Неда в эпизоде «Hurricane Neddy»), которая научила его подавлять чувство злости. Побочным эфектом терапии стало то, что Нед стал ненавидеть своих родителей (это одна из двух вещей которые ненавидит Фландерс, вторая — отделения почты, чьи длинные очереди, суета и угрюмый персонал раздражают его).</p>
<p>У Неда есть странная привычка добавлять «дидли», «дадли» и другие бессмысленные слова в свои фразы при разговоре, например: «Hi-diddly-ho, neighbor-ino» («Приветик, соседушка»). Это результат сублимации его злости, вызванной сдерживанием гнева, который не имеет никакого другого выхода.</p>
\ No newline at end of file
-Недвард «Нед» Фландерс\r
-======================\r
-\r
-\r
-**Недвард «Нед» Фландерс** (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая. \r
-\r
-Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы *Northeast Flanders St.* в [Портленде](http://www.portland.gov), Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы *NE Flanders St.* хулиганы часто исправляли на _NED Flanders St._\r
-\r
-## Биография\r
-\r
-Нед Фландерс родился в Нью-Йорке, его родители были битниками. Его отец в точности похож на взрослого Неда, только он носил козлиную бородку. Их отказ от воспитания Неда и то, что они, в общем-то, были плохими родителями («мы ничего в этом не понимаем и не знаем как начать») привело к тому, что Нед превратился в ужасного сорванца. В конце концов они согласились на экспериментальную восьмимесячную шлепологическую терапию Миннесотского Университета (воспоминания Неда в эпизоде «Hurricane Neddy»), которая научила его подавлять чувство злости. Побочным эфектом терапии стало то, что Нед стал ненавидеть своих родителей (это одна из двух вещей которые ненавидит Фландерс, вторая — отделения почты, чьи длинные очереди, суета и угрюмый персонал раздражают его).\r
-\r
-У Неда есть странная привычка добавлять «дидли», «дадли» и другие бессмысленные слова в свои фразы при разговоре, например: «Hi-diddly-ho, neighbor-ino» («Приветик, соседушка»). Это результат сублимации его злости, вызванной сдерживанием гнева, который не имеет никакого другого выхода.\r
-\r
-\r
+Недвард «Нед» Фландерс
+======================
+
+
+**Недвард «Нед» Фландерс** (Nedward «Ned» Flanders) — вымышленный персонаж мультсериала «[Симпсоны][]», озвученный Гарри Ширером. Он и его семья живут по соседству от семьи Симпсонов. Набожный христианин, Нед является одним из столпов морали Спрингфилда. В эпизоде «Alone Again, Natura-Diddily» он овдовел, его жена Мод погибла в результате несчастного случая.
+
+Нед был одним из первых персонажей в мультсериале, который не был членом семьи Симпсонов. Начиная с первых серий, он регулярно появляется в «Симпсонах». Считается, что Нед Фландерс был назван в честь улицы *Northeast Flanders St.* в [Портленде](http://www.portland.gov), Орегон, родном городе создателя мультсериала Мэтта Грейнинга]]. Надпись на указателе улицы *NE Flanders St.* хулиганы часто исправляли на _NED Flanders St._
+
+## Биография
+
+Нед Фландерс родился в Нью-Йорке, его родители были битниками. Его отец в точности похож на взрослого Неда, только он носил козлиную бородку. Их отказ от воспитания Неда и то, что они, в общем-то, были плохими родителями («мы ничего в этом не понимаем и не знаем как начать») привело к тому, что Нед превратился в ужасного сорванца. В конце концов они согласились на экспериментальную восьмимесячную шлепологическую терапию Миннесотского Университета (воспоминания Неда в эпизоде «Hurricane Neddy»), которая научила его подавлять чувство злости. Побочным эфектом терапии стало то, что Нед стал ненавидеть своих родителей (это одна из двух вещей которые ненавидит Фландерс, вторая — отделения почты, чьи длинные очереди, суета и угрюмый персонал раздражают его).
+
+У Неда есть странная привычка добавлять «дидли», «дадли» и другие бессмысленные слова в свои фразы при разговоре, например: «Hi-diddly-ho, neighbor-ino» («Приветик, соседушка»). Это результат сублимации его злости, вызванной сдерживанием гнева, который не имеет никакого другого выхода.
+
+
-<p><em>emphasis</em></p>\r
-<p>this_is_not_emphasis</p>\r
-<p>[<em>punctuation with emphasis</em>]</p>\r
-<p>[<em>punctuation_with_emphasis</em>]</p>\r
+<p><em>emphasis</em></p>
+<p>this_is_not_emphasis</p>
+<p>[<em>punctuation with emphasis</em>]</p>
+<p>[<em>punctuation_with_emphasis</em>]</p>
<p>[punctuation_without_emphasis]</p>
\ No newline at end of file
-_emphasis_\r
-\r
-this_is_not_emphasis\r
-\r
-[_punctuation with emphasis_]\r
-\r
-[_punctuation_with_emphasis_]\r
-\r
-[punctuation_without_emphasis]\r
+_emphasis_
+
+this_is_not_emphasis
+
+[_punctuation with emphasis_]
+
+[_punctuation_with_emphasis_]
+
+[punctuation_without_emphasis]
-<hr />\r
-<ul>\r
-<li>\r
-<p>as if</p>\r
-</li>\r
-<li>\r
-<p>as if2</p>\r
-</li>\r
-</ul>\r
-<hr />\r
-<ul>\r
-<li>\r
-<p>as if</p>\r
-</li>\r
-<li>\r
-<p>as if2</p>\r
-</li>\r
-</ul>\r
-<hr />\r
-<ul>\r
-<li>as if\r
- non_code</li>\r
-<li>as if2</li>\r
-</ul>\r
-<p>Markdown</p>\r
-<ul>\r
-<li>\r
-<p>Python\r
- is ok</p>\r
-<ul>\r
-<li>Therefore i am</li>\r
-</ul>\r
-</li>\r
-<li>\r
-<p>Perl sucks\r
- big time</p>\r
-<ul>\r
-<li>But that's\r
-ok</li>\r
-</ul>\r
-</li>\r
-<li>\r
-<p>Python is\r
-ok\r
- Or not?</p>\r
-</li>\r
-</ul>\r
-<p>Here is a normal paragraph</p>\r
-<ol>\r
-<li>Another list\r
-with a bunch of items</li>\r
-<li>\r
-<p>Mostly fruits</p>\r
-<ol>\r
-<li>Apple</li>\r
-<li>Pare</li>\r
-</ol>\r
-</li>\r
-</ol>\r
-<p>asdfasdfasd</p>\r
-<pre><code># This is a code example\r
-import stuff\r
-\r
-Another code example\r
-* Lists and similar stuff\r
-\r
-> Should be ignored\r
+<hr />
+<ul>
+<li>
+<p>as if</p>
+</li>
+<li>
+<p>as if2</p>
+</li>
+</ul>
+<hr />
+<ul>
+<li>
+<p>as if</p>
+</li>
+<li>
+<p>as if2</p>
+</li>
+</ul>
+<hr />
+<ul>
+<li>as if
+ non_code</li>
+<li>as if2</li>
+</ul>
+<p>Markdown</p>
+<ul>
+<li>
+<p>Python
+ is ok</p>
+<ul>
+<li>Therefore i am</li>
+</ul>
+</li>
+<li>
+<p>Perl sucks
+ big time</p>
+<ul>
+<li>But that's
+ok</li>
+</ul>
+</li>
+<li>
+<p>Python is
+ok
+ Or not?</p>
+</li>
+</ul>
+<p>Here is a normal paragraph</p>
+<ol>
+<li>Another list
+with a bunch of items</li>
+<li>
+<p>Mostly fruits</p>
+<ol>
+<li>Apple</li>
+<li>Pare</li>
+</ol>
+</li>
+</ol>
+<p>asdfasdfasd</p>
+<pre><code># This is a code example
+import stuff
+
+Another code example
+* Lists and similar stuff
+
+> Should be ignored
</code></pre>
\ No newline at end of file
-----------------------\r
-\r
-* as if\r
- \r
-* as if2\r
-\r
-----------------------\r
-\r
-* as if\r
- \r
-* as if2\r
-\r
-----------------------\r
-\r
-* as if\r
- non_code\r
-* as if2\r
-\r
-\r
-\r
-\r
-Markdown\r
-\r
-* Python\r
- is ok\r
- * Therefore i am\r
-\r
-* Perl sucks\r
- big time\r
- * But that's\r
- ok\r
-\r
-* Python is\r
-ok\r
- Or not?\r
- \r
-Here is a normal paragraph\r
-\r
-1. Another list\r
-with a bunch of items\r
-2. Mostly fruits\r
-\r
-\r
-\r
- 3. Apple\r
- 4. Pare\r
-\r
-asdfasdfasd\r
-\r
-\r
- # This is a code example\r
- import stuff\r
-\r
- Another code example\r
- * Lists and similar stuff\r
-\r
- > Should be ignored\r
+----------------------
+
+* as if
+
+* as if2
+
+----------------------
+
+* as if
+
+* as if2
+
+----------------------
+
+* as if
+ non_code
+* as if2
+
+
+
+
+Markdown
+
+* Python
+ is ok
+ * Therefore i am
+
+* Perl sucks
+ big time
+ * But that's
+ ok
+
+* Python is
+ok
+ Or not?
+
+Here is a normal paragraph
+
+1. Another list
+with a bunch of items
+2. Mostly fruits
+
+
+
+ 3. Apple
+ 4. Pare
+
+asdfasdfasd
+
+
+ # This is a code example
+ import stuff
+
+ Another code example
+ * Lists and similar stuff
+
+ > Should be ignored
-<p><span id="someId"> Foo <em>bar</em> Baz </span></p>\r
-<div><b>*foo*</b></div>\r
-\r
-<div id="someId"> Foo *bar* Baz </div>\r
-\r
+<p><span id="someId"> Foo <em>bar</em> Baz </span></p>
+<div><b>*foo*</b></div>
+
+<div id="someId"> Foo *bar* Baz </div>
+
<p><baza id="someId"> Foo <em>bar</em> Baz </baza></p>
\ No newline at end of file
-\r
-<span id="someId"> Foo *bar* Baz </span>\r
-\r
-<div><b>*foo*</b></div>\r
-\r
-<div id="someId"> Foo *bar* Baz </div>\r
-\r
-<baza id="someId"> Foo *bar* Baz </baza>\r
-\r
-\r
+
+<span id="someId"> Foo *bar* Baz </span>
+
+<div><b>*foo*</b></div>
+
+<div id="someId"> Foo *bar* Baz </div>
+
+<baza id="someId"> Foo *bar* Baz </baza>
+
+
-__this_is_strong__\r
+__this_is_strong__
-<p>this is a <a href="http://example.com/"><strong>test</strong></a></p>\r
-<p>this is a second <strong><a href="http://example.com">test</a></strong></p>\r
-<p>reference <strong>[test][]</strong>\r
+<p>this is a <a href="http://example.com/"><strong>test</strong></a></p>
+<p>this is a second <strong><a href="http://example.com">test</a></strong></p>
+<p>reference <strong>[test][]</strong>
reference [<strong>test</strong>][]</p>
\ No newline at end of file
-this is a [**test**](http://example.com/)\r
-\r
-this is a second **[test](http://example.com)**\r
-\r
-reference **[test][]**\r
-reference [**test**][]\r
-\r
-\r
+this is a [**test**](http://example.com/)
+
+this is a second **[test](http://example.com)**
+
+reference **[test][]**
+reference [**test**][]
+
+
-<p>First a list with a tabbed line</p>\r
-<ul>\r
-<li>\r
-<p>A</p>\r
-</li>\r
-<li>\r
-<p>B</p>\r
-</li>\r
-</ul>\r
-<p>Just a blank line:</p>\r
-<ul>\r
-<li>\r
-<p>A</p>\r
-</li>\r
-<li>\r
-<p>B</p>\r
-</li>\r
-</ul>\r
-<p>Now a list with 4 spaces and some text:</p>\r
-<ul>\r
-<li>A\r
- abcdef</li>\r
-<li>B</li>\r
-</ul>\r
-<p>Now with a tab and an extra space:</p>\r
-<ul>\r
-<li>\r
-<p>A</p>\r
-</li>\r
-<li>\r
-<p>B</p>\r
-</li>\r
-</ul>\r
-<p>Now a list with 4 spaces:</p>\r
-<ul>\r
-<li>\r
-<p>A</p>\r
-</li>\r
-<li>\r
-<p>B</p>\r
-</li>\r
+<p>First a list with a tabbed line</p>
+<ul>
+<li>
+<p>A</p>
+</li>
+<li>
+<p>B</p>
+</li>
+</ul>
+<p>Just a blank line:</p>
+<ul>
+<li>
+<p>A</p>
+</li>
+<li>
+<p>B</p>
+</li>
+</ul>
+<p>Now a list with 4 spaces and some text:</p>
+<ul>
+<li>A
+ abcdef</li>
+<li>B</li>
+</ul>
+<p>Now with a tab and an extra space:</p>
+<ul>
+<li>
+<p>A</p>
+</li>
+<li>
+<p>B</p>
+</li>
+</ul>
+<p>Now a list with 4 spaces:</p>
+<ul>
+<li>
+<p>A</p>
+</li>
+<li>
+<p>B</p>
+</li>
</ul>
\ No newline at end of file
-First a list with a tabbed line\r
-\r
-* A\r
- \r
-* B\r
-\r
-Just a blank line:\r
-\r
-* A\r
-\r
-* B\r
-\r
-\r
-Now a list with 4 spaces and some text:\r
-\r
-* A\r
- abcdef\r
-* B\r
-\r
-\r
-Now with a tab and an extra space:\r
-\r
-* A\r
- \r
-* B\r
-\r
-Now a list with 4 spaces:\r
-\r
-* A\r
- \r
-* B\r
-\r
+First a list with a tabbed line
+
+* A
+
+* B
+
+Just a blank line:
+
+* A
+
+* B
+
+
+Now a list with 4 spaces and some text:
+
+* A
+ abcdef
+* B
+
+
+Now with a tab and an extra space:
+
+* A
+
+* B
+
+Now a list with 4 spaces:
+
+* A
+
+* B
+
+++ /dev/null
-[no-attributes]\r
-enable_attributes=False
\ No newline at end of file
-<p>This line has two spaces at the end<br />\r
-but this one has none\r
-but this line has three <br />\r
-and this is the second from last line\r
-in this test message</p>\r
-<ul>\r
-<li>This list item has two spaces. </li>\r
-<li>\r
-<p>This has none.\r
- This line has three. <br />\r
- This line has none.\r
- And this line two. </p>\r
-<p>This line has none.</p>\r
-</li>\r
-<li>\r
-<p>This line has none.</p>\r
-</li>\r
-</ul>\r
+<p>This line has two spaces at the end<br />
+but this one has none
+but this line has three <br />
+and this is the second from last line
+in this test message</p>
+<ul>
+<li>This list item has two spaces. </li>
+<li>
+<p>This has none.
+ This line has three. <br />
+ This line has none.
+ And this line two. </p>
+<p>This line has none.</p>
+</li>
+<li>
+<p>This line has none.</p>
+</li>
+</ul>
<p>And this is the end.</p>
\ No newline at end of file
-This line has two spaces at the end \r
-but this one has none\r
-but this line has three \r
-and this is the second from last line\r
-in this test message\r
-\r
-* This list item has two spaces. \r
-* This has none.\r
- This line has three. \r
- This line has none.\r
- And this line two. \r
-\r
- This line has none.\r
-\r
-* This line has none.\r
-\r
-And this is the end.\r
+This line has two spaces at the end
+but this one has none
+but this line has three
+and this is the second from last line
+in this test message
+
+* This list item has two spaces.
+* This has none.
+ This line has three.
+ This line has none.
+ And this line two.
+
+ This line has none.
+
+* This line has none.
+
+And this is the end.
-<p><img alt="asif" src="http://fourthought.com/images/ftlogo.png" title="Fourthought logo" /></p>\r
-<p><a href="http://fourthought.com/"><img alt="" src="http://fourthought.com/images/ftlogo.png" style="float: left; margin: 10px; border: none;" title="Fourthought logo" /></a></p>\r
+<p><img alt="asif" src="http://fourthought.com/images/ftlogo.png" title="Fourthought logo" /></p>
+<p><a href="http://fourthought.com/"><img alt="" src="http://fourthought.com/images/ftlogo.png" style="float: left; margin: 10px; border: none;" title="Fourthought logo" /></a></p>
<p><a href="http://link.com/"><img alt="text" src="x" /></a></p>
\ No newline at end of file
-\r
-\r
-[](http://fourthought.com/)\r
-\r
-[](http://link.com/)\r
+
+
+[](http://fourthought.com/)
+
+[](http://link.com/)
-<p>THIS_SHOULD_STAY_AS_IS</p>\r
-<p>Here is some <em>emphasis</em>, ok?</p>\r
-<p>Ok, at least <em>this</em> should work.</p>\r
-<p>THIS<strong>SHOULD</strong>STAY</p>\r
-<p>Here is some <strong>strong</strong> stuff.</p>\r
+<p>THIS_SHOULD_STAY_AS_IS</p>
+<p>Here is some <em>emphasis</em>, ok?</p>
+<p>Ok, at least <em>this</em> should work.</p>
+<p>THIS<strong>SHOULD</strong>STAY</p>
+<p>Here is some <strong>strong</strong> stuff.</p>
<p>THIS<strong><em>SHOULD</em></strong>STAY?</p>
\ No newline at end of file
-THIS_SHOULD_STAY_AS_IS\r
-\r
-Here is some _emphasis_, ok?\r
-\r
-Ok, at least _this_ should work.\r
-\r
-THIS__SHOULD__STAY\r
-\r
-Here is some __strong__ stuff.\r
-\r
-THIS___SHOULD___STAY?\r
+THIS_SHOULD_STAY_AS_IS
+
+Here is some _emphasis_, ok?
+
+Ok, at least _this_ should work.
+
+THIS__SHOULD__STAY
+
+Here is some __strong__ stuff.
+
+THIS___SHOULD___STAY?
-<p><a href="http://wikipedia.org/wiki/Dawn of War">Dawn of War</a></p>\r
+<p><a href="http://wikipedia.org/wiki/Dawn of War">Dawn of War</a></p>
<p><a href="http://wikipedia.org/wiki/Dawn of War" title="Dawn of War">Dawn of War</a></p>
\ No newline at end of file
-[Dawn of War](http://wikipedia.org/wiki/Dawn of War)\r
-\r
-\r
-[Dawn of War](http://wikipedia.org/wiki/Dawn of War "Dawn of War")\r
+[Dawn of War](http://wikipedia.org/wiki/Dawn of War)
+
+
+[Dawn of War](http://wikipedia.org/wiki/Dawn of War "Dawn of War")
--- /dev/null
+<p>A test of the most<br>
+basic of html/xhtml differences.</p>
\ No newline at end of file
--- /dev/null
+A test of the most
+basic of html/xhtml differences.
\ No newline at end of file
-<p>A numbered list from daringfireball:</p>\r
-<ol start="3">\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-<p>Again:</p>\r
-<ol start="3">\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-<p>Now starting with 1:</p>\r
-<ol>\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
+<p>A numbered list from daringfireball:</p>
+<ol start="3">
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+<p>Again:</p>
+<ol start="3">
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+<p>Now starting with 1:</p>
+<ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
</ol>
\ No newline at end of file
-A numbered list from daringfireball:\r
-\r
-3. Bird\r
-1. McHale\r
-8. Parish\r
-\r
-Again:\r
-\r
-3. Bird\r
-1. McHale\r
-8. Parish\r
-\r
-Now starting with 1:\r
-\r
-1. Bird\r
-1. McHale\r
-8. Parish\r
+A numbered list from daringfireball:
+
+3. Bird
+1. McHale
+8. Parish
+
+Again:
+
+3. Bird
+1. McHale
+8. Parish
+
+Now starting with 1:
+
+1. Bird
+1. McHale
+8. Parish
--- /dev/null
+<p>Regression <em>test</em> for issue 87</p>
+<p>It's run with enable_attributes=False so this {@id=explanation} should not become an attribute</p>
\ No newline at end of file
--- /dev/null
+Regression *test* for issue 87
+
+It's run with enable_attributes=False so this {@id=explanation} should not become an attribute
--- /dev/null
+<p><em>connected</em>words_</p>
\ No newline at end of file
--- /dev/null
+_connected_words_
\ No newline at end of file
-[lazy_ol_off]\r
-lazy_ol = False\r
+lazy_ol_off:
+ lazy_ol: False
+
+html4:
+ output_format: html4
+
+no-attributes:
+ enable_attributes: False
+
+no-smart-emphasis:
+ smart_emphasis: False
\ No newline at end of file
-[DEFAULT]\r
-extensions=extra\r
-normalize=1\r
-input_ext=.text\r
-output_ext=.xhtml\r
-skip=1\r
+DEFAULT:
+ extensions:
+ - extra
+ normalize: True
+ input_ext: .text
+ output_ext: .xhtml
+ skip: True
-[DEFAULT]\r
-normalize=1\r
-input_ext=.text\r
-output_ext=.xhtml\r
-#skip=1\r
-\r
-[Quotes in attributes]\r
-# attributes get output in differant order\r
-skip=1\r
-\r
-[Inline HTML (Span)]\r
-# Backtick in raw HTML attribute TODO: fixme\r
-skip=1\r
-\r
-[Backslash escapes]\r
-# Weird whitespace issue in output\r
-skip=1\r
-\r
-[Ins & del]\r
-# Our behavior follows markdown.pl I think PHP is wrong here\r
-skip=1\r
-\r
-[Auto Links]\r
-# TODO: fix raw HTML so is doesn't match <hr@example.com> as a <hr>.\r
-skip=1\r
-\r
-[Empty List Item]\r
-# We match markdown.pl here. Maybe someday we'll support this\r
-skip=1\r
-\r
-[Headers]\r
-# TODO: fix headers to not require blank line before\r
-skip=1\r
-\r
-[Mixed OLs and ULs]\r
-# We match markdown.pl here. I think PHP is wrong here\r
-skip=1\r
-\r
-[Emphasis]\r
-# We have various minor differances in combined & incorrect em markup.\r
-# Maybe fix a few of them - but most aren't too important\r
-skip=1\r
-\r
-[Code block in a list item]\r
-# We match markdown.pl - not sure how php gets that output??\r
-skip=1\r
+DEFAULT:
+ normalize: True
+ input_ext: .text
+ output_ext: .xhtml
+ #skip: True
+
+Quotes in attributes:
+ # attributes get output in differant order
+ skip: True
+
+Inline HTML (Span):
+ # Backtick in raw HTML attribute TODO: fixme
+ skip: True
+
+Backslash escapes:
+ # Weird whitespace issue in output
+ skip: True
+
+Ins & del:
+ # Our behavior follows markdown.pl I think PHP is wrong here
+ skip: True
+
+Auto Links:
+ # TODO: fix raw HTML so is doesn't match <hr@example.com> as a <hr>.
+ skip: True
+
+Empty List Item:
+ # We match markdown.pl here. Maybe someday we'll support this
+ skip: True
+
+Headers:
+ # TODO: fix headers to not require blank line before
+ skip: True
+
+Mixed OLs and ULs:
+ # We match markdown.pl here. I think PHP is wrong here
+ skip: True
+
+Emphasis:
+ # We have various minor differances in combined & incorrect em markup.
+ # Maybe fix a few of them - but most aren't too important
+ skip: True
+
+Code block in a list item:
+ # We match markdown.pl - not sure how php gets that output??
+ skip: True
+
+PHP-Specific Bugs:
+ # Not sure what to make of the escaping stuff here. Why is PHP not removing a blackslash?
+ skip: True
-<p>AT&T has an ampersand in their name.</p>\r
-\r
-<p>AT&T is another way to write it.</p>\r
-\r
-<p>This & that.</p>\r
-\r
-<p>4 < 5.</p>\r
-\r
-<p>6 > 5.</p>\r
-\r
-<p>Here's a <a href="http://example.com/?foo=1&bar=2">link</a> with an ampersand in the URL.</p>\r
-\r
-<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&T">AT&T</a>.</p>\r
-\r
-<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>\r
-\r
-<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>\r
+<p>AT&T has an ampersand in their name.</p>
+
+<p>AT&T is another way to write it.</p>
+
+<p>This & that.</p>
+
+<p>4 < 5.</p>
+
+<p>6 > 5.</p>
+
+<p>Here's a <a href="http://example.com/?foo=1&bar=2">link</a> with an ampersand in the URL.</p>
+
+<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&T">AT&T</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
-<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>\r
-\r
-<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p>\r
-\r
-<ul>\r
-<li>In a list?</li>\r
-<li><a href="http://example.com/">http://example.com/</a></li>\r
-<li>It should.</li>\r
-</ul>\r
-\r
-<blockquote>\r
- <p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>\r
-</blockquote>\r
-\r
-<p>Auto-links should not occur here: <code><http://example.com/></code></p>\r
-\r
-<pre><code>or here: <http://example.com/>\r
-</code></pre>\r
+<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>
+
+<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p>
+
+<ul>
+<li>In a list?</li>
+<li><a href="http://example.com/">http://example.com/</a></li>
+<li>It should.</li>
+</ul>
+
+<blockquote>
+ <p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>
+</blockquote>
+
+<p>Auto-links should not occur here: <code><http://example.com/></code></p>
+
+<pre><code>or here: <http://example.com/>
+</code></pre>
-<p>These should all get escaped:</p>\r
-\r
-<p>Backslash: \</p>\r
-\r
-<p>Backtick: `</p>\r
-\r
-<p>Asterisk: *</p>\r
-\r
-<p>Underscore: _</p>\r
-\r
-<p>Left brace: {</p>\r
-\r
-<p>Right brace: }</p>\r
-\r
-<p>Left bracket: [</p>\r
-\r
-<p>Right bracket: ]</p>\r
-\r
-<p>Left paren: (</p>\r
-\r
-<p>Right paren: )</p>\r
-\r
-<p>Greater-than: ></p>\r
-\r
-<p>Hash: #</p>\r
-\r
-<p>Period: .</p>\r
-\r
-<p>Bang: !</p>\r
-\r
-<p>Plus: +</p>\r
-\r
-<p>Minus: -</p>\r
-\r
-<p>These should not, because they occur within a code block:</p>\r
-\r
-<pre><code>Backslash: \\\r
-\r
-Backtick: \`\r
-\r
-Asterisk: \*\r
-\r
-Underscore: \_\r
-\r
-Left brace: \{\r
-\r
-Right brace: \}\r
-\r
-Left bracket: \[\r
-\r
-Right bracket: \]\r
-\r
-Left paren: \(\r
-\r
-Right paren: \)\r
-\r
-Greater-than: \>\r
-\r
-Hash: \#\r
-\r
-Period: \.\r
-\r
-Bang: \!\r
-\r
-Plus: \+\r
-\r
-Minus: \-\r
-</code></pre>\r
-\r
-<p>Nor should these, which occur in code spans:</p>\r
-\r
-<p>Backslash: <code>\\</code></p>\r
-\r
-<p>Backtick: <code>\`</code></p>\r
-\r
-<p>Asterisk: <code>\*</code></p>\r
-\r
-<p>Underscore: <code>\_</code></p>\r
-\r
-<p>Left brace: <code>\{</code></p>\r
-\r
-<p>Right brace: <code>\}</code></p>\r
-\r
-<p>Left bracket: <code>\[</code></p>\r
-\r
-<p>Right bracket: <code>\]</code></p>\r
-\r
-<p>Left paren: <code>\(</code></p>\r
-\r
-<p>Right paren: <code>\)</code></p>\r
-\r
-<p>Greater-than: <code>\></code></p>\r
-\r
-<p>Hash: <code>\#</code></p>\r
-\r
-<p>Period: <code>\.</code></p>\r
-\r
-<p>Bang: <code>\!</code></p>\r
-\r
-<p>Plus: <code>\+</code></p>\r
-\r
-<p>Minus: <code>\-</code></p>\r
+<p>These should all get escaped:</p>
+
+<p>Backslash: \</p>
+
+<p>Backtick: `</p>
+
+<p>Asterisk: *</p>
+
+<p>Underscore: _</p>
+
+<p>Left brace: {</p>
+
+<p>Right brace: }</p>
+
+<p>Left bracket: [</p>
+
+<p>Right bracket: ]</p>
+
+<p>Left paren: (</p>
+
+<p>Right paren: )</p>
+
+<p>Greater-than: ></p>
+
+<p>Hash: #</p>
+
+<p>Period: .</p>
+
+<p>Bang: !</p>
+
+<p>Plus: +</p>
+
+<p>Minus: -</p>
+
+<p>These should not, because they occur within a code block:</p>
+
+<pre><code>Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+</code></pre>
+
+<p>Nor should these, which occur in code spans:</p>
+
+<p>Backslash: <code>\\</code></p>
+
+<p>Backtick: <code>\`</code></p>
+
+<p>Asterisk: <code>\*</code></p>
+
+<p>Underscore: <code>\_</code></p>
+
+<p>Left brace: <code>\{</code></p>
+
+<p>Right brace: <code>\}</code></p>
+
+<p>Left bracket: <code>\[</code></p>
+
+<p>Right bracket: <code>\]</code></p>
+
+<p>Left paren: <code>\(</code></p>
+
+<p>Right paren: <code>\)</code></p>
+
+<p>Greater-than: <code>\></code></p>
+
+<p>Hash: <code>\#</code></p>
+
+<p>Period: <code>\.</code></p>
+
+<p>Bang: <code>\!</code></p>
+
+<p>Plus: <code>\+</code></p>
+
+<p>Minus: <code>\-</code></p>
-<blockquote>\r
- <p>Example:</p>\r
-\r
-<pre><code>sub status {\r
- print "working";\r
-}\r
-</code></pre>\r
- \r
- <p>Or:</p>\r
-\r
-<pre><code>sub status {\r
- return "working";\r
-}\r
-</code></pre>\r
-</blockquote>\r
+<blockquote>
+ <p>Example:</p>
+
+<pre><code>sub status {
+ print "working";
+}
+</code></pre>
+
+ <p>Or:</p>
+
+<pre><code>sub status {
+ return "working";
+}
+</code></pre>
+</blockquote>
-<p>In Markdown 1.0.0 and earlier. Version\r
-8. This line turns into a list item.\r
-Because a hard-wrapped line in the\r
-middle of a paragraph looked like a\r
-list item.</p>\r
-\r
-<p>Here's one with a bullet.\r
-* criminey.</p>\r
+<p>In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.</p>
+
+<p>Here's one with a bullet.
+* criminey.</p>
-<p>Dashes:</p>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>---\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>- - -\r
-</code></pre>\r
-\r
-<p>Asterisks:</p>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>***\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>* * *\r
-</code></pre>\r
-\r
-<p>Underscores:</p>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>___\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>_ _ _\r
-</code></pre>\r
+<p>Dashes:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>---
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>- - -
+</code></pre>
+
+<p>Asterisks:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>***
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>* * *
+</code></pre>
+
+<p>Underscores:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>___
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>_ _ _
+</code></pre>
-<p>Simple block on one line:</p>\r
-\r
-<div>foo</div>\r
-\r
-<p>And nested without indentation:</p>\r
-\r
-<div>\r
-<div>\r
-<div>\r
-foo\r
-</div>\r
-</div>\r
-<div>bar</div>\r
-</div>\r
+<p>Simple block on one line:</p>
+
+<div>foo</div>
+
+<p>And nested without indentation:</p>
+
+<div>
+<div>
+<div>
+foo
+</div>
+</div>
+<div>bar</div>
+</div>
-<p>Here's a simple block:</p>\r
-\r
-<div>\r
- foo\r
-</div>\r
-\r
-<p>This should be a code block, though:</p>\r
-\r
-<pre><code><div>\r
- foo\r
-</div>\r
-</code></pre>\r
-\r
-<p>As should this:</p>\r
-\r
-<pre><code><div>foo</div>\r
-</code></pre>\r
-\r
-<p>Now, nested:</p>\r
-\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-<p>This should just be an HTML comment:</p>\r
-\r
-<!-- Comment -->\r
-\r
-<p>Multiline:</p>\r
-\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-<p>Code block:</p>\r
-\r
-<pre><code><!-- Comment -->\r
-</code></pre>\r
-\r
-<p>Just plain comment, with trailing spaces on the line:</p>\r
-\r
-<!-- foo --> \r
-\r
-<p>Code:</p>\r
-\r
-<pre><code><hr />\r
-</code></pre>\r
-\r
-<p>Hr's:</p>\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr> \r
-\r
-<hr/> \r
-\r
-<hr /> \r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
+<p>Here's a simple block:</p>
+
+<div>
+ foo
+</div>
+
+<p>This should be a code block, though:</p>
+
+<pre><code><div>
+ foo
+</div>
+</code></pre>
+
+<p>As should this:</p>
+
+<pre><code><div>foo</div>
+</code></pre>
+
+<p>Now, nested:</p>
+
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+<p>This should just be an HTML comment:</p>
+
+<!-- Comment -->
+
+<p>Multiline:</p>
+
+<!--
+Blah
+Blah
+-->
+
+<p>Code block:</p>
+
+<pre><code><!-- Comment -->
+</code></pre>
+
+<p>Just plain comment, with trailing spaces on the line:</p>
+
+<!-- foo -->
+
+<p>Code:</p>
+
+<pre><code><hr />
+</code></pre>
+
+<p>Hr's:</p>
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
-<p>Paragraph one.</p>\r
-\r
-<!-- This is a simple comment -->\r
-\r
-<!--\r
- This is another comment.\r
--->\r
-\r
-<p>Paragraph two.</p>\r
-\r
-<!-- one comment block -- -- with two comments -->\r
-\r
-<p>The end.</p>\r
+<p>Paragraph one.</p>
+
+<!-- This is a simple comment -->
+
+<!--
+ This is another comment.
+-->
+
+<p>Paragraph two.</p>
+
+<!-- one comment block -- -- with two comments -->
+
+<p>The end.</p>
-<p>Just a <a href="/url/">URL</a>.</p>\r
-\r
-<p><a href="/url/" title="title">URL and title</a>.</p>\r
-\r
-<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>\r
-\r
-<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>\r
-\r
-<p><a href="">Empty</a>.</p>\r
+<p>Just a <a href="/url/">URL</a>.</p>
+
+<p><a href="/url/" title="title">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>
+
+<p><a href="">Empty</a>.</p>
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-\r
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-\r
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-\r
-<p>With <a href="/url/">embedded [brackets]</a>.</p>\r
-\r
-<p>Indented <a href="/url">once</a>.</p>\r
-\r
-<p>Indented <a href="/url">twice</a>.</p>\r
-\r
-<p>Indented <a href="/url">thrice</a>.</p>\r
-\r
-<p>Indented [four][] times.</p>\r
-\r
-<pre><code>[four]: /url\r
-</code></pre>\r
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>With <a href="/url/">embedded [brackets]</a>.</p>
+
+<p>Indented <a href="/url">once</a>.</p>
+
+<p>Indented <a href="/url">twice</a>.</p>
+
+<p>Indented <a href="/url">thrice</a>.</p>
+
+<p>Indented [four][] times.</p>
+
+<pre><code>[four]: /url
+</code></pre>
-<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>\r
-\r
-<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>\r
+<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
-<h1>Markdown: Basics</h1>\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a class="selected" title="Markdown Basics">Basics</a></li>\r
- <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<h2>Getting the Gist of Markdown's Formatting Syntax</h2>\r
-\r
-<p>This page offers a brief overview of what it's like to use Markdown.\r
-The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for\r
-every feature, but Markdown should be very easy to pick up simply by\r
-looking at a few examples of it in action. The examples on this page\r
-are written in a before/after style, showing example syntax and the\r
-HTML output produced by Markdown.</p>\r
-\r
-<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a\r
-web application that allows you type your own Markdown-formatted text\r
-and translate it to XHTML.</p>\r
-\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-\r
-<h2>Paragraphs, Headers, Blockquotes</h2>\r
-\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-\r
-<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.\r
-Setext-style headers for <code><h1></code> and <code><h2></code> are created by\r
-"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.\r
-To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the\r
-beginning of the line -- the number of hashes equals the resulting\r
-HTML header level.</p>\r
-\r
-<p>Blockquotes are indicated using email-style '<code>></code>' angle brackets.</p>\r
-\r
-<p>Markdown:</p>\r
-\r
-<pre><code>A First Level Header\r
-====================\r
-\r
-A Second Level Header\r
----------------------\r
-\r
-Now is the time for all good men to come to\r
-the aid of their country. This is just a\r
-regular paragraph.\r
-\r
-The quick brown fox jumped over the lazy\r
-dog's back.\r
-\r
-### Header 3\r
-\r
-> This is a blockquote.\r
-> \r
-> This is the second paragraph in the blockquote.\r
->\r
-> ## This is an H2 in a blockquote\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><h1>A First Level Header</h1>\r
-\r
-<h2>A Second Level Header</h2>\r
-\r
-<p>Now is the time for all good men to come to\r
-the aid of their country. This is just a\r
-regular paragraph.</p>\r
-\r
-<p>The quick brown fox jumped over the lazy\r
-dog's back.</p>\r
-\r
-<h3>Header 3</h3>\r
-\r
-<blockquote>\r
- <p>This is a blockquote.</p>\r
-\r
- <p>This is the second paragraph in the blockquote.</p>\r
-\r
- <h2>This is an H2 in a blockquote</h2>\r
-</blockquote>\r
-</code></pre>\r
-\r
-<h3>Phrase Emphasis</h3>\r
-\r
-<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>\r
-\r
-<p>Markdown:</p>\r
-\r
-<pre><code>Some of these words *are emphasized*.\r
-Some of these words _are emphasized also_.\r
-\r
-Use two asterisks for **strong emphasis**.\r
-Or, if you prefer, __use two underscores instead__.\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>Some of these words <em>are emphasized</em>.\r
-Some of these words <em>are emphasized also</em>.</p>\r
-\r
-<p>Use two asterisks for <strong>strong emphasis</strong>.\r
-Or, if you prefer, <strong>use two underscores instead</strong>.</p>\r
-</code></pre>\r
-\r
-<h2>Lists</h2>\r
-\r
-<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,\r
-<code>+</code>, and <code>-</code>) as list markers. These three markers are\r
-interchangable; this:</p>\r
-\r
-<pre><code>* Candy.\r
-* Gum.\r
-* Booze.\r
-</code></pre>\r
-\r
-<p>this:</p>\r
-\r
-<pre><code>+ Candy.\r
-+ Gum.\r
-+ Booze.\r
-</code></pre>\r
-\r
-<p>and this:</p>\r
-\r
-<pre><code>- Candy.\r
-- Gum.\r
-- Booze.\r
-</code></pre>\r
-\r
-<p>all produce the same output:</p>\r
-\r
-<pre><code><ul>\r
-<li>Candy.</li>\r
-<li>Gum.</li>\r
-<li>Booze.</li>\r
-</ul>\r
-</code></pre>\r
-\r
-<p>Ordered (numbered) lists use regular numbers, followed by periods, as\r
-list markers:</p>\r
-\r
-<pre><code>1. Red\r
-2. Green\r
-3. Blue\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><ol>\r
-<li>Red</li>\r
-<li>Green</li>\r
-<li>Blue</li>\r
-</ol>\r
-</code></pre>\r
-\r
-<p>If you put blank lines between items, you'll get <code><p></code> tags for the\r
-list item text. You can create multi-paragraph list items by indenting\r
-the paragraphs by 4 spaces or 1 tab:</p>\r
-\r
-<pre><code>* A list item.\r
-\r
- With multiple paragraphs.\r
-\r
-* Another item in the list.\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><ul>\r
-<li><p>A list item.</p>\r
-<p>With multiple paragraphs.</p></li>\r
-<li><p>Another item in the list.</p></li>\r
-</ul>\r
-</code></pre>\r
-\r
-<h3>Links</h3>\r
-\r
-<p>Markdown supports two styles for creating links: <em>inline</em> and\r
-<em>reference</em>. With both styles, you use square brackets to delimit the\r
-text you want to turn into a link.</p>\r
-\r
-<p>Inline-style links use parentheses immediately after the link text.\r
-For example:</p>\r
-\r
-<pre><code>This is an [example link](http://example.com/).\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>This is an <a href="http://example.com/">\r
-example link</a>.</p>\r
-</code></pre>\r
-\r
-<p>Optionally, you may include a title attribute in the parentheses:</p>\r
-\r
-<pre><code>This is an [example link](http://example.com/ "With a Title").\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>This is an <a href="http://example.com/" title="With a Title">\r
-example link</a>.</p>\r
-</code></pre>\r
-\r
-<p>Reference-style links allow you to refer to your links by names, which\r
-you define elsewhere in your document:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google][1] than from\r
-[Yahoo][2] or [MSN][3].\r
-\r
-[1]: http://google.com/ "Google"\r
-[2]: http://search.yahoo.com/ "Yahoo Search"\r
-[3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from <a href="http://search.yahoo.com/"\r
-title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"\r
-title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-\r
-<p>The title attribute is optional. Link names may contain letters,\r
-numbers and spaces, but are <em>not</em> case sensitive:</p>\r
-\r
-<pre><code>I start my morning with a cup of coffee and\r
-[The New York Times][NY Times].\r
-\r
-[ny times]: http://www.nytimes.com/\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>I start my morning with a cup of coffee and\r
-<a href="http://www.nytimes.com/">The New York Times</a>.</p>\r
-</code></pre>\r
-\r
-<h3>Images</h3>\r
-\r
-<p>Image syntax is very much like link syntax.</p>\r
-\r
-<p>Inline (titles are optional):</p>\r
-\r
-<pre><code>\r
-</code></pre>\r
-\r
-<p>Reference-style:</p>\r
-\r
-<pre><code>![alt text][id]\r
-\r
-[id]: /path/to/img.jpg "Title"\r
-</code></pre>\r
-\r
-<p>Both of the above examples produce the same output:</p>\r
-\r
-<pre><code><img src="/path/to/img.jpg" alt="alt text" title="Title" />\r
-</code></pre>\r
-\r
-<h3>Code</h3>\r
-\r
-<p>In a regular paragraph, you can create code span by wrapping text in\r
-backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or\r
-<code>></code>) will automatically be translated into HTML entities. This makes\r
-it easy to use Markdown to write about HTML example code:</p>\r
-\r
-<pre><code>I strongly recommend against using any `<blink>` tags.\r
-\r
-I wish SmartyPants used named entities like `&mdash;`\r
-instead of decimal-encoded entites like `&#8212;`.\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>I strongly recommend against using any\r
-<code>&lt;blink&gt;</code> tags.</p>\r
-\r
-<p>I wish SmartyPants used named entities like\r
-<code>&amp;mdash;</code> instead of decimal-encoded\r
-entites like <code>&amp;#8212;</code>.</p>\r
-</code></pre>\r
-\r
-<p>To specify an entire block of pre-formatted code, indent every line of\r
-the block by 4 spaces or 1 tab. Just like with code spans, <code>&</code>, <code><</code>,\r
-and <code>></code> characters will be escaped automatically.</p>\r
-\r
-<p>Markdown:</p>\r
-\r
-<pre><code>If you want your page to validate under XHTML 1.0 Strict,\r
-you've got to put paragraph tags in your blockquotes:\r
-\r
- <blockquote>\r
- <p>For example.</p>\r
- </blockquote>\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>If you want your page to validate under XHTML 1.0 Strict,\r
-you've got to put paragraph tags in your blockquotes:</p>\r
-\r
-<pre><code>&lt;blockquote&gt;\r
- &lt;p&gt;For example.&lt;/p&gt;\r
-&lt;/blockquote&gt;\r
-</code></pre>\r
-</code></pre>\r
+<h1>Markdown: Basics</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
+
+<p>This page offers a brief overview of what it's like to use Markdown.
+The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.</p>
+
+<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.</p>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<h2>Paragraphs, Headers, Blockquotes</h2>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+
+<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
+Setext-style headers for <code><h1></code> and <code><h2></code> are created by
+"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
+To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.</p>
+
+<p>Blockquotes are indicated using email-style '<code>></code>' angle brackets.</p>
+
+<p>Markdown:</p>
+
+<pre><code>A First Level Header
+====================
+
+A Second Level Header
+---------------------
+
+Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.
+
+The quick brown fox jumped over the lazy
+dog's back.
+
+### Header 3
+
+> This is a blockquote.
+>
+> This is the second paragraph in the blockquote.
+>
+> ## This is an H2 in a blockquote
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><h1>A First Level Header</h1>
+
+<h2>A Second Level Header</h2>
+
+<p>Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.</p>
+
+<p>The quick brown fox jumped over the lazy
+dog's back.</p>
+
+<h3>Header 3</h3>
+
+<blockquote>
+ <p>This is a blockquote.</p>
+
+ <p>This is the second paragraph in the blockquote.</p>
+
+ <h2>This is an H2 in a blockquote</h2>
+</blockquote>
+</code></pre>
+
+<h3>Phrase Emphasis</h3>
+
+<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
+
+<p>Markdown:</p>
+
+<pre><code>Some of these words *are emphasized*.
+Some of these words _are emphasized also_.
+
+Use two asterisks for **strong emphasis**.
+Or, if you prefer, __use two underscores instead__.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>Some of these words <em>are emphasized</em>.
+Some of these words <em>are emphasized also</em>.</p>
+
+<p>Use two asterisks for <strong>strong emphasis</strong>.
+Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+</code></pre>
+
+<h2>Lists</h2>
+
+<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
+<code>+</code>, and <code>-</code>) as list markers. These three markers are
+interchangable; this:</p>
+
+<pre><code>* Candy.
+* Gum.
+* Booze.
+</code></pre>
+
+<p>this:</p>
+
+<pre><code>+ Candy.
++ Gum.
++ Booze.
+</code></pre>
+
+<p>and this:</p>
+
+<pre><code>- Candy.
+- Gum.
+- Booze.
+</code></pre>
+
+<p>all produce the same output:</p>
+
+<pre><code><ul>
+<li>Candy.</li>
+<li>Gum.</li>
+<li>Booze.</li>
+</ul>
+</code></pre>
+
+<p>Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:</p>
+
+<pre><code>1. Red
+2. Green
+3. Blue
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><ol>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ol>
+</code></pre>
+
+<p>If you put blank lines between items, you'll get <code><p></code> tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:</p>
+
+<pre><code>* A list item.
+
+ With multiple paragraphs.
+
+* Another item in the list.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><ul>
+<li><p>A list item.</p>
+<p>With multiple paragraphs.</p></li>
+<li><p>Another item in the list.</p></li>
+</ul>
+</code></pre>
+
+<h3>Links</h3>
+
+<p>Markdown supports two styles for creating links: <em>inline</em> and
+<em>reference</em>. With both styles, you use square brackets to delimit the
+text you want to turn into a link.</p>
+
+<p>Inline-style links use parentheses immediately after the link text.
+For example:</p>
+
+<pre><code>This is an [example link](http://example.com/).
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>This is an <a href="http://example.com/">
+example link</a>.</p>
+</code></pre>
+
+<p>Optionally, you may include a title attribute in the parentheses:</p>
+
+<pre><code>This is an [example link](http://example.com/ "With a Title").
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>This is an <a href="http://example.com/" title="With a Title">
+example link</a>.</p>
+</code></pre>
+
+<p>Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:</p>
+
+<pre><code>I get 10 times more traffic from [Google][1] than from
+[Yahoo][2] or [MSN][3].
+
+[1]: http://google.com/ "Google"
+[2]: http://search.yahoo.com/ "Yahoo Search"
+[3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+title="MSN Search">MSN</a>.</p>
+</code></pre>
+
+<p>The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are <em>not</em> case sensitive:</p>
+
+<pre><code>I start my morning with a cup of coffee and
+[The New York Times][NY Times].
+
+[ny times]: http://www.nytimes.com/
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>I start my morning with a cup of coffee and
+<a href="http://www.nytimes.com/">The New York Times</a>.</p>
+</code></pre>
+
+<h3>Images</h3>
+
+<p>Image syntax is very much like link syntax.</p>
+
+<p>Inline (titles are optional):</p>
+
+<pre><code>
+</code></pre>
+
+<p>Reference-style:</p>
+
+<pre><code>![alt text][id]
+
+[id]: /path/to/img.jpg "Title"
+</code></pre>
+
+<p>Both of the above examples produce the same output:</p>
+
+<pre><code><img src="/path/to/img.jpg" alt="alt text" title="Title" />
+</code></pre>
+
+<h3>Code</h3>
+
+<p>In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or
+<code>></code>) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:</p>
+
+<pre><code>I strongly recommend against using any `<blink>` tags.
+
+I wish SmartyPants used named entities like `&mdash;`
+instead of decimal-encoded entites like `&#8212;`.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>I strongly recommend against using any
+<code>&lt;blink&gt;</code> tags.</p>
+
+<p>I wish SmartyPants used named entities like
+<code>&amp;mdash;</code> instead of decimal-encoded
+entites like <code>&amp;#8212;</code>.</p>
+</code></pre>
+
+<p>To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, <code>&</code>, <code><</code>,
+and <code>></code> characters will be escaped automatically.</p>
+
+<p>Markdown:</p>
+
+<pre><code>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:
+
+ <blockquote>
+ <p>For example.</p>
+ </blockquote>
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:</p>
+
+<pre><code>&lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+&lt;/blockquote&gt;
+</code></pre>
+</code></pre>
-<h1>Markdown: Syntax</h1>\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>\r
- <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<ul>\r
-<li><a href="#overview">Overview</a>\r
-<ul>\r
-<li><a href="#philosophy">Philosophy</a></li>\r
-<li><a href="#html">Inline HTML</a></li>\r
-<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>\r
-</ul></li>\r
-<li><a href="#block">Block Elements</a>\r
-<ul>\r
-<li><a href="#p">Paragraphs and Line Breaks</a></li>\r
-<li><a href="#header">Headers</a></li>\r
-<li><a href="#blockquote">Blockquotes</a></li>\r
-<li><a href="#list">Lists</a></li>\r
-<li><a href="#precode">Code Blocks</a></li>\r
-<li><a href="#hr">Horizontal Rules</a></li>\r
-</ul></li>\r
-<li><a href="#span">Span Elements</a>\r
-<ul>\r
-<li><a href="#link">Links</a></li>\r
-<li><a href="#em">Emphasis</a></li>\r
-<li><a href="#code">Code</a></li>\r
-<li><a href="#img">Images</a></li>\r
-</ul></li>\r
-<li><a href="#misc">Miscellaneous</a>\r
-<ul>\r
-<li><a href="#backslash">Backslash Escapes</a></li>\r
-<li><a href="#autolink">Automatic Links</a></li>\r
-</ul></li>\r
-</ul>\r
-\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-\r
-<hr />\r
-\r
-<h2 id="overview">Overview</h2>\r
-\r
-<h3 id="philosophy">Philosophy</h3>\r
-\r
-<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\r
-\r
-<p>Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,\r
-<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.</p>\r
-\r
-<p>To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like *emphasis*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.</p>\r
-\r
-<h3 id="html">Inline HTML</h3>\r
-\r
-<p>Markdown's syntax is intended for one purpose: to be used as a\r
-format for <em>writing</em> for the web.</p>\r
-\r
-<p>Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is <em>not</em> to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.</p>\r
-\r
-<p>For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.</p>\r
-\r
-<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,\r
-<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>\r
-\r
-<p>For example, to add an HTML table to a Markdown article:</p>\r
-\r
-<pre><code>This is a regular paragraph.\r
-\r
-<table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
-</table>\r
-\r
-This is another regular paragraph.\r
-</code></pre>\r
-\r
-<p>Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an\r
-HTML block.</p>\r
-\r
-<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's\r
-link or image syntax, go right ahead.</p>\r
-\r
-<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within\r
-span-level tags.</p>\r
-\r
-<h3 id="autoescape">Automatic Escaping for Special Characters</h3>\r
-\r
-<p>In HTML, there are two characters that demand special treatment: <code><</code>\r
-and <code>&</code>. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. <code>&lt;</code>, and\r
-<code>&amp;</code>.</p>\r
-\r
-<p>Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:</p>\r
-\r
-<pre><code>http://images.google.com/images?num=30&q=larry+bird\r
-</code></pre>\r
-\r
-<p>you need to encode the URL as:</p>\r
-\r
-<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird\r
-</code></pre>\r
-\r
-<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.</p>\r
-\r
-<p>Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into <code>&amp;</code>.</p>\r
-\r
-<p>So, if you want to include a copyright symbol in your article, you can write:</p>\r
-\r
-<pre><code>&copy;\r
-</code></pre>\r
-\r
-<p>and Markdown will leave it alone. But if you write:</p>\r
-\r
-<pre><code>AT&T\r
-</code></pre>\r
-\r
-<p>Markdown will translate it to:</p>\r
-\r
-<pre><code>AT&amp;T\r
-</code></pre>\r
-\r
-<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:</p>\r
-\r
-<pre><code>4 < 5\r
-</code></pre>\r
-\r
-<p>Markdown will translate it to:</p>\r
-\r
-<pre><code>4 &lt; 5\r
-</code></pre>\r
-\r
-<p>However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are <em>always</em> encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single <code><</code>\r
-and <code>&</code> in your example code needs to be escaped.)</p>\r
-\r
-<hr />\r
-\r
-<h2 id="block">Block Elements</h2>\r
-\r
-<h3 id="p">Paragraphs and Line Breaks</h3>\r
-\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-\r
-<p>The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a <code><br /></code> tag.</p>\r
-\r
-<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you\r
-end a line with two or more spaces, then type return.</p>\r
-\r
-<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic\r
-"every line break is a <code><br /></code>" rule wouldn't work for Markdown.\r
-Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>\r
-work best -- and look better -- when you format them with hard breaks.</p>\r
-\r
-<h3 id="header">Headers</h3>\r
-\r
-<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>\r
-\r
-<p>Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:</p>\r
-\r
-<pre><code>This is an H1\r
-=============\r
-\r
-This is an H2\r
--------------\r
-</code></pre>\r
-\r
-<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>\r
-\r
-<p>Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:</p>\r
-\r
-<pre><code># This is an H1\r
-\r
-## This is an H2\r
-\r
-###### This is an H6\r
-</code></pre>\r
-\r
-<p>Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :</p>\r
-\r
-<pre><code># This is an H1 #\r
-\r
-## This is an H2 ##\r
-\r
-### This is an H3 ######\r
-</code></pre>\r
-\r
-<h3 id="blockquote">Blockquotes</h3>\r
-\r
-<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a <code>></code> before every line:</p>\r
-\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-> \r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-> id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>Markdown allows you to be lazy and only put the <code>></code> before the first\r
-line of a hard-wrapped paragraph:</p>\r
-\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of <code>></code>:</p>\r
-\r
-<pre><code>> This is the first level of quoting.\r
->\r
-> > This is nested blockquote.\r
->\r
-> Back to the first level.\r
-</code></pre>\r
-\r
-<p>Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:</p>\r
-\r
-<pre><code>> ## This is a header.\r
-> \r
-> 1. This is the first list item.\r
-> 2. This is the second list item.\r
-> \r
-> Here's some example code:\r
-> \r
-> return shell_exec("echo $input | $markdown_script");\r
-</code></pre>\r
-\r
-<p>Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.</p>\r
-\r
-<h3 id="list">Lists</h3>\r
-\r
-<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>\r
-\r
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:</p>\r
-\r
-<pre><code>* Red\r
-* Green\r
-* Blue\r
-</code></pre>\r
-\r
-<p>is equivalent to:</p>\r
-\r
-<pre><code>+ Red\r
-+ Green\r
-+ Blue\r
-</code></pre>\r
-\r
-<p>and:</p>\r
-\r
-<pre><code>- Red\r
-- Green\r
-- Blue\r
-</code></pre>\r
-\r
-<p>Ordered lists use numbers followed by periods:</p>\r
-\r
-<pre><code>1. Bird\r
-2. McHale\r
-3. Parish\r
-</code></pre>\r
-\r
-<p>It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:</p>\r
-\r
-<pre><code><ol>\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-</code></pre>\r
-\r
-<p>If you instead wrote the list in Markdown like this:</p>\r
-\r
-<pre><code>1. Bird\r
-1. McHale\r
-1. Parish\r
-</code></pre>\r
-\r
-<p>or even:</p>\r
-\r
-<pre><code>3. Bird\r
-1. McHale\r
-8. Parish\r
-</code></pre>\r
-\r
-<p>you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.</p>\r
-\r
-<p>If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.</p>\r
-\r
-<p>List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.</p>\r
-\r
-<p>To make lists look nice, you can wrap items with hanging indents:</p>\r
-\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>But if you want to be lazy, you don't have to:</p>\r
-\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
-Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
-viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
-Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>If list items are separated by blank lines, Markdown will wrap the\r
-items in <code><p></code> tags in the HTML output. For example, this input:</p>\r
-\r
-<pre><code>* Bird\r
-* Magic\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><ul>\r
-<li>Bird</li>\r
-<li>Magic</li>\r
-</ul>\r
-</code></pre>\r
-\r
-<p>But this:</p>\r
-\r
-<pre><code>* Bird\r
-\r
-* Magic\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><ul>\r
-<li><p>Bird</p></li>\r
-<li><p>Magic</p></li>\r
-</ul>\r
-</code></pre>\r
-\r
-<p>List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:</p>\r
-\r
-<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
-2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:</p>\r
-\r
-<pre><code>* This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
-only required to indent the first line. Lorem ipsum dolor\r
-sit amet, consectetuer adipiscing elit.\r
-\r
-* Another item in the same list.\r
-</code></pre>\r
-\r
-<p>To put a blockquote within a list item, the blockquote's <code>></code>\r
-delimiters need to be indented:</p>\r
-\r
-<pre><code>* A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-</code></pre>\r
-\r
-<p>To put a code block within a list item, the code block needs\r
-to be indented <em>twice</em> -- 8 spaces or two tabs:</p>\r
-\r
-<pre><code>* A list item with a code block:\r
-\r
- <code goes here>\r
-</code></pre>\r
-\r
-<p>It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:</p>\r
-\r
-<pre><code>1986. What a great season.\r
-</code></pre>\r
-\r
-<p>In other words, a <em>number-period-space</em> sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:</p>\r
-\r
-<pre><code>1986\. What a great season.\r
-</code></pre>\r
-\r
-<h3 id="precode">Code Blocks</h3>\r
-\r
-<p>Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both <code><pre></code> and <code><code></code> tags.</p>\r
-\r
-<p>To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:</p>\r
-\r
-<pre><code>This is a normal paragraph:\r
-\r
- This is a code block.\r
-</code></pre>\r
-\r
-<p>Markdown will generate:</p>\r
-\r
-<pre><code><p>This is a normal paragraph:</p>\r
-\r
-<pre><code>This is a code block.\r
-</code></pre>\r
-</code></pre>\r
-\r
-<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:</p>\r
-\r
-<pre><code>Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><p>Here is an example of AppleScript:</p>\r
-\r
-<pre><code>tell application "Foo"\r
- beep\r
-end tell\r
-</code></pre>\r
-</code></pre>\r
-\r
-<p>A code block continues until it reaches a line that is not indented\r
-(or the end of the article).</p>\r
-\r
-<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:</p>\r
-\r
-<pre><code> <div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><pre><code>&lt;div class="footer"&gt;\r
- &amp;copy; 2004 Foo Corporation\r
-&lt;/div&gt;\r
-</code></pre>\r
-</code></pre>\r
-\r
-<p>Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.</p>\r
-\r
-<h3 id="hr">Horizontal Rules</h3>\r
-\r
-<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:</p>\r
-\r
-<pre><code>* * *\r
-\r
-***\r
-\r
-*****\r
-\r
-- - -\r
-\r
----------------------------------------\r
-\r
-_ _ _\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<h2 id="span">Span Elements</h2>\r
-\r
-<h3 id="link">Links</h3>\r
-\r
-<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>\r
-\r
-<p>In both styles, the link text is delimited by [square brackets].</p>\r
-\r
-<p>To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an <em>optional</em>\r
-title for the link, surrounded in quotes. For example:</p>\r
-\r
-<pre><code>This is [an example](http://example.com/ "Title") inline link.\r
-\r
-[This link](http://example.net/) has no title attribute.\r
-</code></pre>\r
-\r
-<p>Will produce:</p>\r
-\r
-<pre><code><p>This is <a href="http://example.com/" title="Title">\r
-an example</a> inline link.</p>\r
-\r
-<p><a href="http://example.net/">This link</a> has no\r
-title attribute.</p>\r
-</code></pre>\r
-\r
-<p>If you're referring to a local resource on the same server, you can\r
-use relative paths:</p>\r
-\r
-<pre><code>See my [About](/about/) page for details.\r
-</code></pre>\r
-\r
-<p>Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:</p>\r
-\r
-<pre><code>This is [an example][id] reference-style link.\r
-</code></pre>\r
-\r
-<p>You can optionally use a space to separate the sets of brackets:</p>\r
-\r
-<pre><code>This is [an example] [id] reference-style link.\r
-</code></pre>\r
-\r
-<p>Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:</p>\r
-\r
-<pre><code>[id]: http://example.com/ "Optional Title Here"\r
-</code></pre>\r
-\r
-<p>That is:</p>\r
-\r
-<ul>\r
-<li>Square brackets containing the link identifier (optionally\r
-indented from the left margin using up to three spaces);</li>\r
-<li>followed by a colon;</li>\r
-<li>followed by one or more spaces (or tabs);</li>\r
-<li>followed by the URL for the link;</li>\r
-<li>optionally followed by a title attribute for the link, enclosed\r
-in double or single quotes.</li>\r
-</ul>\r
-\r
-<p>The link URL may, optionally, be surrounded by angle brackets:</p>\r
-\r
-<pre><code>[id]: <http://example.com/> "Optional Title Here"\r
-</code></pre>\r
-\r
-<p>You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:</p>\r
-\r
-<pre><code>[id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-</code></pre>\r
-\r
-<p>Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.</p>\r
-\r
-<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>\r
-\r
-<pre><code>[link text][a]\r
-[link text][A]\r
-</code></pre>\r
-\r
-<p>are equivalent.</p>\r
-\r
-<p>The <em>implicit link name</em> shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:</p>\r
-\r
-<pre><code>[Google][]\r
-</code></pre>\r
-\r
-<p>And then define the link:</p>\r
-\r
-<pre><code>[Google]: http://google.com/\r
-</code></pre>\r
-\r
-<p>Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:</p>\r
-\r
-<pre><code>Visit [Daring Fireball][] for more information.\r
-</code></pre>\r
-\r
-<p>And then define the link:</p>\r
-\r
-<pre><code>[Daring Fireball]: http://daringfireball.net/\r
-</code></pre>\r
-\r
-<p>Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.</p>\r
-\r
-<p>Here's an example of reference links in action:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google] [1] than from\r
-[Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-\r
-<p>Using the implicit link name shortcut, you could instead write:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google][] than from\r
-[Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-\r
-<p>Both of the above examples will produce the following HTML output:</p>\r
-\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from\r
-<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
-or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-\r
-<p>For comparison, here is the same paragraph written using\r
-Markdown's inline link style:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")\r
-than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
-[MSN](http://search.msn.com/ "MSN Search").\r
-</code></pre>\r
-\r
-<p>The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.</p>\r
-\r
-<p>With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.</p>\r
-\r
-<h3 id="em">Emphasis</h3>\r
-\r
-<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of\r
-emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an\r
-HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML\r
-<code><strong></code> tag. E.g., this input:</p>\r
-\r
-<pre><code>*single asterisks*\r
-\r
-_single underscores_\r
-\r
-**double asterisks**\r
-\r
-__double underscores__\r
-</code></pre>\r
-\r
-<p>will produce:</p>\r
-\r
-<pre><code><em>single asterisks</em>\r
-\r
-<em>single underscores</em>\r
-\r
-<strong>double asterisks</strong>\r
-\r
-<strong>double underscores</strong>\r
-</code></pre>\r
-\r
-<p>You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.</p>\r
-\r
-<p>Emphasis can be used in the middle of a word:</p>\r
-\r
-<pre><code>un*fucking*believable\r
-</code></pre>\r
-\r
-<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a\r
-literal asterisk or underscore.</p>\r
-\r
-<p>To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:</p>\r
-\r
-<pre><code>\*this text is surrounded by literal asterisks\*\r
-</code></pre>\r
-\r
-<h3 id="code">Code</h3>\r
-\r
-<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:</p>\r
-\r
-<pre><code>Use the `printf()` function.\r
-</code></pre>\r
-\r
-<p>will produce:</p>\r
-\r
-<pre><code><p>Use the <code>printf()</code> function.</p>\r
-</code></pre>\r
-\r
-<p>To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:</p>\r
-\r
-<pre><code>``There is a literal backtick (`) here.``\r
-</code></pre>\r
-\r
-<p>which will produce this:</p>\r
-\r
-<pre><code><p><code>There is a literal backtick (`) here.</code></p>\r
-</code></pre>\r
-\r
-<p>The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:</p>\r
-\r
-<pre><code>A single backtick in a code span: `` ` ``\r
-\r
-A backtick-delimited string in a code span: `` `foo` ``\r
-</code></pre>\r
-\r
-<p>will produce:</p>\r
-\r
-<pre><code><p>A single backtick in a code span: <code>`</code></p>\r
-\r
-<p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-</code></pre>\r
-\r
-<p>With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:</p>\r
-\r
-<pre><code>Please don't use any `<blink>` tags.\r
-</code></pre>\r
-\r
-<p>into:</p>\r
-\r
-<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>\r
-</code></pre>\r
-\r
-<p>You can write this:</p>\r
-\r
-<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.\r
-</code></pre>\r
-\r
-<p>to produce:</p>\r
-\r
-<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded\r
-equivalent of <code>&amp;mdash;</code>.</p>\r
-</code></pre>\r
-\r
-<h3 id="img">Images</h3>\r
-\r
-<p>Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.</p>\r
-\r
-<p>Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>\r
-\r
-<p>Inline image syntax looks like this:</p>\r
-\r
-<pre><code>\r
-\r
-\r
-</code></pre>\r
-\r
-<p>That is:</p>\r
-\r
-<ul>\r
-<li>An exclamation mark: <code>!</code>;</li>\r
-<li>followed by a set of square brackets, containing the <code>alt</code>\r
-attribute text for the image;</li>\r
-<li>followed by a set of parentheses, containing the URL or path to\r
-the image, and an optional <code>title</code> attribute enclosed in double\r
-or single quotes.</li>\r
-</ul>\r
-\r
-<p>Reference-style image syntax looks like this:</p>\r
-\r
-<pre><code>![Alt text][id]\r
-</code></pre>\r
-\r
-<p>Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:</p>\r
-\r
-<pre><code>[id]: url/to/image "Optional title attribute"\r
-</code></pre>\r
-\r
-<p>As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML <code><img></code> tags.</p>\r
-\r
-<hr />\r
-\r
-<h2 id="misc">Miscellaneous</h2>\r
-\r
-<h3 id="autolink">Automatic Links</h3>\r
-\r
-<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>\r
-\r
-<pre><code><http://example.com/>\r
-</code></pre>\r
-\r
-<p>Markdown will turn this into:</p>\r
-\r
-<pre><code><a href="http://example.com/">http://example.com/</a>\r
-</code></pre>\r
-\r
-<p>Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:</p>\r
-\r
-<pre><code><address@example.com>\r
-</code></pre>\r
-\r
-<p>into something like this:</p>\r
-\r
-<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;\r
-&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;\r
-&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;\r
-&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>\r
-</code></pre>\r
-\r
-<p>which will render in a browser as a clickable link to "address@example.com".</p>\r
-\r
-<p>(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)</p>\r
-\r
-<h3 id="backslash">Backslash Escapes</h3>\r
-\r
-<p>Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes\r
-before the asterisks, like this:</p>\r
-\r
-<pre><code>\*literal asterisks\*\r
-</code></pre>\r
-\r
-<p>Markdown provides backslash escapes for the following characters:</p>\r
-\r
-<pre><code>\ backslash\r
-` backtick\r
-* asterisk\r
-_ underscore\r
-{} curly braces\r
-[] square brackets\r
-() parentheses\r
-# hash mark\r
-+ plus sign\r
-- minus sign (hyphen)\r
-. dot\r
-! exclamation mark\r
-</code></pre>\r
+<h1>Markdown: Syntax</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<ul>
+<li><a href="#overview">Overview</a>
+<ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#html">Inline HTML</a></li>
+<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
+</ul></li>
+<li><a href="#block">Block Elements</a>
+<ul>
+<li><a href="#p">Paragraphs and Line Breaks</a></li>
+<li><a href="#header">Headers</a></li>
+<li><a href="#blockquote">Blockquotes</a></li>
+<li><a href="#list">Lists</a></li>
+<li><a href="#precode">Code Blocks</a></li>
+<li><a href="#hr">Horizontal Rules</a></li>
+</ul></li>
+<li><a href="#span">Span Elements</a>
+<ul>
+<li><a href="#link">Links</a></li>
+<li><a href="#em">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#img">Images</a></li>
+</ul></li>
+<li><a href="#misc">Miscellaneous</a>
+<ul>
+<li><a href="#backslash">Backslash Escapes</a></li>
+<li><a href="#autolink">Automatic Links</a></li>
+</ul></li>
+</ul>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<hr />
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+
+<h3 id="html">Inline HTML</h3>
+
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+
+<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,
+<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>
+
+<p>For example, to add an HTML table to a Markdown article:</p>
+
+<pre><code>This is a regular paragraph.
+
+<table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+</table>
+
+This is another regular paragraph.
+</code></pre>
+
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+
+<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+<p>In HTML, there are two characters that demand special treatment: <code><</code>
+and <code>&</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&lt;</code>, and
+<code>&amp;</code>.</p>
+
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+
+<pre><code>http://images.google.com/images?num=30&q=larry+bird
+</code></pre>
+
+<p>you need to encode the URL as:</p>
+
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;</code>.</p>
+
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+
+<pre><code>&copy;
+</code></pre>
+
+<p>and Markdown will leave it alone. But if you write:</p>
+
+<pre><code>AT&T
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>AT&amp;T
+</code></pre>
+
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+
+<pre><code>4 < 5
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>4 &lt; 5
+</code></pre>
+
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code><</code>
+and <code>&</code> in your example code needs to be escaped.)</p>
+
+<hr />
+
+<h2 id="block">Block Elements</h2>
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code><br /></code> tag.</p>
+
+<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+
+<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic
+"every line break is a <code><br /></code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+
+<h3 id="header">Headers</h3>
+
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+
+<h3 id="blockquote">Blockquotes</h3>
+
+<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>></code> before every line:</p>
+
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Markdown allows you to be lazy and only put the <code>></code> before the first
+line of a hard-wrapped paragraph:</p>
+
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>></code>:</p>
+
+<pre><code>> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+</code></pre>
+
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+
+<pre><code>> ## This is a header.
+>
+> 1. This is the first list item.
+> 2. This is the second list item.
+>
+> Here's some example code:
+>
+> return shell_exec("echo $input | $markdown_script");
+</code></pre>
+
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+
+<h3 id="list">Lists</h3>
+
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+
+<p>is equivalent to:</p>
+
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+
+<p>and:</p>
+
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+
+<p>Ordered lists use numbers followed by periods:</p>
+
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+
+<pre><code><ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+</code></pre>
+
+<p>If you instead wrote the list in Markdown like this:</p>
+
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+
+<p>or even:</p>
+
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>But if you want to be lazy, you don't have to:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code><p></code> tags in the HTML output. For example, this input:</p>
+
+<pre><code>* Bird
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><ul>
+<li>Bird</li>
+<li>Magic</li>
+</ul>
+</code></pre>
+
+<p>But this:</p>
+
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
+</code></pre>
+
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:</p>
+
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+
+<p>To put a blockquote within a list item, the blockquote's <code>></code>
+delimiters need to be indented:</p>
+
+<pre><code>* A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+</code></pre>
+
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+
+<pre><code>* A list item with a code block:
+
+ <code goes here>
+</code></pre>
+
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+
+<pre><code>1986. What a great season.
+</code></pre>
+
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+
+<pre><code>1986\. What a great season.
+</code></pre>
+
+<h3 id="precode">Code Blocks</h3>
+
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code><pre></code> and <code><code></code> tags.</p>
+
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+
+<p>Markdown will generate:</p>
+
+<pre><code><p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
+</code></pre>
+
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><p>Here is an example of AppleScript:</p>
+
+<pre><code>tell application "Foo"
+ beep
+end tell
+</code></pre>
+</code></pre>
+
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+
+<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+
+<pre><code> <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+&lt;/div&gt;
+</code></pre>
+</code></pre>
+
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+
+<h3 id="hr">Horizontal Rules</h3>
+
+<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+
+<hr />
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+
+<p>In both styles, the link text is delimited by [square brackets].</p>
+
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+
+<p>Will produce:</p>
+
+<pre><code><p>This is <a href="http://example.com/" title="Title">
+an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no
+title attribute.</p>
+</code></pre>
+
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+
+<p>You can optionally use a space to separate the sets of brackets:</p>
+
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>Square brackets containing the link identifier (optionally
+indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+in double or single quotes.</li>
+</ul>
+
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+
+<pre><code>[id]: <http://example.com/> "Optional Title Here"
+</code></pre>
+
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+
+<p>are equivalent.</p>
+
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+
+<pre><code>[Google][]
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Google]: http://google.com/
+</code></pre>
+
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+
+<p>Here's an example of reference links in action:</p>
+
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Using the implicit link name shortcut, you could instead write:</p>
+
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Both of the above examples will produce the following HTML output:</p>
+
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from
+<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+</code></pre>
+
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+
+<h3 id="em">Emphasis</h3>
+
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code><strong></code> tag. E.g., this input:</p>
+
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code><em>single asterisks</em>
+
+<em>single underscores</em>
+
+<strong>double asterisks</strong>
+
+<strong>double underscores</strong>
+</code></pre>
+
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+
+<p>Emphasis can be used in the middle of a word:</p>
+
+<pre><code>un*fucking*believable
+</code></pre>
+
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+
+<h3 id="code">Code</h3>
+
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+
+<pre><code>Use the `printf()` function.
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code><p>Use the <code>printf()</code> function.</p>
+</code></pre>
+
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+
+<p>which will produce this:</p>
+
+<pre><code><p><code>There is a literal backtick (`) here.</code></p>
+</code></pre>
+
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code><p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+</code></pre>
+
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+
+<pre><code>Please don't use any `<blink>` tags.
+</code></pre>
+
+<p>into:</p>
+
+<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+</code></pre>
+
+<p>You can write this:</p>
+
+<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+</code></pre>
+
+<p>to produce:</p>
+
+<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded
+equivalent of <code>&amp;mdash;</code>.</p>
+</code></pre>
+
+<h3 id="img">Images</h3>
+
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+
+<p>Inline image syntax looks like this:</p>
+
+<pre><code>
+
+
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+the image, and an optional <code>title</code> attribute enclosed in double
+or single quotes.</li>
+</ul>
+
+<p>Reference-style image syntax looks like this:</p>
+
+<pre><code>![Alt text][id]
+</code></pre>
+
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code><img></code> tags.</p>
+
+<hr />
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+
+<pre><code><http://example.com/>
+</code></pre>
+
+<p>Markdown will turn this into:</p>
+
+<pre><code><a href="http://example.com/">http://example.com/</a>
+</code></pre>
+
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+
+<pre><code><address@example.com>
+</code></pre>
+
+<p>into something like this:</p>
+
+<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+</code></pre>
+
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes
+before the asterisks, like this:</p>
+
+<pre><code>\*literal asterisks\*
+</code></pre>
+
+<p>Markdown provides backslash escapes for the following characters:</p>
+
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
+</code></pre>
-<blockquote>\r
- <p>foo</p>\r
- \r
- <blockquote>\r
- <p>bar</p>\r
- </blockquote>\r
- \r
- <p>foo</p>\r
-</blockquote>\r
+<blockquote>
+ <p>foo</p>
+
+ <blockquote>
+ <p>bar</p>
+ </blockquote>
+
+ <p>foo</p>
+</blockquote>
-<h2>Unordered</h2>\r
-\r
-<p>Asterisks tight:</p>\r
-\r
-<ul>\r
-<li>asterisk 1</li>\r
-<li>asterisk 2</li>\r
-<li>asterisk 3</li>\r
-</ul>\r
-\r
-<p>Asterisks loose:</p>\r
-\r
-<ul>\r
-<li><p>asterisk 1</p></li>\r
-<li><p>asterisk 2</p></li>\r
-<li><p>asterisk 3</p></li>\r
-</ul>\r
-\r
-<hr />\r
-\r
-<p>Pluses tight:</p>\r
-\r
-<ul>\r
-<li>Plus 1</li>\r
-<li>Plus 2</li>\r
-<li>Plus 3</li>\r
-</ul>\r
-\r
-<p>Pluses loose:</p>\r
-\r
-<ul>\r
-<li><p>Plus 1</p></li>\r
-<li><p>Plus 2</p></li>\r
-<li><p>Plus 3</p></li>\r
-</ul>\r
-\r
-<hr />\r
-\r
-<p>Minuses tight:</p>\r
-\r
-<ul>\r
-<li>Minus 1</li>\r
-<li>Minus 2</li>\r
-<li>Minus 3</li>\r
-</ul>\r
-\r
-<p>Minuses loose:</p>\r
-\r
-<ul>\r
-<li><p>Minus 1</p></li>\r
-<li><p>Minus 2</p></li>\r
-<li><p>Minus 3</p></li>\r
-</ul>\r
-\r
-<h2>Ordered</h2>\r
-\r
-<p>Tight:</p>\r
-\r
-<ol>\r
-<li>First</li>\r
-<li>Second</li>\r
-<li>Third</li>\r
-</ol>\r
-\r
-<p>and:</p>\r
-\r
-<ol>\r
-<li>One</li>\r
-<li>Two</li>\r
-<li>Three</li>\r
-</ol>\r
-\r
-<p>Loose using tabs:</p>\r
-\r
-<ol>\r
-<li><p>First</p></li>\r
-<li><p>Second</p></li>\r
-<li><p>Third</p></li>\r
-</ol>\r
-\r
-<p>and using spaces:</p>\r
-\r
-<ol>\r
-<li><p>One</p></li>\r
-<li><p>Two</p></li>\r
-<li><p>Three</p></li>\r
-</ol>\r
-\r
-<p>Multiple paragraphs:</p>\r
-\r
-<ol>\r
-<li><p>Item 1, graf one.</p>\r
-\r
-<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's\r
-back.</p></li>\r
-<li><p>Item 2.</p></li>\r
-<li><p>Item 3.</p></li>\r
-</ol>\r
-\r
-<h2>Nested</h2>\r
-\r
-<ul>\r
-<li>Tab\r
-<ul>\r
-<li>Tab\r
-<ul>\r
-<li>Tab</li>\r
-</ul></li>\r
-</ul></li>\r
-</ul>\r
-\r
-<p>Here's another:</p>\r
-\r
-<ol>\r
-<li>First</li>\r
-<li>Second:\r
-<ul>\r
-<li>Fee</li>\r
-<li>Fie</li>\r
-<li>Foe</li>\r
-</ul></li>\r
-<li>Third</li>\r
-</ol>\r
-\r
-<p>Same thing but with paragraphs:</p>\r
-\r
-<ol>\r
-<li><p>First</p></li>\r
-<li><p>Second:</p>\r
-\r
-<ul>\r
-<li>Fee</li>\r
-<li>Fie</li>\r
-<li>Foe</li>\r
-</ul></li>\r
-<li><p>Third</p></li>\r
-</ol>\r
+<h2>Unordered</h2>
+
+<p>Asterisks tight:</p>
+
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+
+<p>Asterisks loose:</p>
+
+<ul>
+<li><p>asterisk 1</p></li>
+<li><p>asterisk 2</p></li>
+<li><p>asterisk 3</p></li>
+</ul>
+
+<hr />
+
+<p>Pluses tight:</p>
+
+<ul>
+<li>Plus 1</li>
+<li>Plus 2</li>
+<li>Plus 3</li>
+</ul>
+
+<p>Pluses loose:</p>
+
+<ul>
+<li><p>Plus 1</p></li>
+<li><p>Plus 2</p></li>
+<li><p>Plus 3</p></li>
+</ul>
+
+<hr />
+
+<p>Minuses tight:</p>
+
+<ul>
+<li>Minus 1</li>
+<li>Minus 2</li>
+<li>Minus 3</li>
+</ul>
+
+<p>Minuses loose:</p>
+
+<ul>
+<li><p>Minus 1</p></li>
+<li><p>Minus 2</p></li>
+<li><p>Minus 3</p></li>
+</ul>
+
+<h2>Ordered</h2>
+
+<p>Tight:</p>
+
+<ol>
+<li>First</li>
+<li>Second</li>
+<li>Third</li>
+</ol>
+
+<p>and:</p>
+
+<ol>
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+</ol>
+
+<p>Loose using tabs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second</p></li>
+<li><p>Third</p></li>
+</ol>
+
+<p>and using spaces:</p>
+
+<ol>
+<li><p>One</p></li>
+<li><p>Two</p></li>
+<li><p>Three</p></li>
+</ol>
+
+<p>Multiple paragraphs:</p>
+
+<ol>
+<li><p>Item 1, graf one.</p>
+
+<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's
+back.</p></li>
+<li><p>Item 2.</p></li>
+<li><p>Item 3.</p></li>
+</ol>
+
+<h2>Nested</h2>
+
+<ul>
+<li>Tab
+<ul>
+<li>Tab
+<ul>
+<li>Tab</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<p>Here's another:</p>
+
+<ol>
+<li>First</li>
+<li>Second:
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li>Third</li>
+</ol>
+
+<p>Same thing but with paragraphs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second:</p>
+
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li><p>Third</p></li>
+</ol>
-<p><strong><em>This is strong and em.</em></strong></p>\r
-\r
-<p>So is <strong><em>this</em></strong> word.</p>\r
-\r
-<p><strong><em>This is strong and em.</em></strong></p>\r
-\r
-<p>So is <strong><em>this</em></strong> word.</p>\r
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
+
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
-<ul>\r
-<li><p>this is a list item\r
-indented with tabs</p></li>\r
-<li><p>this is a list item\r
-indented with spaces</p></li>\r
-</ul>\r
-\r
-<p>Code:</p>\r
-\r
-<pre><code>this code block is indented by one tab\r
-</code></pre>\r
-\r
-<p>And:</p>\r
-\r
-<pre><code> this code block is indented by two tabs\r
-</code></pre>\r
-\r
-<p>And:</p>\r
-\r
-<pre><code>+ this is an example list item\r
- indented with tabs\r
-\r
-+ this is an example list item\r
- indented with spaces\r
-</code></pre>\r
+<ul>
+<li><p>this is a list item
+indented with tabs</p></li>
+<li><p>this is a list item
+indented with spaces</p></li>
+</ul>
+
+<p>Code:</p>
+
+<pre><code>this code block is indented by one tab
+</code></pre>
+
+<p>And:</p>
+
+<pre><code> this code block is indented by two tabs
+</code></pre>
+
+<p>And:</p>
+
+<pre><code>+ this is an example list item
+ indented with tabs
+
++ this is an example list item
+ indented with spaces
+</code></pre>
-<blockquote>\r
-<p>A list within a blockquote:</p>\r
-<ul>\r
-<li>asterisk 1</li>\r
-<li>asterisk 2</li>\r
-<li>asterisk 3</li>\r
-</ul>\r
-</blockquote>\r
+<blockquote>
+<p>A list within a blockquote:</p>
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+</blockquote>
-\r
-\r
-<h1 id="lorem"> Lorem ipsum </h1>\r
-<p>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor\r
- incididunt ut labore et dolore magna aliqua. \r
-</p>\r
-<ul>\r
- <li><p class="first_item">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris\r
- nisi ut aliquip ex ea commodo consequat.\r
-</p>\r
-\r
- </li>\r
-\r
- <li><p>Duis aute irure dolor in reprehenderit in voluptate velit esse\r
- cillum dolore eu fugiat nulla pariatur2. Excepteur sint occaecat\r
- cupidatat non proident, sunt in culpa qui officia deserunt mollit\r
- anim id est laborum.\r
-</p>\r
-\r
- </li>\r
-</ul>\r
-<p>Duis aute <strong type="term">irure</strong> dolor in reprehenderit in voluptate\r
- velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\r
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt\r
- mollit anim id est laborum.\r
-</p>\r
-\r
-\r
+
+
+<h1 id="lorem"> Lorem ipsum </h1>
+<p>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+ incididunt ut labore et dolore magna aliqua.
+</p>
+<ul>
+ <li><p class="first_item">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
+ nisi ut aliquip ex ea commodo consequat.
+</p>
+
+ </li>
+
+ <li><p>Duis aute irure dolor in reprehenderit in voluptate velit esse
+ cillum dolore eu fugiat nulla pariatur2. Excepteur sint occaecat
+ cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+</p>
+
+ </li>
+</ul>
+<p>Duis aute <strong type="term">irure</strong> dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+</p>
+
+
-\r
-<p>Lorem ipsum <a href="mailto:yuri@domain.org">yuri@domain.org</a>, etc.\r
-</p>\r
-<ul>\r
- <li>\r
- An email address in a list\r
- </li>\r
-\r
- <li>\r
- <a href="mailto:yuri@domain.org">yuri@domain.org</a> \r
- </li>\r
-\r
- <li>\r
- Another item.\r
- </li>\r
-</ul>\r
-\r
-\r
+
+<p>Lorem ipsum <a href="mailto:yuri@domain.org">yuri@domain.org</a>, etc.
+</p>
+<ul>
+ <li>
+ An email address in a list
+ </li>
+
+ <li>
+ <a href="mailto:yuri@domain.org">yuri@domain.org</a>
+ </li>
+
+ <li>
+ Another item.
+ </li>
+</ul>
+
+
-\r
-<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod \r
- tempor incididunt ut labore et dolore magna aliqua<sup><a href="#fn1-903162597" id="fnr1-903162597">1</a></sup>. Ut enim ad minim \r
- veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea \r
- commodo consequat. Duis aute irure dolor in reprehenderit in voluptate \r
- velit esse cillum dolore eu fugiat nulla pariatur<sup><a href="#fn2-903162597" id="fnr2-903162597">2</a></sup>. Excepteur sint \r
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt \r
- mollit anim id est laborum.\r
-</p>\r
-<ul>\r
- <li>\r
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do \r
- eiusmod tempor incididunt ut labore et dolore<sup><a href="#fn3-903162597" id="fnr3-903162597">3</a></sup> magna aliqua. \r
- </li>\r
-</ul>\r
-<p>Duis aute irure dolor in reprehenderit in voluptate \r
- velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint \r
- occaecat cupidatat non proident, sunt in culpa qui officia deserunt \r
- mollit anim id est laborum.\r
-</p>\r
-\r
-<div class="footnote"><hr/><ol>\r
- <li id="fn1-903162597">\r
- Sed ut perspiciatis unde omnis iste natus error sit voluptatem \r
- accusantium doloremque laudantium, totam rem aperiam, eaque ipsa \r
- quae ab illo inventore veritatis et quasi architecto beatae vitae \r
- dicta sunt explicabo.<a href="#fnr1-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">↩</a>\r
- </li>\r
-\r
- <li id="fn2-903162597">\r
- Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit \r
- aut fugit, sed quia consequuntur magni dolores eos qui ratione \r
- voluptatem sequi nesciunt. <p> Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, \r
- consectetur, adipisci velit, sed quia non numquam eius modi \r
- tempora incidunt ut labore et dolore magnam aliquam quaerat \r
- voluptatem. <a href="#fnr2-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">↩</a>\r
-</p>\r
-\r
- </li>\r
-\r
- <li id="fn3-903162597">\r
- Ut enim ad minim veniam, quis nostrud exercitation ullamco \r
- laboris nisi ut aliquip ex ea commodo consequat. <a href="#fnr3-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">↩</a>\r
- </li>\r
-</ol>\r
-</div>\r
+
+<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua<sup><a href="#fn1-903162597" id="fnr1-903162597">1</a></sup>. Ut enim ad minim
+ veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
+ commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur<sup><a href="#fn2-903162597" id="fnr2-903162597">2</a></sup>. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+</p>
+<ul>
+ <li>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore<sup><a href="#fn3-903162597" id="fnr3-903162597">3</a></sup> magna aliqua.
+ </li>
+</ul>
+<p>Duis aute irure dolor in reprehenderit in voluptate
+ velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
+ occaecat cupidatat non proident, sunt in culpa qui officia deserunt
+ mollit anim id est laborum.
+</p>
+
+<div class="footnote"><hr/><ol>
+ <li id="fn1-903162597">
+ Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa
+ quae ab illo inventore veritatis et quasi architecto beatae vitae
+ dicta sunt explicabo.<a href="#fnr1-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">↩</a>
+ </li>
+
+ <li id="fn2-903162597">
+ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit
+ aut fugit, sed quia consequuntur magni dolores eos qui ratione
+ voluptatem sequi nesciunt. <p> Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
+ consectetur, adipisci velit, sed quia non numquam eius modi
+ tempora incidunt ut labore et dolore magnam aliquam quaerat
+ voluptatem. <a href="#fnr2-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">↩</a>
+</p>
+
+ </li>
+
+ <li id="fn3-903162597">
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco
+ laboris nisi ut aliquip ex ea commodo consequat. <a href="#fnr3-903162597" class="footnoteBackLink" title="Jump back to footnote 1 in the text">↩</a>
+ </li>
+</ol>
+</div>
-<h2>A plain header</h2>\r
-\r
-<p>Let's first have a plain header</p>\r
-\r
-<h1>An underlined header</h1>\r
-\r
-<p>(That's also useful)</p>\r
-\r
-<h1>A header with a <a href="http://www.link.com">link</a></h1>\r
-\r
-<p>First with a hash</p>\r
-\r
-<h2>Another with a <a href="http://www.link.com/">link</a></h2>\r
-\r
-<p>This time underlined</p>\r
+<h2>A plain header</h2>
+
+<p>Let's first have a plain header</p>
+
+<h1>An underlined header</h1>
+
+<p>(That's also useful)</p>
+
+<h1>A header with a <a href="http://www.link.com">link</a></h1>
+
+<p>First with a hash</p>
+
+<h2>Another with a <a href="http://www.link.com/">link</a></h2>
+
+<p>This time underlined</p>
-[DEFAULT]\r
-input_ext=.text\r
-normalize=1\r
-# comment out next line to run these tests\r
-#skip=1\r
-\r
-[Yuri-Footnotes]\r
-extensions=footnotes\r
-skip=1\r
-\r
+DEFAULT:
+ input_ext: .text
+ normalize: True
+ # comment out next line to run these tests
+ #skip: True
+
+Yuri-Footnotes:
+ extensions: footnotes
+ skip: True
+
-<p>AT&T has an ampersand in their name.</p>\r
-\r
-<p>AT&T is another way to write it.</p>\r
-\r
-<p>This & that.</p>\r
-\r
-<p>4 < 5.</p>\r
-\r
-<p>6 > 5.</p>\r
-\r
-<p>Here's a <a href="http://example.com/?foo=1&bar=2">link</a> with an ampersand in the URL.</p>\r
-\r
-<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&T">AT&T</a>.</p>\r
-\r
-<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>\r
-\r
-<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>\r
+<p>AT&T has an ampersand in their name.</p>
+
+<p>AT&T is another way to write it.</p>
+
+<p>This & that.</p>
+
+<p>4 < 5.</p>
+
+<p>6 > 5.</p>
+
+<p>Here's a <a href="http://example.com/?foo=1&bar=2">link</a> with an ampersand in the URL.</p>
+
+<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&T">AT&T</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
+
+<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
-<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>\r
-\r
-<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p>\r
-\r
-<ul>\r
-<li>In a list?</li>\r
-<li><a href="http://example.com/">http://example.com/</a></li>\r
-<li>It should.</li>\r
-</ul>\r
-\r
-<blockquote>\r
- <p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>\r
-</blockquote>\r
-\r
-<p>Auto-links should not occur here: <code><http://example.com/></code></p>\r
-\r
-<pre><code>or here: <http://example.com/>\r
-</code></pre>\r
+<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>
+
+<p>With an ampersand: <a href="http://example.com/?foo=1&bar=2">http://example.com/?foo=1&bar=2</a></p>
+
+<ul>
+<li>In a list?</li>
+<li><a href="http://example.com/">http://example.com/</a></li>
+<li>It should.</li>
+</ul>
+
+<blockquote>
+ <p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>
+</blockquote>
+
+<p>Auto-links should not occur here: <code><http://example.com/></code></p>
+
+<pre><code>or here: <http://example.com/>
+</code></pre>
-<p>These should all get escaped:</p>\r
-\r
-<p>Backslash: \</p>\r
-\r
-<p>Backtick: `</p>\r
-\r
-<p>Asterisk: *</p>\r
-\r
-<p>Underscore: _</p>\r
-\r
-<p>Left brace: {</p>\r
-\r
-<p>Right brace: }</p>\r
-\r
-<p>Left bracket: [</p>\r
-\r
-<p>Right bracket: ]</p>\r
-\r
-<p>Left paren: (</p>\r
-\r
-<p>Right paren: )</p>\r
-\r
-<p>Greater-than: ></p>\r
-\r
-<p>Hash: #</p>\r
-\r
-<p>Period: .</p>\r
-\r
-<p>Bang: !</p>\r
-\r
-<p>Plus: +</p>\r
-\r
-<p>Minus: -</p>\r
-\r
-<p>These should not, because they occur within a code block:</p>\r
-\r
-<pre><code>Backslash: \\\r
-\r
-Backtick: \`\r
-\r
-Asterisk: \*\r
-\r
-Underscore: \_\r
-\r
-Left brace: \{\r
-\r
-Right brace: \}\r
-\r
-Left bracket: \[\r
-\r
-Right bracket: \]\r
-\r
-Left paren: \(\r
-\r
-Right paren: \)\r
-\r
-Greater-than: \>\r
-\r
-Hash: \#\r
-\r
-Period: \.\r
-\r
-Bang: \!\r
-\r
-Plus: \+\r
-\r
-Minus: \-\r
-</code></pre>\r
-\r
-<p>Nor should these, which occur in code spans:</p>\r
-\r
-<p>Backslash: <code>\\</code></p>\r
-\r
-<p>Backtick: <code>\`</code></p>\r
-\r
-<p>Asterisk: <code>\*</code></p>\r
-\r
-<p>Underscore: <code>\_</code></p>\r
-\r
-<p>Left brace: <code>\{</code></p>\r
-\r
-<p>Right brace: <code>\}</code></p>\r
-\r
-<p>Left bracket: <code>\[</code></p>\r
-\r
-<p>Right bracket: <code>\]</code></p>\r
-\r
-<p>Left paren: <code>\(</code></p>\r
-\r
-<p>Right paren: <code>\)</code></p>\r
-\r
-<p>Greater-than: <code>\></code></p>\r
-\r
-<p>Hash: <code>\#</code></p>\r
-\r
-<p>Period: <code>\.</code></p>\r
-\r
-<p>Bang: <code>\!</code></p>\r
-\r
-<p>Plus: <code>\+</code></p>\r
-\r
-<p>Minus: <code>\-</code></p>\r
-\r
-\r
-<p>These should get escaped, even though they're matching pairs for\r
-other Markdown constructs:</p>\r
-\r
-<p>*asterisks*</p>\r
-\r
-<p>_underscores_</p>\r
-\r
-<p>`backticks`</p>\r
-\r
-<p>This is a code span with a literal backslash-backtick sequence: <code>\`</code></p>\r
-\r
-<p>This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.</p>\r
-\r
-<p>This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.</p>\r
+<p>These should all get escaped:</p>
+
+<p>Backslash: \</p>
+
+<p>Backtick: `</p>
+
+<p>Asterisk: *</p>
+
+<p>Underscore: _</p>
+
+<p>Left brace: {</p>
+
+<p>Right brace: }</p>
+
+<p>Left bracket: [</p>
+
+<p>Right bracket: ]</p>
+
+<p>Left paren: (</p>
+
+<p>Right paren: )</p>
+
+<p>Greater-than: ></p>
+
+<p>Hash: #</p>
+
+<p>Period: .</p>
+
+<p>Bang: !</p>
+
+<p>Plus: +</p>
+
+<p>Minus: -</p>
+
+<p>These should not, because they occur within a code block:</p>
+
+<pre><code>Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+</code></pre>
+
+<p>Nor should these, which occur in code spans:</p>
+
+<p>Backslash: <code>\\</code></p>
+
+<p>Backtick: <code>\`</code></p>
+
+<p>Asterisk: <code>\*</code></p>
+
+<p>Underscore: <code>\_</code></p>
+
+<p>Left brace: <code>\{</code></p>
+
+<p>Right brace: <code>\}</code></p>
+
+<p>Left bracket: <code>\[</code></p>
+
+<p>Right bracket: <code>\]</code></p>
+
+<p>Left paren: <code>\(</code></p>
+
+<p>Right paren: <code>\)</code></p>
+
+<p>Greater-than: <code>\></code></p>
+
+<p>Hash: <code>\#</code></p>
+
+<p>Period: <code>\.</code></p>
+
+<p>Bang: <code>\!</code></p>
+
+<p>Plus: <code>\+</code></p>
+
+<p>Minus: <code>\-</code></p>
+
+
+<p>These should get escaped, even though they're matching pairs for
+other Markdown constructs:</p>
+
+<p>*asterisks*</p>
+
+<p>_underscores_</p>
+
+<p>`backticks`</p>
+
+<p>This is a code span with a literal backslash-backtick sequence: <code>\`</code></p>
+
+<p>This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.</p>
+
+<p>This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.</p>
-<blockquote>\r
- <p>Example:</p>\r
-\r
-<pre><code>sub status {\r
- print "working";\r
-}\r
-</code></pre>\r
- \r
- <p>Or:</p>\r
-\r
-<pre><code>sub status {\r
- return "working";\r
-}\r
-</code></pre>\r
-</blockquote>\r
+<blockquote>
+ <p>Example:</p>
+
+<pre><code>sub status {
+ print "working";
+}
+</code></pre>
+
+ <p>Or:</p>
+
+<pre><code>sub status {
+ return "working";
+}
+</code></pre>
+</blockquote>
-<pre><code>code block on the first line\r
-</code></pre>\r
-\r
-<p>Regular text.</p>\r
-\r
-<pre><code>code block indented by spaces\r
-</code></pre>\r
-\r
-<p>Regular text.</p>\r
-\r
-<pre><code>the lines in this block \r
-all contain trailing spaces \r
-</code></pre>\r
-\r
-<p>Regular Text.</p>\r
-\r
-<pre><code>code block on the last line\r
-</code></pre>\r
+<pre><code>code block on the first line
+</code></pre>
+
+<p>Regular text.</p>
+
+<pre><code>code block indented by spaces
+</code></pre>
+
+<p>Regular text.</p>
+
+<pre><code>the lines in this block
+all contain trailing spaces
+</code></pre>
+
+<p>Regular Text.</p>
+
+<pre><code>code block on the last line
+</code></pre>
-<p><code><test a="</code> content of attribute <code>"></code></p>\r
-\r
-<p>Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span></p>\r
-\r
-<p>Here's how you put <code>`backticks`</code> in a code span.</p>\r
+<p><code><test a="</code> content of attribute <code>"></code></p>
+
+<p>Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span></p>
+
+<p>Here's how you put <code>`backticks`</code> in a code span.</p>
-<p>In Markdown 1.0.0 and earlier. Version\r
-8. This line turns into a list item.\r
-Because a hard-wrapped line in the\r
-middle of a paragraph looked like a\r
-list item.</p>\r
-\r
-<p>Here's one with a bullet.\r
-* criminey.</p>\r
+<p>In Markdown 1.0.0 and earlier. Version
+8. This line turns into a list item.
+Because a hard-wrapped line in the
+middle of a paragraph looked like a
+list item.</p>
+
+<p>Here's one with a bullet.
+* criminey.</p>
-<p>Dashes:</p>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>---\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>- - -\r
-</code></pre>\r
-\r
-<p>Asterisks:</p>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>***\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>* * *\r
-</code></pre>\r
-\r
-<p>Underscores:</p>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>___\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<hr />\r
-\r
-<pre><code>_ _ _\r
-</code></pre>\r
+<p>Dashes:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>---
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>- - -
+</code></pre>
+
+<p>Asterisks:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>***
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>* * *
+</code></pre>
+
+<p>Underscores:</p>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>___
+</code></pre>
+
+<hr />
+
+<hr />
+
+<hr />
+
+<hr />
+
+<pre><code>_ _ _
+</code></pre>
-<p><img src="/path/to/img.jpg" alt="Alt text" title="" /></p>\r
-\r
-<p><img src="/path/to/img.jpg" alt="Alt text" title="Optional title" /></p>\r
-\r
-<p>Inline within a paragraph: <a href="/url/">alt text</a>.</p>\r
-\r
-<p><img src="/url/" alt="alt text" title="title preceded by two spaces" /></p>\r
-\r
-<p><img src="/url/" alt="alt text" title="title has spaces afterward" /></p>\r
-\r
-<p><img src="/url/" alt="alt text" title="" /></p>\r
-\r
-<p><img src="/url/" alt="alt text" title="with a title" />.</p>\r
-\r
-<p><img src="" alt="Empty" title="" /></p>\r
-\r
-<p><img src="http://example.com/(parens).jpg" alt="this is a stupid URL" title="" /></p>\r
-\r
-<p><img src="/url/" alt="alt text" /></p>\r
-\r
-<p><img src="/url/" alt="alt text" title="Title here" /></p>\r
+<p><img src="/path/to/img.jpg" alt="Alt text" title="" /></p>
+
+<p><img src="/path/to/img.jpg" alt="Alt text" title="Optional title" /></p>
+
+<p>Inline within a paragraph: <a href="/url/">alt text</a>.</p>
+
+<p><img src="/url/" alt="alt text" title="title preceded by two spaces" /></p>
+
+<p><img src="/url/" alt="alt text" title="title has spaces afterward" /></p>
+
+<p><img src="/url/" alt="alt text" title="" /></p>
+
+<p><img src="/url/" alt="alt text" title="with a title" />.</p>
+
+<p><img src="" alt="Empty" title="" /></p>
+
+<p><img src="http://example.com/(parens).jpg" alt="this is a stupid URL" title="" /></p>
+
+<p><img src="/url/" alt="alt text" /></p>
+
+<p><img src="/url/" alt="alt text" title="Title here" /></p>
-<p>Simple block on one line:</p>\r
-\r
-<div>foo</div>\r
-\r
-<p>And nested without indentation:</p>\r
-\r
-<div>\r
-<div>\r
-<div>\r
-foo\r
-</div>\r
-<div style=">"/>\r
-</div>\r
-<div>bar</div>\r
-</div>\r
-\r
-<p>And with attributes:</p>\r
-\r
-<div>\r
- <div id="foo">\r
- </div>\r
-</div>\r
-\r
-<p>This was broken in 1.0.2b7:</p>\r
-\r
-<div class="inlinepage">\r
-<div class="toggleableend">\r
-foo\r
-</div>\r
-</div>\r
+<p>Simple block on one line:</p>
+
+<div>foo</div>
+
+<p>And nested without indentation:</p>
+
+<div>
+<div>
+<div>
+foo
+</div>
+<div style=">"/>
+</div>
+<div>bar</div>
+</div>
+
+<p>And with attributes:</p>
+
+<div>
+ <div id="foo">
+ </div>
+</div>
+
+<p>This was broken in 1.0.2b7:</p>
+
+<div class="inlinepage">
+<div class="toggleableend">
+foo
+</div>
+</div>
-<p>Here's a simple block:</p>\r
-\r
-<div>\r
- foo\r
-</div>\r
-\r
-<p>This should be a code block, though:</p>\r
-\r
-<pre><code><div>\r
- foo\r
-</div>\r
-</code></pre>\r
-\r
-<p>As should this:</p>\r
-\r
-<pre><code><div>foo</div>\r
-</code></pre>\r
-\r
-<p>Now, nested:</p>\r
-\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-<p>This should just be an HTML comment:</p>\r
-\r
-<!-- Comment -->\r
-\r
-<p>Multiline:</p>\r
-\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-<p>Code block:</p>\r
-\r
-<pre><code><!-- Comment -->\r
-</code></pre>\r
-\r
-<p>Just plain comment, with trailing spaces on the line:</p>\r
-\r
-<!-- foo --> \r
-\r
-<p>Code:</p>\r
-\r
-<pre><code><hr />\r
-</code></pre>\r
-\r
-<p>Hr's:</p>\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr> \r
-\r
-<hr/> \r
-\r
-<hr /> \r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
+<p>Here's a simple block:</p>
+
+<div>
+ foo
+</div>
+
+<p>This should be a code block, though:</p>
+
+<pre><code><div>
+ foo
+</div>
+</code></pre>
+
+<p>As should this:</p>
+
+<pre><code><div>foo</div>
+</code></pre>
+
+<p>Now, nested:</p>
+
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+<p>This should just be an HTML comment:</p>
+
+<!-- Comment -->
+
+<p>Multiline:</p>
+
+<!--
+Blah
+Blah
+-->
+
+<p>Code block:</p>
+
+<pre><code><!-- Comment -->
+</code></pre>
+
+<p>Just plain comment, with trailing spaces on the line:</p>
+
+<!-- foo -->
+
+<p>Code:</p>
+
+<pre><code><hr />
+</code></pre>
+
+<p>Hr's:</p>
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
-<p>Paragraph one.</p>\r
-\r
-<!-- This is a simple comment -->\r
-\r
-<!--\r
- This is another comment.\r
--->\r
-\r
-<p>Paragraph two.</p>\r
-\r
-<!-- one comment block -- -- with two comments -->\r
-\r
-<p>The end.</p>\r
+<p>Paragraph one.</p>
+
+<!-- This is a simple comment -->
+
+<!--
+ This is another comment.
+-->
+
+<p>Paragraph two.</p>
+
+<!-- one comment block -- -- with two comments -->
+
+<p>The end.</p>
-<p>Just a <a href="/url/">URL</a>.</p>\r
-\r
-<p><a href="/url/" title="title">URL and title</a>.</p>\r
-\r
-<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>\r
-\r
-<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>\r
-\r
-<p><a href="/url/" title="title has spaces afterward">URL and title</a>.</p>\r
-\r
-<p><a href="/url/">URL wrapped in angle brackets</a>.</p>\r
-\r
-<p><a href="/url/" title="Here's the title">URL w/ angle brackets + title</a>.</p>\r
-\r
-<p><a href="">Empty</a>.</p>\r
-\r
-<p><a href="http://en.wikipedia.org/wiki/WIMP_(computing)">With parens in the URL</a></p>\r
-\r
-<p>(With outer parens and <a href="/foo(bar)">parens in url</a>)</p>\r
-\r
-<p><a href="/foo(bar)" title="and a title">With parens in the URL</a></p>\r
-\r
-<p>(With outer parens and <a href="/foo(bar)" title="and a title">parens in url</a>)</p>\r
+<p>Just a <a href="/url/">URL</a>.</p>
+
+<p><a href="/url/" title="title">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>
+
+<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>
+
+<p><a href="/url/" title="title has spaces afterward">URL and title</a>.</p>
+
+<p><a href="/url/">URL wrapped in angle brackets</a>.</p>
+
+<p><a href="/url/" title="Here's the title">URL w/ angle brackets + title</a>.</p>
+
+<p><a href="">Empty</a>.</p>
+
+<p><a href="http://en.wikipedia.org/wiki/WIMP_(computing)">With parens in the URL</a></p>
+
+<p>(With outer parens and <a href="/foo(bar)">parens in url</a>)</p>
+
+<p><a href="/foo(bar)" title="and a title">With parens in the URL</a></p>
+
+<p>(With outer parens and <a href="/foo(bar)" title="and a title">parens in url</a>)</p>
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-\r
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-\r
-<p>Foo <a href="/url/" title="Title">bar</a>.</p>\r
-\r
-<p>With <a href="/url/">embedded [brackets]</a>.</p>\r
-\r
-<p>Indented <a href="/url">once</a>.</p>\r
-\r
-<p>Indented <a href="/url">twice</a>.</p>\r
-\r
-<p>Indented <a href="/url">thrice</a>.</p>\r
-\r
-<p>Indented [four][] times.</p>\r
-\r
-<pre><code>[four]: /url\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<p><a href="foo">this</a> should work</p>\r
-\r
-<p>So should <a href="foo">this</a>.</p>\r
-\r
-<p>And <a href="foo">this</a>.</p>\r
-\r
-<p>And <a href="foo">this</a>.</p>\r
-\r
-<p>And <a href="foo">this</a>.</p>\r
-\r
-<p>But not [that] [].</p>\r
-\r
-<p>Nor [that][].</p>\r
-\r
-<p>Nor [that].</p>\r
-\r
-<p>[Something in brackets like <a href="foo">this</a> should work]</p>\r
-\r
-<p>[Same with <a href="foo">this</a>.]</p>\r
-\r
-<p>In this case, <a href="/somethingelse/">this</a> points to something else.</p>\r
-\r
-<p>Backslashing should suppress [this] and [this].</p>\r
-\r
-<hr />\r
-\r
-<p>Here's one where the <a href="/url/">link\r
-breaks</a> across lines.</p>\r
-\r
-<p>Here's another where the <a href="/url/">link \r
-breaks</a> across lines, but with a line-ending space.</p>\r
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title">bar</a>.</p>
+
+<p>With <a href="/url/">embedded [brackets]</a>.</p>
+
+<p>Indented <a href="/url">once</a>.</p>
+
+<p>Indented <a href="/url">twice</a>.</p>
+
+<p>Indented <a href="/url">thrice</a>.</p>
+
+<p>Indented [four][] times.</p>
+
+<pre><code>[four]: /url
+</code></pre>
+
+<hr />
+
+<p><a href="foo">this</a> should work</p>
+
+<p>So should <a href="foo">this</a>.</p>
+
+<p>And <a href="foo">this</a>.</p>
+
+<p>And <a href="foo">this</a>.</p>
+
+<p>And <a href="foo">this</a>.</p>
+
+<p>But not [that] [].</p>
+
+<p>Nor [that][].</p>
+
+<p>Nor [that].</p>
+
+<p>[Something in brackets like <a href="foo">this</a> should work]</p>
+
+<p>[Same with <a href="foo">this</a>.]</p>
+
+<p>In this case, <a href="/somethingelse/">this</a> points to something else.</p>
+
+<p>Backslashing should suppress [this] and [this].</p>
+
+<hr />
+
+<p>Here's one where the <a href="/url/">link
+breaks</a> across lines.</p>
+
+<p>Here's another where the <a href="/url/">link
+breaks</a> across lines, but with a line-ending space.</p>
-<p>This is the <a href="/simple">simple case</a>.</p>\r
-\r
-<p>This one has a <a href="/foo">line\r
-break</a>.</p>\r
-\r
-<p>This one has a <a href="/foo">line \r
-break</a> with a line-ending space.</p>\r
-\r
-<p><a href="/that">this</a> and the <a href="/other">other</a></p>\r
+<p>This is the <a href="/simple">simple case</a>.</p>
+
+<p>This one has a <a href="/foo">line
+break</a>.</p>
+
+<p>This one has a <a href="/foo">line
+break</a> with a line-ending space.</p>
+
+<p><a href="/that">this</a> and the <a href="/other">other</a></p>
-<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>\r
-\r
-<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>\r
+<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
+
+<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
-<h1>Markdown: Basics</h1>\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a class="selected" title="Markdown Basics">Basics</a></li>\r
- <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<h2>Getting the Gist of Markdown's Formatting Syntax</h2>\r
-\r
-<p>This page offers a brief overview of what it's like to use Markdown.\r
-The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for\r
-every feature, but Markdown should be very easy to pick up simply by\r
-looking at a few examples of it in action. The examples on this page\r
-are written in a before/after style, showing example syntax and the\r
-HTML output produced by Markdown.</p>\r
-\r
-<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a\r
-web application that allows you type your own Markdown-formatted text\r
-and translate it to XHTML.</p>\r
-\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-\r
-<h2>Paragraphs, Headers, Blockquotes</h2>\r
-\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-\r
-<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.\r
-Setext-style headers for <code><h1></code> and <code><h2></code> are created by\r
-"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.\r
-To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the\r
-beginning of the line -- the number of hashes equals the resulting\r
-HTML header level.</p>\r
-\r
-<p>Blockquotes are indicated using email-style '<code>></code>' angle brackets.</p>\r
-\r
-<p>Markdown:</p>\r
-\r
-<pre><code>A First Level Header\r
-====================\r
-\r
-A Second Level Header\r
----------------------\r
-\r
-Now is the time for all good men to come to\r
-the aid of their country. This is just a\r
-regular paragraph.\r
-\r
-The quick brown fox jumped over the lazy\r
-dog's back.\r
-\r
-### Header 3\r
-\r
-> This is a blockquote.\r
-> \r
-> This is the second paragraph in the blockquote.\r
->\r
-> ## This is an H2 in a blockquote\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><h1>A First Level Header</h1>\r
-\r
-<h2>A Second Level Header</h2>\r
-\r
-<p>Now is the time for all good men to come to\r
-the aid of their country. This is just a\r
-regular paragraph.</p>\r
-\r
-<p>The quick brown fox jumped over the lazy\r
-dog's back.</p>\r
-\r
-<h3>Header 3</h3>\r
-\r
-<blockquote>\r
- <p>This is a blockquote.</p>\r
-\r
- <p>This is the second paragraph in the blockquote.</p>\r
-\r
- <h2>This is an H2 in a blockquote</h2>\r
-</blockquote>\r
-</code></pre>\r
-\r
-<h3>Phrase Emphasis</h3>\r
-\r
-<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>\r
-\r
-<p>Markdown:</p>\r
-\r
-<pre><code>Some of these words *are emphasized*.\r
-Some of these words _are emphasized also_.\r
-\r
-Use two asterisks for **strong emphasis**.\r
-Or, if you prefer, __use two underscores instead__.\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>Some of these words <em>are emphasized</em>.\r
-Some of these words <em>are emphasized also</em>.</p>\r
-\r
-<p>Use two asterisks for <strong>strong emphasis</strong>.\r
-Or, if you prefer, <strong>use two underscores instead</strong>.</p>\r
-</code></pre>\r
-\r
-<h2>Lists</h2>\r
-\r
-<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,\r
-<code>+</code>, and <code>-</code>) as list markers. These three markers are\r
-interchangable; this:</p>\r
-\r
-<pre><code>* Candy.\r
-* Gum.\r
-* Booze.\r
-</code></pre>\r
-\r
-<p>this:</p>\r
-\r
-<pre><code>+ Candy.\r
-+ Gum.\r
-+ Booze.\r
-</code></pre>\r
-\r
-<p>and this:</p>\r
-\r
-<pre><code>- Candy.\r
-- Gum.\r
-- Booze.\r
-</code></pre>\r
-\r
-<p>all produce the same output:</p>\r
-\r
-<pre><code><ul>\r
-<li>Candy.</li>\r
-<li>Gum.</li>\r
-<li>Booze.</li>\r
-</ul>\r
-</code></pre>\r
-\r
-<p>Ordered (numbered) lists use regular numbers, followed by periods, as\r
-list markers:</p>\r
-\r
-<pre><code>1. Red\r
-2. Green\r
-3. Blue\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><ol>\r
-<li>Red</li>\r
-<li>Green</li>\r
-<li>Blue</li>\r
-</ol>\r
-</code></pre>\r
-\r
-<p>If you put blank lines between items, you'll get <code><p></code> tags for the\r
-list item text. You can create multi-paragraph list items by indenting\r
-the paragraphs by 4 spaces or 1 tab:</p>\r
-\r
-<pre><code>* A list item.\r
-\r
- With multiple paragraphs.\r
-\r
-* Another item in the list.\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><ul>\r
-<li><p>A list item.</p>\r
-<p>With multiple paragraphs.</p></li>\r
-<li><p>Another item in the list.</p></li>\r
-</ul>\r
-</code></pre>\r
-\r
-<h3>Links</h3>\r
-\r
-<p>Markdown supports two styles for creating links: <em>inline</em> and\r
-<em>reference</em>. With both styles, you use square brackets to delimit the\r
-text you want to turn into a link.</p>\r
-\r
-<p>Inline-style links use parentheses immediately after the link text.\r
-For example:</p>\r
-\r
-<pre><code>This is an [example link](http://example.com/).\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>This is an <a href="http://example.com/">\r
-example link</a>.</p>\r
-</code></pre>\r
-\r
-<p>Optionally, you may include a title attribute in the parentheses:</p>\r
-\r
-<pre><code>This is an [example link](http://example.com/ "With a Title").\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>This is an <a href="http://example.com/" title="With a Title">\r
-example link</a>.</p>\r
-</code></pre>\r
-\r
-<p>Reference-style links allow you to refer to your links by names, which\r
-you define elsewhere in your document:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google][1] than from\r
-[Yahoo][2] or [MSN][3].\r
-\r
-[1]: http://google.com/ "Google"\r
-[2]: http://search.yahoo.com/ "Yahoo Search"\r
-[3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from <a href="http://search.yahoo.com/"\r
-title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"\r
-title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-\r
-<p>The title attribute is optional. Link names may contain letters,\r
-numbers and spaces, but are <em>not</em> case sensitive:</p>\r
-\r
-<pre><code>I start my morning with a cup of coffee and\r
-[The New York Times][NY Times].\r
-\r
-[ny times]: http://www.nytimes.com/\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>I start my morning with a cup of coffee and\r
-<a href="http://www.nytimes.com/">The New York Times</a>.</p>\r
-</code></pre>\r
-\r
-<h3>Images</h3>\r
-\r
-<p>Image syntax is very much like link syntax.</p>\r
-\r
-<p>Inline (titles are optional):</p>\r
-\r
-<pre><code>\r
-</code></pre>\r
-\r
-<p>Reference-style:</p>\r
-\r
-<pre><code>![alt text][id]\r
-\r
-[id]: /path/to/img.jpg "Title"\r
-</code></pre>\r
-\r
-<p>Both of the above examples produce the same output:</p>\r
-\r
-<pre><code><img src="/path/to/img.jpg" alt="alt text" title="Title" />\r
-</code></pre>\r
-\r
-<h3>Code</h3>\r
-\r
-<p>In a regular paragraph, you can create code span by wrapping text in\r
-backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or\r
-<code>></code>) will automatically be translated into HTML entities. This makes\r
-it easy to use Markdown to write about HTML example code:</p>\r
-\r
-<pre><code>I strongly recommend against using any `<blink>` tags.\r
-\r
-I wish SmartyPants used named entities like `&mdash;`\r
-instead of decimal-encoded entites like `&#8212;`.\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>I strongly recommend against using any\r
-<code>&lt;blink&gt;</code> tags.</p>\r
-\r
-<p>I wish SmartyPants used named entities like\r
-<code>&amp;mdash;</code> instead of decimal-encoded\r
-entites like <code>&amp;#8212;</code>.</p>\r
-</code></pre>\r
-\r
-<p>To specify an entire block of pre-formatted code, indent every line of\r
-the block by 4 spaces or 1 tab. Just like with code spans, <code>&</code>, <code><</code>,\r
-and <code>></code> characters will be escaped automatically.</p>\r
-\r
-<p>Markdown:</p>\r
-\r
-<pre><code>If you want your page to validate under XHTML 1.0 Strict,\r
-you've got to put paragraph tags in your blockquotes:\r
-\r
- <blockquote>\r
- <p>For example.</p>\r
- </blockquote>\r
-</code></pre>\r
-\r
-<p>Output:</p>\r
-\r
-<pre><code><p>If you want your page to validate under XHTML 1.0 Strict,\r
-you've got to put paragraph tags in your blockquotes:</p>\r
-\r
-<pre><code>&lt;blockquote&gt;\r
- &lt;p&gt;For example.&lt;/p&gt;\r
-&lt;/blockquote&gt;\r
-</code></pre>\r
-</code></pre>\r
+<h1>Markdown: Basics</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
+
+<p>This page offers a brief overview of what it's like to use Markdown.
+The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
+every feature, but Markdown should be very easy to pick up simply by
+looking at a few examples of it in action. The examples on this page
+are written in a before/after style, showing example syntax and the
+HTML output produced by Markdown.</p>
+
+<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
+web application that allows you type your own Markdown-formatted text
+and translate it to XHTML.</p>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<h2>Paragraphs, Headers, Blockquotes</h2>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+
+<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
+Setext-style headers for <code><h1></code> and <code><h2></code> are created by
+"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
+To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
+beginning of the line -- the number of hashes equals the resulting
+HTML header level.</p>
+
+<p>Blockquotes are indicated using email-style '<code>></code>' angle brackets.</p>
+
+<p>Markdown:</p>
+
+<pre><code>A First Level Header
+====================
+
+A Second Level Header
+---------------------
+
+Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.
+
+The quick brown fox jumped over the lazy
+dog's back.
+
+### Header 3
+
+> This is a blockquote.
+>
+> This is the second paragraph in the blockquote.
+>
+> ## This is an H2 in a blockquote
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><h1>A First Level Header</h1>
+
+<h2>A Second Level Header</h2>
+
+<p>Now is the time for all good men to come to
+the aid of their country. This is just a
+regular paragraph.</p>
+
+<p>The quick brown fox jumped over the lazy
+dog's back.</p>
+
+<h3>Header 3</h3>
+
+<blockquote>
+ <p>This is a blockquote.</p>
+
+ <p>This is the second paragraph in the blockquote.</p>
+
+ <h2>This is an H2 in a blockquote</h2>
+</blockquote>
+</code></pre>
+
+<h3>Phrase Emphasis</h3>
+
+<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
+
+<p>Markdown:</p>
+
+<pre><code>Some of these words *are emphasized*.
+Some of these words _are emphasized also_.
+
+Use two asterisks for **strong emphasis**.
+Or, if you prefer, __use two underscores instead__.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>Some of these words <em>are emphasized</em>.
+Some of these words <em>are emphasized also</em>.</p>
+
+<p>Use two asterisks for <strong>strong emphasis</strong>.
+Or, if you prefer, <strong>use two underscores instead</strong>.</p>
+</code></pre>
+
+<h2>Lists</h2>
+
+<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
+<code>+</code>, and <code>-</code>) as list markers. These three markers are
+interchangable; this:</p>
+
+<pre><code>* Candy.
+* Gum.
+* Booze.
+</code></pre>
+
+<p>this:</p>
+
+<pre><code>+ Candy.
++ Gum.
++ Booze.
+</code></pre>
+
+<p>and this:</p>
+
+<pre><code>- Candy.
+- Gum.
+- Booze.
+</code></pre>
+
+<p>all produce the same output:</p>
+
+<pre><code><ul>
+<li>Candy.</li>
+<li>Gum.</li>
+<li>Booze.</li>
+</ul>
+</code></pre>
+
+<p>Ordered (numbered) lists use regular numbers, followed by periods, as
+list markers:</p>
+
+<pre><code>1. Red
+2. Green
+3. Blue
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><ol>
+<li>Red</li>
+<li>Green</li>
+<li>Blue</li>
+</ol>
+</code></pre>
+
+<p>If you put blank lines between items, you'll get <code><p></code> tags for the
+list item text. You can create multi-paragraph list items by indenting
+the paragraphs by 4 spaces or 1 tab:</p>
+
+<pre><code>* A list item.
+
+ With multiple paragraphs.
+
+* Another item in the list.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><ul>
+<li><p>A list item.</p>
+<p>With multiple paragraphs.</p></li>
+<li><p>Another item in the list.</p></li>
+</ul>
+</code></pre>
+
+<h3>Links</h3>
+
+<p>Markdown supports two styles for creating links: <em>inline</em> and
+<em>reference</em>. With both styles, you use square brackets to delimit the
+text you want to turn into a link.</p>
+
+<p>Inline-style links use parentheses immediately after the link text.
+For example:</p>
+
+<pre><code>This is an [example link](http://example.com/).
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>This is an <a href="http://example.com/">
+example link</a>.</p>
+</code></pre>
+
+<p>Optionally, you may include a title attribute in the parentheses:</p>
+
+<pre><code>This is an [example link](http://example.com/ "With a Title").
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>This is an <a href="http://example.com/" title="With a Title">
+example link</a>.</p>
+</code></pre>
+
+<p>Reference-style links allow you to refer to your links by names, which
+you define elsewhere in your document:</p>
+
+<pre><code>I get 10 times more traffic from [Google][1] than from
+[Yahoo][2] or [MSN][3].
+
+[1]: http://google.com/ "Google"
+[2]: http://search.yahoo.com/ "Yahoo Search"
+[3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from <a href="http://search.yahoo.com/"
+title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
+title="MSN Search">MSN</a>.</p>
+</code></pre>
+
+<p>The title attribute is optional. Link names may contain letters,
+numbers and spaces, but are <em>not</em> case sensitive:</p>
+
+<pre><code>I start my morning with a cup of coffee and
+[The New York Times][NY Times].
+
+[ny times]: http://www.nytimes.com/
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>I start my morning with a cup of coffee and
+<a href="http://www.nytimes.com/">The New York Times</a>.</p>
+</code></pre>
+
+<h3>Images</h3>
+
+<p>Image syntax is very much like link syntax.</p>
+
+<p>Inline (titles are optional):</p>
+
+<pre><code>
+</code></pre>
+
+<p>Reference-style:</p>
+
+<pre><code>![alt text][id]
+
+[id]: /path/to/img.jpg "Title"
+</code></pre>
+
+<p>Both of the above examples produce the same output:</p>
+
+<pre><code><img src="/path/to/img.jpg" alt="alt text" title="Title" />
+</code></pre>
+
+<h3>Code</h3>
+
+<p>In a regular paragraph, you can create code span by wrapping text in
+backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or
+<code>></code>) will automatically be translated into HTML entities. This makes
+it easy to use Markdown to write about HTML example code:</p>
+
+<pre><code>I strongly recommend against using any `<blink>` tags.
+
+I wish SmartyPants used named entities like `&mdash;`
+instead of decimal-encoded entites like `&#8212;`.
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>I strongly recommend against using any
+<code>&lt;blink&gt;</code> tags.</p>
+
+<p>I wish SmartyPants used named entities like
+<code>&amp;mdash;</code> instead of decimal-encoded
+entites like <code>&amp;#8212;</code>.</p>
+</code></pre>
+
+<p>To specify an entire block of pre-formatted code, indent every line of
+the block by 4 spaces or 1 tab. Just like with code spans, <code>&</code>, <code><</code>,
+and <code>></code> characters will be escaped automatically.</p>
+
+<p>Markdown:</p>
+
+<pre><code>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:
+
+ <blockquote>
+ <p>For example.</p>
+ </blockquote>
+</code></pre>
+
+<p>Output:</p>
+
+<pre><code><p>If you want your page to validate under XHTML 1.0 Strict,
+you've got to put paragraph tags in your blockquotes:</p>
+
+<pre><code>&lt;blockquote&gt;
+ &lt;p&gt;For example.&lt;/p&gt;
+&lt;/blockquote&gt;
+</code></pre>
+</code></pre>
-<h1>Markdown: Syntax</h1>\r
-\r
-<ul id="ProjectSubmenu">\r
- <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>\r
- <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>\r
- <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>\r
- <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>\r
- <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>\r
-</ul>\r
-\r
-<ul>\r
-<li><a href="#overview">Overview</a>\r
-<ul>\r
-<li><a href="#philosophy">Philosophy</a></li>\r
-<li><a href="#html">Inline HTML</a></li>\r
-<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>\r
-</ul></li>\r
-<li><a href="#block">Block Elements</a>\r
-<ul>\r
-<li><a href="#p">Paragraphs and Line Breaks</a></li>\r
-<li><a href="#header">Headers</a></li>\r
-<li><a href="#blockquote">Blockquotes</a></li>\r
-<li><a href="#list">Lists</a></li>\r
-<li><a href="#precode">Code Blocks</a></li>\r
-<li><a href="#hr">Horizontal Rules</a></li>\r
-</ul></li>\r
-<li><a href="#span">Span Elements</a>\r
-<ul>\r
-<li><a href="#link">Links</a></li>\r
-<li><a href="#em">Emphasis</a></li>\r
-<li><a href="#code">Code</a></li>\r
-<li><a href="#img">Images</a></li>\r
-</ul></li>\r
-<li><a href="#misc">Miscellaneous</a>\r
-<ul>\r
-<li><a href="#backslash">Backslash Escapes</a></li>\r
-<li><a href="#autolink">Automatic Links</a></li>\r
-</ul></li>\r
-</ul>\r
-\r
-<p><strong>Note:</strong> This document is itself written using Markdown; you\r
-can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>\r
-\r
-<hr />\r
-\r
-<h2 id="overview">Overview</h2>\r
-\r
-<h3 id="philosophy">Philosophy</h3>\r
-\r
-<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>\r
-\r
-<p>Readability, however, is emphasized above all else. A Markdown-formatted\r
-document should be publishable as-is, as plain text, without looking\r
-like it's been marked up with tags or formatting instructions. While\r
-Markdown's syntax has been influenced by several existing text-to-HTML\r
-filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,\r
-<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of\r
-inspiration for Markdown's syntax is the format of plain text email.</p>\r
-\r
-<p>To this end, Markdown's syntax is comprised entirely of punctuation\r
-characters, which punctuation characters have been carefully chosen so\r
-as to look like what they mean. E.g., asterisks around a word actually\r
-look like *emphasis*. Markdown lists look like, well, lists. Even\r
-blockquotes look like quoted passages of text, assuming you've ever\r
-used email.</p>\r
-\r
-<h3 id="html">Inline HTML</h3>\r
-\r
-<p>Markdown's syntax is intended for one purpose: to be used as a\r
-format for <em>writing</em> for the web.</p>\r
-\r
-<p>Markdown is not a replacement for HTML, or even close to it. Its\r
-syntax is very small, corresponding only to a very small subset of\r
-HTML tags. The idea is <em>not</em> to create a syntax that makes it easier\r
-to insert HTML tags. In my opinion, HTML tags are already easy to\r
-insert. The idea for Markdown is to make it easy to read, write, and\r
-edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>\r
-format. Thus, Markdown's formatting syntax only addresses issues that\r
-can be conveyed in plain text.</p>\r
-\r
-<p>For any markup that is not covered by Markdown's syntax, you simply\r
-use HTML itself. There's no need to preface it or delimit it to\r
-indicate that you're switching from Markdown to HTML; you just use\r
-the tags.</p>\r
-\r
-<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,\r
-<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding\r
-content by blank lines, and the start and end tags of the block should\r
-not be indented with tabs or spaces. Markdown is smart enough not\r
-to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>\r
-\r
-<p>For example, to add an HTML table to a Markdown article:</p>\r
-\r
-<pre><code>This is a regular paragraph.\r
-\r
-<table>\r
- <tr>\r
- <td>Foo</td>\r
- </tr>\r
-</table>\r
-\r
-This is another regular paragraph.\r
-</code></pre>\r
-\r
-<p>Note that Markdown formatting syntax is not processed within block-level\r
-HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an\r
-HTML block.</p>\r
-\r
-<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be\r
-used anywhere in a Markdown paragraph, list item, or header. If you\r
-want, you can even use HTML tags instead of Markdown formatting; e.g. if\r
-you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's\r
-link or image syntax, go right ahead.</p>\r
-\r
-<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within\r
-span-level tags.</p>\r
-\r
-<h3 id="autoescape">Automatic Escaping for Special Characters</h3>\r
-\r
-<p>In HTML, there are two characters that demand special treatment: <code><</code>\r
-and <code>&</code>. Left angle brackets are used to start tags; ampersands are\r
-used to denote HTML entities. If you want to use them as literal\r
-characters, you must escape them as entities, e.g. <code>&lt;</code>, and\r
-<code>&amp;</code>.</p>\r
-\r
-<p>Ampersands in particular are bedeviling for web writers. If you want to\r
-write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to\r
-escape ampersands within URLs. Thus, if you want to link to:</p>\r
-\r
-<pre><code>http://images.google.com/images?num=30&q=larry+bird\r
-</code></pre>\r
-\r
-<p>you need to encode the URL as:</p>\r
-\r
-<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird\r
-</code></pre>\r
-\r
-<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to\r
-forget, and is probably the single most common source of HTML validation\r
-errors in otherwise well-marked-up web sites.</p>\r
-\r
-<p>Markdown allows you to use these characters naturally, taking care of\r
-all the necessary escaping for you. If you use an ampersand as part of\r
-an HTML entity, it remains unchanged; otherwise it will be translated\r
-into <code>&amp;</code>.</p>\r
-\r
-<p>So, if you want to include a copyright symbol in your article, you can write:</p>\r
-\r
-<pre><code>&copy;\r
-</code></pre>\r
-\r
-<p>and Markdown will leave it alone. But if you write:</p>\r
-\r
-<pre><code>AT&T\r
-</code></pre>\r
-\r
-<p>Markdown will translate it to:</p>\r
-\r
-<pre><code>AT&amp;T\r
-</code></pre>\r
-\r
-<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use\r
-angle brackets as delimiters for HTML tags, Markdown will treat them as\r
-such. But if you write:</p>\r
-\r
-<pre><code>4 < 5\r
-</code></pre>\r
-\r
-<p>Markdown will translate it to:</p>\r
-\r
-<pre><code>4 &lt; 5\r
-</code></pre>\r
-\r
-<p>However, inside Markdown code spans and blocks, angle brackets and\r
-ampersands are <em>always</em> encoded automatically. This makes it easy to use\r
-Markdown to write about HTML code. (As opposed to raw HTML, which is a\r
-terrible format for writing about HTML syntax, because every single <code><</code>\r
-and <code>&</code> in your example code needs to be escaped.)</p>\r
-\r
-<hr />\r
-\r
-<h2 id="block">Block Elements</h2>\r
-\r
-<h3 id="p">Paragraphs and Line Breaks</h3>\r
-\r
-<p>A paragraph is simply one or more consecutive lines of text, separated\r
-by one or more blank lines. (A blank line is any line that looks like a\r
-blank line -- a line containing nothing but spaces or tabs is considered\r
-blank.) Normal paragraphs should not be intended with spaces or tabs.</p>\r
-\r
-<p>The implication of the "one or more consecutive lines of text" rule is\r
-that Markdown supports "hard-wrapped" text paragraphs. This differs\r
-significantly from most other text-to-HTML formatters (including Movable\r
-Type's "Convert Line Breaks" option) which translate every line break\r
-character in a paragraph into a <code><br /></code> tag.</p>\r
-\r
-<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you\r
-end a line with two or more spaces, then type return.</p>\r
-\r
-<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic\r
-"every line break is a <code><br /></code>" rule wouldn't work for Markdown.\r
-Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>\r
-work best -- and look better -- when you format them with hard breaks.</p>\r
-\r
-<h3 id="header">Headers</h3>\r
-\r
-<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>\r
-\r
-<p>Setext-style headers are "underlined" using equal signs (for first-level\r
-headers) and dashes (for second-level headers). For example:</p>\r
-\r
-<pre><code>This is an H1\r
-=============\r
-\r
-This is an H2\r
--------------\r
-</code></pre>\r
-\r
-<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>\r
-\r
-<p>Atx-style headers use 1-6 hash characters at the start of the line,\r
-corresponding to header levels 1-6. For example:</p>\r
-\r
-<pre><code># This is an H1\r
-\r
-## This is an H2\r
-\r
-###### This is an H6\r
-</code></pre>\r
-\r
-<p>Optionally, you may "close" atx-style headers. This is purely\r
-cosmetic -- you can use this if you think it looks better. The\r
-closing hashes don't even need to match the number of hashes\r
-used to open the header. (The number of opening hashes\r
-determines the header level.) :</p>\r
-\r
-<pre><code># This is an H1 #\r
-\r
-## This is an H2 ##\r
-\r
-### This is an H3 ######\r
-</code></pre>\r
-\r
-<h3 id="blockquote">Blockquotes</h3>\r
-\r
-<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're\r
-familiar with quoting passages of text in an email message, then you\r
-know how to create a blockquote in Markdown. It looks best if you hard\r
-wrap the text and put a <code>></code> before every line:</p>\r
-\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-> \r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-> id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>Markdown allows you to be lazy and only put the <code>></code> before the first\r
-line of a hard-wrapped paragraph:</p>\r
-\r
-<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,\r
-consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.\r
-Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.\r
-\r
-> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse\r
-id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by\r
-adding additional levels of <code>></code>:</p>\r
-\r
-<pre><code>> This is the first level of quoting.\r
->\r
-> > This is nested blockquote.\r
->\r
-> Back to the first level.\r
-</code></pre>\r
-\r
-<p>Blockquotes can contain other Markdown elements, including headers, lists,\r
-and code blocks:</p>\r
-\r
-<pre><code>> ## This is a header.\r
-> \r
-> 1. This is the first list item.\r
-> 2. This is the second list item.\r
-> \r
-> Here's some example code:\r
-> \r
-> return shell_exec("echo $input | $markdown_script");\r
-</code></pre>\r
-\r
-<p>Any decent text editor should make email-style quoting easy. For\r
-example, with BBEdit, you can make a selection and choose Increase\r
-Quote Level from the Text menu.</p>\r
-\r
-<h3 id="list">Lists</h3>\r
-\r
-<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>\r
-\r
-<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably\r
--- as list markers:</p>\r
-\r
-<pre><code>* Red\r
-* Green\r
-* Blue\r
-</code></pre>\r
-\r
-<p>is equivalent to:</p>\r
-\r
-<pre><code>+ Red\r
-+ Green\r
-+ Blue\r
-</code></pre>\r
-\r
-<p>and:</p>\r
-\r
-<pre><code>- Red\r
-- Green\r
-- Blue\r
-</code></pre>\r
-\r
-<p>Ordered lists use numbers followed by periods:</p>\r
-\r
-<pre><code>1. Bird\r
-2. McHale\r
-3. Parish\r
-</code></pre>\r
-\r
-<p>It's important to note that the actual numbers you use to mark the\r
-list have no effect on the HTML output Markdown produces. The HTML\r
-Markdown produces from the above list is:</p>\r
-\r
-<pre><code><ol>\r
-<li>Bird</li>\r
-<li>McHale</li>\r
-<li>Parish</li>\r
-</ol>\r
-</code></pre>\r
-\r
-<p>If you instead wrote the list in Markdown like this:</p>\r
-\r
-<pre><code>1. Bird\r
-1. McHale\r
-1. Parish\r
-</code></pre>\r
-\r
-<p>or even:</p>\r
-\r
-<pre><code>3. Bird\r
-1. McHale\r
-8. Parish\r
-</code></pre>\r
-\r
-<p>you'd get the exact same HTML output. The point is, if you want to,\r
-you can use ordinal numbers in your ordered Markdown lists, so that\r
-the numbers in your source match the numbers in your published HTML.\r
-But if you want to be lazy, you don't have to.</p>\r
-\r
-<p>If you do use lazy list numbering, however, you should still start the\r
-list with the number 1. At some point in the future, Markdown may support\r
-starting ordered lists at an arbitrary number.</p>\r
-\r
-<p>List markers typically start at the left margin, but may be indented by\r
-up to three spaces. List markers must be followed by one or more spaces\r
-or a tab.</p>\r
-\r
-<p>To make lists look nice, you can wrap items with hanging indents:</p>\r
-\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
- Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
- viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
- Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>But if you want to be lazy, you don't have to:</p>\r
-\r
-<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
-Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,\r
-viverra nec, fringilla in, laoreet vitae, risus.\r
-* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.\r
-Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>If list items are separated by blank lines, Markdown will wrap the\r
-items in <code><p></code> tags in the HTML output. For example, this input:</p>\r
-\r
-<pre><code>* Bird\r
-* Magic\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><ul>\r
-<li>Bird</li>\r
-<li>Magic</li>\r
-</ul>\r
-</code></pre>\r
-\r
-<p>But this:</p>\r
-\r
-<pre><code>* Bird\r
-\r
-* Magic\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><ul>\r
-<li><p>Bird</p></li>\r
-<li><p>Magic</p></li>\r
-</ul>\r
-</code></pre>\r
-\r
-<p>List items may consist of multiple paragraphs. Each subsequent\r
-paragraph in a list item must be intended by either 4 spaces\r
-or one tab:</p>\r
-\r
-<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor\r
- sit amet, consectetuer adipiscing elit. Aliquam hendrerit\r
- mi posuere lectus.\r
-\r
- Vestibulum enim wisi, viverra nec, fringilla in, laoreet\r
- vitae, risus. Donec sit amet nisl. Aliquam semper ipsum\r
- sit amet velit.\r
-\r
-2. Suspendisse id sem consectetuer libero luctus adipiscing.\r
-</code></pre>\r
-\r
-<p>It looks nice if you indent every line of the subsequent\r
-paragraphs, but here again, Markdown will allow you to be\r
-lazy:</p>\r
-\r
-<pre><code>* This is a list item with two paragraphs.\r
-\r
- This is the second paragraph in the list item. You're\r
-only required to indent the first line. Lorem ipsum dolor\r
-sit amet, consectetuer adipiscing elit.\r
-\r
-* Another item in the same list.\r
-</code></pre>\r
-\r
-<p>To put a blockquote within a list item, the blockquote's <code>></code>\r
-delimiters need to be indented:</p>\r
-\r
-<pre><code>* A list item with a blockquote:\r
-\r
- > This is a blockquote\r
- > inside a list item.\r
-</code></pre>\r
-\r
-<p>To put a code block within a list item, the code block needs\r
-to be indented <em>twice</em> -- 8 spaces or two tabs:</p>\r
-\r
-<pre><code>* A list item with a code block:\r
-\r
- <code goes here>\r
-</code></pre>\r
-\r
-<p>It's worth noting that it's possible to trigger an ordered list by\r
-accident, by writing something like this:</p>\r
-\r
-<pre><code>1986. What a great season.\r
-</code></pre>\r
-\r
-<p>In other words, a <em>number-period-space</em> sequence at the beginning of a\r
-line. To avoid this, you can backslash-escape the period:</p>\r
-\r
-<pre><code>1986\. What a great season.\r
-</code></pre>\r
-\r
-<h3 id="precode">Code Blocks</h3>\r
-\r
-<p>Pre-formatted code blocks are used for writing about programming or\r
-markup source code. Rather than forming normal paragraphs, the lines\r
-of a code block are interpreted literally. Markdown wraps a code block\r
-in both <code><pre></code> and <code><code></code> tags.</p>\r
-\r
-<p>To produce a code block in Markdown, simply indent every line of the\r
-block by at least 4 spaces or 1 tab. For example, given this input:</p>\r
-\r
-<pre><code>This is a normal paragraph:\r
-\r
- This is a code block.\r
-</code></pre>\r
-\r
-<p>Markdown will generate:</p>\r
-\r
-<pre><code><p>This is a normal paragraph:</p>\r
-\r
-<pre><code>This is a code block.\r
-</code></pre>\r
-</code></pre>\r
-\r
-<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each\r
-line of the code block. For example, this:</p>\r
-\r
-<pre><code>Here is an example of AppleScript:\r
-\r
- tell application "Foo"\r
- beep\r
- end tell\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><p>Here is an example of AppleScript:</p>\r
-\r
-<pre><code>tell application "Foo"\r
- beep\r
-end tell\r
-</code></pre>\r
-</code></pre>\r
-\r
-<p>A code block continues until it reaches a line that is not indented\r
-(or the end of the article).</p>\r
-\r
-<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)\r
-are automatically converted into HTML entities. This makes it very\r
-easy to include example HTML source code using Markdown -- just paste\r
-it and indent it, and Markdown will handle the hassle of encoding the\r
-ampersands and angle brackets. For example, this:</p>\r
-\r
-<pre><code> <div class="footer">\r
- &copy; 2004 Foo Corporation\r
- </div>\r
-</code></pre>\r
-\r
-<p>will turn into:</p>\r
-\r
-<pre><code><pre><code>&lt;div class="footer"&gt;\r
- &amp;copy; 2004 Foo Corporation\r
-&lt;/div&gt;\r
-</code></pre>\r
-</code></pre>\r
-\r
-<p>Regular Markdown syntax is not processed within code blocks. E.g.,\r
-asterisks are just literal asterisks within a code block. This means\r
-it's also easy to use Markdown to write about Markdown's own syntax.</p>\r
-\r
-<h3 id="hr">Horizontal Rules</h3>\r
-\r
-<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or\r
-more hyphens, asterisks, or underscores on a line by themselves. If you\r
-wish, you may use spaces between the hyphens or asterisks. Each of the\r
-following lines will produce a horizontal rule:</p>\r
-\r
-<pre><code>* * *\r
-\r
-***\r
-\r
-*****\r
-\r
-- - -\r
-\r
----------------------------------------\r
-\r
-_ _ _\r
-</code></pre>\r
-\r
-<hr />\r
-\r
-<h2 id="span">Span Elements</h2>\r
-\r
-<h3 id="link">Links</h3>\r
-\r
-<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>\r
-\r
-<p>In both styles, the link text is delimited by [square brackets].</p>\r
-\r
-<p>To create an inline link, use a set of regular parentheses immediately\r
-after the link text's closing square bracket. Inside the parentheses,\r
-put the URL where you want the link to point, along with an <em>optional</em>\r
-title for the link, surrounded in quotes. For example:</p>\r
-\r
-<pre><code>This is [an example](http://example.com/ "Title") inline link.\r
-\r
-[This link](http://example.net/) has no title attribute.\r
-</code></pre>\r
-\r
-<p>Will produce:</p>\r
-\r
-<pre><code><p>This is <a href="http://example.com/" title="Title">\r
-an example</a> inline link.</p>\r
-\r
-<p><a href="http://example.net/">This link</a> has no\r
-title attribute.</p>\r
-</code></pre>\r
-\r
-<p>If you're referring to a local resource on the same server, you can\r
-use relative paths:</p>\r
-\r
-<pre><code>See my [About](/about/) page for details.\r
-</code></pre>\r
-\r
-<p>Reference-style links use a second set of square brackets, inside\r
-which you place a label of your choosing to identify the link:</p>\r
-\r
-<pre><code>This is [an example][id] reference-style link.\r
-</code></pre>\r
-\r
-<p>You can optionally use a space to separate the sets of brackets:</p>\r
-\r
-<pre><code>This is [an example] [id] reference-style link.\r
-</code></pre>\r
-\r
-<p>Then, anywhere in the document, you define your link label like this,\r
-on a line by itself:</p>\r
-\r
-<pre><code>[id]: http://example.com/ "Optional Title Here"\r
-</code></pre>\r
-\r
-<p>That is:</p>\r
-\r
-<ul>\r
-<li>Square brackets containing the link identifier (optionally\r
-indented from the left margin using up to three spaces);</li>\r
-<li>followed by a colon;</li>\r
-<li>followed by one or more spaces (or tabs);</li>\r
-<li>followed by the URL for the link;</li>\r
-<li>optionally followed by a title attribute for the link, enclosed\r
-in double or single quotes.</li>\r
-</ul>\r
-\r
-<p>The link URL may, optionally, be surrounded by angle brackets:</p>\r
-\r
-<pre><code>[id]: <http://example.com/> "Optional Title Here"\r
-</code></pre>\r
-\r
-<p>You can put the title attribute on the next line and use extra spaces\r
-or tabs for padding, which tends to look better with longer URLs:</p>\r
-\r
-<pre><code>[id]: http://example.com/longish/path/to/resource/here\r
- "Optional Title Here"\r
-</code></pre>\r
-\r
-<p>Link definitions are only used for creating links during Markdown\r
-processing, and are stripped from your document in the HTML output.</p>\r
-\r
-<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>\r
-\r
-<pre><code>[link text][a]\r
-[link text][A]\r
-</code></pre>\r
-\r
-<p>are equivalent.</p>\r
-\r
-<p>The <em>implicit link name</em> shortcut allows you to omit the name of the\r
-link, in which case the link text itself is used as the name.\r
-Just use an empty set of square brackets -- e.g., to link the word\r
-"Google" to the google.com web site, you could simply write:</p>\r
-\r
-<pre><code>[Google][]\r
-</code></pre>\r
-\r
-<p>And then define the link:</p>\r
-\r
-<pre><code>[Google]: http://google.com/\r
-</code></pre>\r
-\r
-<p>Because link names may contain spaces, this shortcut even works for\r
-multiple words in the link text:</p>\r
-\r
-<pre><code>Visit [Daring Fireball][] for more information.\r
-</code></pre>\r
-\r
-<p>And then define the link:</p>\r
-\r
-<pre><code>[Daring Fireball]: http://daringfireball.net/\r
-</code></pre>\r
-\r
-<p>Link definitions can be placed anywhere in your Markdown document. I\r
-tend to put them immediately after each paragraph in which they're\r
-used, but if you want, you can put them all at the end of your\r
-document, sort of like footnotes.</p>\r
-\r
-<p>Here's an example of reference links in action:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google] [1] than from\r
-[Yahoo] [2] or [MSN] [3].\r
-\r
- [1]: http://google.com/ "Google"\r
- [2]: http://search.yahoo.com/ "Yahoo Search"\r
- [3]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-\r
-<p>Using the implicit link name shortcut, you could instead write:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google][] than from\r
-[Yahoo][] or [MSN][].\r
-\r
- [google]: http://google.com/ "Google"\r
- [yahoo]: http://search.yahoo.com/ "Yahoo Search"\r
- [msn]: http://search.msn.com/ "MSN Search"\r
-</code></pre>\r
-\r
-<p>Both of the above examples will produce the following HTML output:</p>\r
-\r
-<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"\r
-title="Google">Google</a> than from\r
-<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>\r
-or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>\r
-</code></pre>\r
-\r
-<p>For comparison, here is the same paragraph written using\r
-Markdown's inline link style:</p>\r
-\r
-<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")\r
-than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or\r
-[MSN](http://search.msn.com/ "MSN Search").\r
-</code></pre>\r
-\r
-<p>The point of reference-style links is not that they're easier to\r
-write. The point is that with reference-style links, your document\r
-source is vastly more readable. Compare the above examples: using\r
-reference-style links, the paragraph itself is only 81 characters\r
-long; with inline-style links, it's 176 characters; and as raw HTML,\r
-it's 234 characters. In the raw HTML, there's more markup than there\r
-is text.</p>\r
-\r
-<p>With Markdown's reference-style links, a source document much more\r
-closely resembles the final output, as rendered in a browser. By\r
-allowing you to move the markup-related metadata out of the paragraph,\r
-you can add links without interrupting the narrative flow of your\r
-prose.</p>\r
-\r
-<h3 id="em">Emphasis</h3>\r
-\r
-<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of\r
-emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an\r
-HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML\r
-<code><strong></code> tag. E.g., this input:</p>\r
-\r
-<pre><code>*single asterisks*\r
-\r
-_single underscores_\r
-\r
-**double asterisks**\r
-\r
-__double underscores__\r
-</code></pre>\r
-\r
-<p>will produce:</p>\r
-\r
-<pre><code><em>single asterisks</em>\r
-\r
-<em>single underscores</em>\r
-\r
-<strong>double asterisks</strong>\r
-\r
-<strong>double underscores</strong>\r
-</code></pre>\r
-\r
-<p>You can use whichever style you prefer; the lone restriction is that\r
-the same character must be used to open and close an emphasis span.</p>\r
-\r
-<p>Emphasis can be used in the middle of a word:</p>\r
-\r
-<pre><code>un*fucking*believable\r
-</code></pre>\r
-\r
-<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a\r
-literal asterisk or underscore.</p>\r
-\r
-<p>To produce a literal asterisk or underscore at a position where it\r
-would otherwise be used as an emphasis delimiter, you can backslash\r
-escape it:</p>\r
-\r
-<pre><code>\*this text is surrounded by literal asterisks\*\r
-</code></pre>\r
-\r
-<h3 id="code">Code</h3>\r
-\r
-<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).\r
-Unlike a pre-formatted code block, a code span indicates code within a\r
-normal paragraph. For example:</p>\r
-\r
-<pre><code>Use the `printf()` function.\r
-</code></pre>\r
-\r
-<p>will produce:</p>\r
-\r
-<pre><code><p>Use the <code>printf()</code> function.</p>\r
-</code></pre>\r
-\r
-<p>To include a literal backtick character within a code span, you can use\r
-multiple backticks as the opening and closing delimiters:</p>\r
-\r
-<pre><code>``There is a literal backtick (`) here.``\r
-</code></pre>\r
-\r
-<p>which will produce this:</p>\r
-\r
-<pre><code><p><code>There is a literal backtick (`) here.</code></p>\r
-</code></pre>\r
-\r
-<p>The backtick delimiters surrounding a code span may include spaces --\r
-one after the opening, one before the closing. This allows you to place\r
-literal backtick characters at the beginning or end of a code span:</p>\r
-\r
-<pre><code>A single backtick in a code span: `` ` ``\r
-\r
-A backtick-delimited string in a code span: `` `foo` ``\r
-</code></pre>\r
-\r
-<p>will produce:</p>\r
-\r
-<pre><code><p>A single backtick in a code span: <code>`</code></p>\r
-\r
-<p>A backtick-delimited string in a code span: <code>`foo`</code></p>\r
-</code></pre>\r
-\r
-<p>With a code span, ampersands and angle brackets are encoded as HTML\r
-entities automatically, which makes it easy to include example HTML\r
-tags. Markdown will turn this:</p>\r
-\r
-<pre><code>Please don't use any `<blink>` tags.\r
-</code></pre>\r
-\r
-<p>into:</p>\r
-\r
-<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>\r
-</code></pre>\r
-\r
-<p>You can write this:</p>\r
-\r
-<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.\r
-</code></pre>\r
-\r
-<p>to produce:</p>\r
-\r
-<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded\r
-equivalent of <code>&amp;mdash;</code>.</p>\r
-</code></pre>\r
-\r
-<h3 id="img">Images</h3>\r
-\r
-<p>Admittedly, it's fairly difficult to devise a "natural" syntax for\r
-placing images into a plain text document format.</p>\r
-\r
-<p>Markdown uses an image syntax that is intended to resemble the syntax\r
-for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>\r
-\r
-<p>Inline image syntax looks like this:</p>\r
-\r
-<pre><code>\r
-\r
-\r
-</code></pre>\r
-\r
-<p>That is:</p>\r
-\r
-<ul>\r
-<li>An exclamation mark: <code>!</code>;</li>\r
-<li>followed by a set of square brackets, containing the <code>alt</code>\r
-attribute text for the image;</li>\r
-<li>followed by a set of parentheses, containing the URL or path to\r
-the image, and an optional <code>title</code> attribute enclosed in double\r
-or single quotes.</li>\r
-</ul>\r
-\r
-<p>Reference-style image syntax looks like this:</p>\r
-\r
-<pre><code>![Alt text][id]\r
-</code></pre>\r
-\r
-<p>Where "id" is the name of a defined image reference. Image references\r
-are defined using syntax identical to link references:</p>\r
-\r
-<pre><code>[id]: url/to/image "Optional title attribute"\r
-</code></pre>\r
-\r
-<p>As of this writing, Markdown has no syntax for specifying the\r
-dimensions of an image; if this is important to you, you can simply\r
-use regular HTML <code><img></code> tags.</p>\r
-\r
-<hr />\r
-\r
-<h2 id="misc">Miscellaneous</h2>\r
-\r
-<h3 id="autolink">Automatic Links</h3>\r
-\r
-<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>\r
-\r
-<pre><code><http://example.com/>\r
-</code></pre>\r
-\r
-<p>Markdown will turn this into:</p>\r
-\r
-<pre><code><a href="http://example.com/">http://example.com/</a>\r
-</code></pre>\r
-\r
-<p>Automatic links for email addresses work similarly, except that\r
-Markdown will also perform a bit of randomized decimal and hex\r
-entity-encoding to help obscure your address from address-harvesting\r
-spambots. For example, Markdown will turn this:</p>\r
-\r
-<pre><code><address@example.com>\r
-</code></pre>\r
-\r
-<p>into something like this:</p>\r
-\r
-<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;\r
-&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;\r
-&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;\r
-&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>\r
-</code></pre>\r
-\r
-<p>which will render in a browser as a clickable link to "address@example.com".</p>\r
-\r
-<p>(This sort of entity-encoding trick will indeed fool many, if not\r
-most, address-harvesting bots, but it definitely won't fool all of\r
-them. It's better than nothing, but an address published in this way\r
-will probably eventually start receiving spam.)</p>\r
-\r
-<h3 id="backslash">Backslash Escapes</h3>\r
-\r
-<p>Markdown allows you to use backslash escapes to generate literal\r
-characters which would otherwise have special meaning in Markdown's\r
-formatting syntax. For example, if you wanted to surround a word with\r
-literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes\r
-before the asterisks, like this:</p>\r
-\r
-<pre><code>\*literal asterisks\*\r
-</code></pre>\r
-\r
-<p>Markdown provides backslash escapes for the following characters:</p>\r
-\r
-<pre><code>\ backslash\r
-` backtick\r
-* asterisk\r
-_ underscore\r
-{} curly braces\r
-[] square brackets\r
-() parentheses\r
-# hash mark\r
-+ plus sign\r
-- minus sign (hyphen)\r
-. dot\r
-! exclamation mark\r
-</code></pre>\r
+<h1>Markdown: Syntax</h1>
+
+<ul id="ProjectSubmenu">
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
+ <li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
+ <li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
+</ul>
+
+<ul>
+<li><a href="#overview">Overview</a>
+<ul>
+<li><a href="#philosophy">Philosophy</a></li>
+<li><a href="#html">Inline HTML</a></li>
+<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
+</ul></li>
+<li><a href="#block">Block Elements</a>
+<ul>
+<li><a href="#p">Paragraphs and Line Breaks</a></li>
+<li><a href="#header">Headers</a></li>
+<li><a href="#blockquote">Blockquotes</a></li>
+<li><a href="#list">Lists</a></li>
+<li><a href="#precode">Code Blocks</a></li>
+<li><a href="#hr">Horizontal Rules</a></li>
+</ul></li>
+<li><a href="#span">Span Elements</a>
+<ul>
+<li><a href="#link">Links</a></li>
+<li><a href="#em">Emphasis</a></li>
+<li><a href="#code">Code</a></li>
+<li><a href="#img">Images</a></li>
+</ul></li>
+<li><a href="#misc">Miscellaneous</a>
+<ul>
+<li><a href="#backslash">Backslash Escapes</a></li>
+<li><a href="#autolink">Automatic Links</a></li>
+</ul></li>
+</ul>
+
+<p><strong>Note:</strong> This document is itself written using Markdown; you
+can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
+
+<hr />
+
+<h2 id="overview">Overview</h2>
+
+<h3 id="philosophy">Philosophy</h3>
+
+<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
+
+<p>Readability, however, is emphasized above all else. A Markdown-formatted
+document should be publishable as-is, as plain text, without looking
+like it's been marked up with tags or formatting instructions. While
+Markdown's syntax has been influenced by several existing text-to-HTML
+filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
+<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
+inspiration for Markdown's syntax is the format of plain text email.</p>
+
+<p>To this end, Markdown's syntax is comprised entirely of punctuation
+characters, which punctuation characters have been carefully chosen so
+as to look like what they mean. E.g., asterisks around a word actually
+look like *emphasis*. Markdown lists look like, well, lists. Even
+blockquotes look like quoted passages of text, assuming you've ever
+used email.</p>
+
+<h3 id="html">Inline HTML</h3>
+
+<p>Markdown's syntax is intended for one purpose: to be used as a
+format for <em>writing</em> for the web.</p>
+
+<p>Markdown is not a replacement for HTML, or even close to it. Its
+syntax is very small, corresponding only to a very small subset of
+HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
+to insert HTML tags. In my opinion, HTML tags are already easy to
+insert. The idea for Markdown is to make it easy to read, write, and
+edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
+format. Thus, Markdown's formatting syntax only addresses issues that
+can be conveyed in plain text.</p>
+
+<p>For any markup that is not covered by Markdown's syntax, you simply
+use HTML itself. There's no need to preface it or delimit it to
+indicate that you're switching from Markdown to HTML; you just use
+the tags.</p>
+
+<p>The only restrictions are that block-level HTML elements -- e.g. <code><div></code>,
+<code><table></code>, <code><pre></code>, <code><p></code>, etc. -- must be separated from surrounding
+content by blank lines, and the start and end tags of the block should
+not be indented with tabs or spaces. Markdown is smart enough not
+to add extra (unwanted) <code><p></code> tags around HTML block-level tags.</p>
+
+<p>For example, to add an HTML table to a Markdown article:</p>
+
+<pre><code>This is a regular paragraph.
+
+<table>
+ <tr>
+ <td>Foo</td>
+ </tr>
+</table>
+
+This is another regular paragraph.
+</code></pre>
+
+<p>Note that Markdown formatting syntax is not processed within block-level
+HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
+HTML block.</p>
+
+<p>Span-level HTML tags -- e.g. <code><span></code>, <code><cite></code>, or <code><del></code> -- can be
+used anywhere in a Markdown paragraph, list item, or header. If you
+want, you can even use HTML tags instead of Markdown formatting; e.g. if
+you'd prefer to use HTML <code><a></code> or <code><img></code> tags instead of Markdown's
+link or image syntax, go right ahead.</p>
+
+<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
+span-level tags.</p>
+
+<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
+
+<p>In HTML, there are two characters that demand special treatment: <code><</code>
+and <code>&</code>. Left angle brackets are used to start tags; ampersands are
+used to denote HTML entities. If you want to use them as literal
+characters, you must escape them as entities, e.g. <code>&lt;</code>, and
+<code>&amp;</code>.</p>
+
+<p>Ampersands in particular are bedeviling for web writers. If you want to
+write about 'AT&T', you need to write '<code>AT&amp;T</code>'. You even need to
+escape ampersands within URLs. Thus, if you want to link to:</p>
+
+<pre><code>http://images.google.com/images?num=30&q=larry+bird
+</code></pre>
+
+<p>you need to encode the URL as:</p>
+
+<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
+</code></pre>
+
+<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
+forget, and is probably the single most common source of HTML validation
+errors in otherwise well-marked-up web sites.</p>
+
+<p>Markdown allows you to use these characters naturally, taking care of
+all the necessary escaping for you. If you use an ampersand as part of
+an HTML entity, it remains unchanged; otherwise it will be translated
+into <code>&amp;</code>.</p>
+
+<p>So, if you want to include a copyright symbol in your article, you can write:</p>
+
+<pre><code>&copy;
+</code></pre>
+
+<p>and Markdown will leave it alone. But if you write:</p>
+
+<pre><code>AT&T
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>AT&amp;T
+</code></pre>
+
+<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
+angle brackets as delimiters for HTML tags, Markdown will treat them as
+such. But if you write:</p>
+
+<pre><code>4 < 5
+</code></pre>
+
+<p>Markdown will translate it to:</p>
+
+<pre><code>4 &lt; 5
+</code></pre>
+
+<p>However, inside Markdown code spans and blocks, angle brackets and
+ampersands are <em>always</em> encoded automatically. This makes it easy to use
+Markdown to write about HTML code. (As opposed to raw HTML, which is a
+terrible format for writing about HTML syntax, because every single <code><</code>
+and <code>&</code> in your example code needs to be escaped.)</p>
+
+<hr />
+
+<h2 id="block">Block Elements</h2>
+
+<h3 id="p">Paragraphs and Line Breaks</h3>
+
+<p>A paragraph is simply one or more consecutive lines of text, separated
+by one or more blank lines. (A blank line is any line that looks like a
+blank line -- a line containing nothing but spaces or tabs is considered
+blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
+
+<p>The implication of the "one or more consecutive lines of text" rule is
+that Markdown supports "hard-wrapped" text paragraphs. This differs
+significantly from most other text-to-HTML formatters (including Movable
+Type's "Convert Line Breaks" option) which translate every line break
+character in a paragraph into a <code><br /></code> tag.</p>
+
+<p>When you <em>do</em> want to insert a <code><br /></code> break tag using Markdown, you
+end a line with two or more spaces, then type return.</p>
+
+<p>Yes, this takes a tad more effort to create a <code><br /></code>, but a simplistic
+"every line break is a <code><br /></code>" rule wouldn't work for Markdown.
+Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
+work best -- and look better -- when you format them with hard breaks.</p>
+
+<h3 id="header">Headers</h3>
+
+<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
+
+<p>Setext-style headers are "underlined" using equal signs (for first-level
+headers) and dashes (for second-level headers). For example:</p>
+
+<pre><code>This is an H1
+=============
+
+This is an H2
+-------------
+</code></pre>
+
+<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
+
+<p>Atx-style headers use 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6. For example:</p>
+
+<pre><code># This is an H1
+
+## This is an H2
+
+###### This is an H6
+</code></pre>
+
+<p>Optionally, you may "close" atx-style headers. This is purely
+cosmetic -- you can use this if you think it looks better. The
+closing hashes don't even need to match the number of hashes
+used to open the header. (The number of opening hashes
+determines the header level.) :</p>
+
+<pre><code># This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+</code></pre>
+
+<h3 id="blockquote">Blockquotes</h3>
+
+<p>Markdown uses email-style <code>></code> characters for blockquoting. If you're
+familiar with quoting passages of text in an email message, then you
+know how to create a blockquote in Markdown. It looks best if you hard
+wrap the text and put a <code>></code> before every line:</p>
+
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Markdown allows you to be lazy and only put the <code>></code> before the first
+line of a hard-wrapped paragraph:</p>
+
+<pre><code>> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
+adding additional levels of <code>></code>:</p>
+
+<pre><code>> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+</code></pre>
+
+<p>Blockquotes can contain other Markdown elements, including headers, lists,
+and code blocks:</p>
+
+<pre><code>> ## This is a header.
+>
+> 1. This is the first list item.
+> 2. This is the second list item.
+>
+> Here's some example code:
+>
+> return shell_exec("echo $input | $markdown_script");
+</code></pre>
+
+<p>Any decent text editor should make email-style quoting easy. For
+example, with BBEdit, you can make a selection and choose Increase
+Quote Level from the Text menu.</p>
+
+<h3 id="list">Lists</h3>
+
+<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
+
+<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
+-- as list markers:</p>
+
+<pre><code>* Red
+* Green
+* Blue
+</code></pre>
+
+<p>is equivalent to:</p>
+
+<pre><code>+ Red
++ Green
++ Blue
+</code></pre>
+
+<p>and:</p>
+
+<pre><code>- Red
+- Green
+- Blue
+</code></pre>
+
+<p>Ordered lists use numbers followed by periods:</p>
+
+<pre><code>1. Bird
+2. McHale
+3. Parish
+</code></pre>
+
+<p>It's important to note that the actual numbers you use to mark the
+list have no effect on the HTML output Markdown produces. The HTML
+Markdown produces from the above list is:</p>
+
+<pre><code><ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+</code></pre>
+
+<p>If you instead wrote the list in Markdown like this:</p>
+
+<pre><code>1. Bird
+1. McHale
+1. Parish
+</code></pre>
+
+<p>or even:</p>
+
+<pre><code>3. Bird
+1. McHale
+8. Parish
+</code></pre>
+
+<p>you'd get the exact same HTML output. The point is, if you want to,
+you can use ordinal numbers in your ordered Markdown lists, so that
+the numbers in your source match the numbers in your published HTML.
+But if you want to be lazy, you don't have to.</p>
+
+<p>If you do use lazy list numbering, however, you should still start the
+list with the number 1. At some point in the future, Markdown may support
+starting ordered lists at an arbitrary number.</p>
+
+<p>List markers typically start at the left margin, but may be indented by
+up to three spaces. List markers must be followed by one or more spaces
+or a tab.</p>
+
+<p>To make lists look nice, you can wrap items with hanging indents:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+ Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+ viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+ Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>But if you want to be lazy, you don't have to:</p>
+
+<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>If list items are separated by blank lines, Markdown will wrap the
+items in <code><p></code> tags in the HTML output. For example, this input:</p>
+
+<pre><code>* Bird
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><ul>
+<li>Bird</li>
+<li>Magic</li>
+</ul>
+</code></pre>
+
+<p>But this:</p>
+
+<pre><code>* Bird
+
+* Magic
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
+</code></pre>
+
+<p>List items may consist of multiple paragraphs. Each subsequent
+paragraph in a list item must be intended by either 4 spaces
+or one tab:</p>
+
+<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
+ sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+ mi posuere lectus.
+
+ Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+ vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+ sit amet velit.
+
+2. Suspendisse id sem consectetuer libero luctus adipiscing.
+</code></pre>
+
+<p>It looks nice if you indent every line of the subsequent
+paragraphs, but here again, Markdown will allow you to be
+lazy:</p>
+
+<pre><code>* This is a list item with two paragraphs.
+
+ This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+* Another item in the same list.
+</code></pre>
+
+<p>To put a blockquote within a list item, the blockquote's <code>></code>
+delimiters need to be indented:</p>
+
+<pre><code>* A list item with a blockquote:
+
+ > This is a blockquote
+ > inside a list item.
+</code></pre>
+
+<p>To put a code block within a list item, the code block needs
+to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
+
+<pre><code>* A list item with a code block:
+
+ <code goes here>
+</code></pre>
+
+<p>It's worth noting that it's possible to trigger an ordered list by
+accident, by writing something like this:</p>
+
+<pre><code>1986. What a great season.
+</code></pre>
+
+<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
+line. To avoid this, you can backslash-escape the period:</p>
+
+<pre><code>1986\. What a great season.
+</code></pre>
+
+<h3 id="precode">Code Blocks</h3>
+
+<p>Pre-formatted code blocks are used for writing about programming or
+markup source code. Rather than forming normal paragraphs, the lines
+of a code block are interpreted literally. Markdown wraps a code block
+in both <code><pre></code> and <code><code></code> tags.</p>
+
+<p>To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab. For example, given this input:</p>
+
+<pre><code>This is a normal paragraph:
+
+ This is a code block.
+</code></pre>
+
+<p>Markdown will generate:</p>
+
+<pre><code><p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
+</code></pre>
+
+<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
+line of the code block. For example, this:</p>
+
+<pre><code>Here is an example of AppleScript:
+
+ tell application "Foo"
+ beep
+ end tell
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><p>Here is an example of AppleScript:</p>
+
+<pre><code>tell application "Foo"
+ beep
+end tell
+</code></pre>
+</code></pre>
+
+<p>A code block continues until it reaches a line that is not indented
+(or the end of the article).</p>
+
+<p>Within a code block, ampersands (<code>&</code>) and angle brackets (<code><</code> and <code>></code>)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:</p>
+
+<pre><code> <div class="footer">
+ &copy; 2004 Foo Corporation
+ </div>
+</code></pre>
+
+<p>will turn into:</p>
+
+<pre><code><pre><code>&lt;div class="footer"&gt;
+ &amp;copy; 2004 Foo Corporation
+&lt;/div&gt;
+</code></pre>
+</code></pre>
+
+<p>Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.</p>
+
+<h3 id="hr">Horizontal Rules</h3>
+
+<p>You can produce a horizontal rule tag (<code><hr /></code>) by placing three or
+more hyphens, asterisks, or underscores on a line by themselves. If you
+wish, you may use spaces between the hyphens or asterisks. Each of the
+following lines will produce a horizontal rule:</p>
+
+<pre><code>* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+</code></pre>
+
+<hr />
+
+<h2 id="span">Span Elements</h2>
+
+<h3 id="link">Links</h3>
+
+<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
+
+<p>In both styles, the link text is delimited by [square brackets].</p>
+
+<p>To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an <em>optional</em>
+title for the link, surrounded in quotes. For example:</p>
+
+<pre><code>This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+</code></pre>
+
+<p>Will produce:</p>
+
+<pre><code><p>This is <a href="http://example.com/" title="Title">
+an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no
+title attribute.</p>
+</code></pre>
+
+<p>If you're referring to a local resource on the same server, you can
+use relative paths:</p>
+
+<pre><code>See my [About](/about/) page for details.
+</code></pre>
+
+<p>Reference-style links use a second set of square brackets, inside
+which you place a label of your choosing to identify the link:</p>
+
+<pre><code>This is [an example][id] reference-style link.
+</code></pre>
+
+<p>You can optionally use a space to separate the sets of brackets:</p>
+
+<pre><code>This is [an example] [id] reference-style link.
+</code></pre>
+
+<p>Then, anywhere in the document, you define your link label like this,
+on a line by itself:</p>
+
+<pre><code>[id]: http://example.com/ "Optional Title Here"
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>Square brackets containing the link identifier (optionally
+indented from the left margin using up to three spaces);</li>
+<li>followed by a colon;</li>
+<li>followed by one or more spaces (or tabs);</li>
+<li>followed by the URL for the link;</li>
+<li>optionally followed by a title attribute for the link, enclosed
+in double or single quotes.</li>
+</ul>
+
+<p>The link URL may, optionally, be surrounded by angle brackets:</p>
+
+<pre><code>[id]: <http://example.com/> "Optional Title Here"
+</code></pre>
+
+<p>You can put the title attribute on the next line and use extra spaces
+or tabs for padding, which tends to look better with longer URLs:</p>
+
+<pre><code>[id]: http://example.com/longish/path/to/resource/here
+ "Optional Title Here"
+</code></pre>
+
+<p>Link definitions are only used for creating links during Markdown
+processing, and are stripped from your document in the HTML output.</p>
+
+<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
+
+<pre><code>[link text][a]
+[link text][A]
+</code></pre>
+
+<p>are equivalent.</p>
+
+<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
+link, in which case the link text itself is used as the name.
+Just use an empty set of square brackets -- e.g., to link the word
+"Google" to the google.com web site, you could simply write:</p>
+
+<pre><code>[Google][]
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Google]: http://google.com/
+</code></pre>
+
+<p>Because link names may contain spaces, this shortcut even works for
+multiple words in the link text:</p>
+
+<pre><code>Visit [Daring Fireball][] for more information.
+</code></pre>
+
+<p>And then define the link:</p>
+
+<pre><code>[Daring Fireball]: http://daringfireball.net/
+</code></pre>
+
+<p>Link definitions can be placed anywhere in your Markdown document. I
+tend to put them immediately after each paragraph in which they're
+used, but if you want, you can put them all at the end of your
+document, sort of like footnotes.</p>
+
+<p>Here's an example of reference links in action:</p>
+
+<pre><code>I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+ [1]: http://google.com/ "Google"
+ [2]: http://search.yahoo.com/ "Yahoo Search"
+ [3]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Using the implicit link name shortcut, you could instead write:</p>
+
+<pre><code>I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+ [google]: http://google.com/ "Google"
+ [yahoo]: http://search.yahoo.com/ "Yahoo Search"
+ [msn]: http://search.msn.com/ "MSN Search"
+</code></pre>
+
+<p>Both of the above examples will produce the following HTML output:</p>
+
+<pre><code><p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from
+<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+</code></pre>
+
+<p>For comparison, here is the same paragraph written using
+Markdown's inline link style:</p>
+
+<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+</code></pre>
+
+<p>The point of reference-style links is not that they're easier to
+write. The point is that with reference-style links, your document
+source is vastly more readable. Compare the above examples: using
+reference-style links, the paragraph itself is only 81 characters
+long; with inline-style links, it's 176 characters; and as raw HTML,
+it's 234 characters. In the raw HTML, there's more markup than there
+is text.</p>
+
+<p>With Markdown's reference-style links, a source document much more
+closely resembles the final output, as rendered in a browser. By
+allowing you to move the markup-related metadata out of the paragraph,
+you can add links without interrupting the narrative flow of your
+prose.</p>
+
+<h3 id="em">Emphasis</h3>
+
+<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
+emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
+HTML <code><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
+<code><strong></code> tag. E.g., this input:</p>
+
+<pre><code>*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code><em>single asterisks</em>
+
+<em>single underscores</em>
+
+<strong>double asterisks</strong>
+
+<strong>double underscores</strong>
+</code></pre>
+
+<p>You can use whichever style you prefer; the lone restriction is that
+the same character must be used to open and close an emphasis span.</p>
+
+<p>Emphasis can be used in the middle of a word:</p>
+
+<pre><code>un*fucking*believable
+</code></pre>
+
+<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
+literal asterisk or underscore.</p>
+
+<p>To produce a literal asterisk or underscore at a position where it
+would otherwise be used as an emphasis delimiter, you can backslash
+escape it:</p>
+
+<pre><code>\*this text is surrounded by literal asterisks\*
+</code></pre>
+
+<h3 id="code">Code</h3>
+
+<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:</p>
+
+<pre><code>Use the `printf()` function.
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code><p>Use the <code>printf()</code> function.</p>
+</code></pre>
+
+<p>To include a literal backtick character within a code span, you can use
+multiple backticks as the opening and closing delimiters:</p>
+
+<pre><code>``There is a literal backtick (`) here.``
+</code></pre>
+
+<p>which will produce this:</p>
+
+<pre><code><p><code>There is a literal backtick (`) here.</code></p>
+</code></pre>
+
+<p>The backtick delimiters surrounding a code span may include spaces --
+one after the opening, one before the closing. This allows you to place
+literal backtick characters at the beginning or end of a code span:</p>
+
+<pre><code>A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+</code></pre>
+
+<p>will produce:</p>
+
+<pre><code><p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+</code></pre>
+
+<p>With a code span, ampersands and angle brackets are encoded as HTML
+entities automatically, which makes it easy to include example HTML
+tags. Markdown will turn this:</p>
+
+<pre><code>Please don't use any `<blink>` tags.
+</code></pre>
+
+<p>into:</p>
+
+<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+</code></pre>
+
+<p>You can write this:</p>
+
+<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+</code></pre>
+
+<p>to produce:</p>
+
+<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded
+equivalent of <code>&amp;mdash;</code>.</p>
+</code></pre>
+
+<h3 id="img">Images</h3>
+
+<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
+placing images into a plain text document format.</p>
+
+<p>Markdown uses an image syntax that is intended to resemble the syntax
+for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
+
+<p>Inline image syntax looks like this:</p>
+
+<pre><code>
+
+
+</code></pre>
+
+<p>That is:</p>
+
+<ul>
+<li>An exclamation mark: <code>!</code>;</li>
+<li>followed by a set of square brackets, containing the <code>alt</code>
+attribute text for the image;</li>
+<li>followed by a set of parentheses, containing the URL or path to
+the image, and an optional <code>title</code> attribute enclosed in double
+or single quotes.</li>
+</ul>
+
+<p>Reference-style image syntax looks like this:</p>
+
+<pre><code>![Alt text][id]
+</code></pre>
+
+<p>Where "id" is the name of a defined image reference. Image references
+are defined using syntax identical to link references:</p>
+
+<pre><code>[id]: url/to/image "Optional title attribute"
+</code></pre>
+
+<p>As of this writing, Markdown has no syntax for specifying the
+dimensions of an image; if this is important to you, you can simply
+use regular HTML <code><img></code> tags.</p>
+
+<hr />
+
+<h2 id="misc">Miscellaneous</h2>
+
+<h3 id="autolink">Automatic Links</h3>
+
+<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
+
+<pre><code><http://example.com/>
+</code></pre>
+
+<p>Markdown will turn this into:</p>
+
+<pre><code><a href="http://example.com/">http://example.com/</a>
+</code></pre>
+
+<p>Automatic links for email addresses work similarly, except that
+Markdown will also perform a bit of randomized decimal and hex
+entity-encoding to help obscure your address from address-harvesting
+spambots. For example, Markdown will turn this:</p>
+
+<pre><code><address@example.com>
+</code></pre>
+
+<p>into something like this:</p>
+
+<pre><code><a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+</code></pre>
+
+<p>which will render in a browser as a clickable link to "address@example.com".</p>
+
+<p>(This sort of entity-encoding trick will indeed fool many, if not
+most, address-harvesting bots, but it definitely won't fool all of
+them. It's better than nothing, but an address published in this way
+will probably eventually start receiving spam.)</p>
+
+<h3 id="backslash">Backslash Escapes</h3>
+
+<p>Markdown allows you to use backslash escapes to generate literal
+characters which would otherwise have special meaning in Markdown's
+formatting syntax. For example, if you wanted to surround a word with
+literal asterisks (instead of an HTML <code><em></code> tag), you can backslashes
+before the asterisks, like this:</p>
+
+<pre><code>\*literal asterisks\*
+</code></pre>
+
+<p>Markdown provides backslash escapes for the following characters:</p>
+
+<pre><code>\ backslash
+` backtick
+* asterisk
+_ underscore
+{} curly braces
+[] square brackets
+() parentheses
+# hash mark
++ plus sign
+- minus sign (hyphen)
+. dot
+! exclamation mark
+</code></pre>
-<blockquote>\r
- <p>foo</p>\r
- \r
- <blockquote>\r
- <p>bar</p>\r
- </blockquote>\r
- \r
- <p>foo</p>\r
-</blockquote>\r
+<blockquote>
+ <p>foo</p>
+
+ <blockquote>
+ <p>bar</p>
+ </blockquote>
+
+ <p>foo</p>
+</blockquote>
-<h2>Unordered</h2>\r
-\r
-<p>Asterisks tight:</p>\r
-\r
-<ul>\r
-<li>asterisk 1</li>\r
-<li>asterisk 2</li>\r
-<li>asterisk 3</li>\r
-</ul>\r
-\r
-<p>Asterisks loose:</p>\r
-\r
-<ul>\r
-<li><p>asterisk 1</p></li>\r
-<li><p>asterisk 2</p></li>\r
-<li><p>asterisk 3</p></li>\r
-</ul>\r
-\r
-<hr />\r
-\r
-<p>Pluses tight:</p>\r
-\r
-<ul>\r
-<li>Plus 1</li>\r
-<li>Plus 2</li>\r
-<li>Plus 3</li>\r
-</ul>\r
-\r
-<p>Pluses loose:</p>\r
-\r
-<ul>\r
-<li><p>Plus 1</p></li>\r
-<li><p>Plus 2</p></li>\r
-<li><p>Plus 3</p></li>\r
-</ul>\r
-\r
-<hr />\r
-\r
-<p>Minuses tight:</p>\r
-\r
-<ul>\r
-<li>Minus 1</li>\r
-<li>Minus 2</li>\r
-<li>Minus 3</li>\r
-</ul>\r
-\r
-<p>Minuses loose:</p>\r
-\r
-<ul>\r
-<li><p>Minus 1</p></li>\r
-<li><p>Minus 2</p></li>\r
-<li><p>Minus 3</p></li>\r
-</ul>\r
-\r
-<h2>Ordered</h2>\r
-\r
-<p>Tight:</p>\r
-\r
-<ol>\r
-<li>First</li>\r
-<li>Second</li>\r
-<li>Third</li>\r
-</ol>\r
-\r
-<p>and:</p>\r
-\r
-<ol>\r
-<li>One</li>\r
-<li>Two</li>\r
-<li>Three</li>\r
-</ol>\r
-\r
-<p>Loose using tabs:</p>\r
-\r
-<ol>\r
-<li><p>First</p></li>\r
-<li><p>Second</p></li>\r
-<li><p>Third</p></li>\r
-</ol>\r
-\r
-<p>and using spaces:</p>\r
-\r
-<ol>\r
-<li><p>One</p></li>\r
-<li><p>Two</p></li>\r
-<li><p>Three</p></li>\r
-</ol>\r
-\r
-<p>Multiple paragraphs:</p>\r
-\r
-<ol>\r
-<li><p>Item 1, graf one.</p>\r
-\r
-<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's\r
-back.</p></li>\r
-<li><p>Item 2.</p></li>\r
-<li><p>Item 3.</p></li>\r
-</ol>\r
-\r
-<h2>Nested</h2>\r
-\r
-<ul>\r
-<li>Tab\r
-<ul>\r
-<li>Tab\r
-<ul>\r
-<li>Tab</li>\r
-</ul></li>\r
-</ul></li>\r
-</ul>\r
-\r
-<p>Here's another:</p>\r
-\r
-<ol>\r
-<li>First</li>\r
-<li>Second:\r
-<ul>\r
-<li>Fee</li>\r
-<li>Fie</li>\r
-<li>Foe</li>\r
-</ul></li>\r
-<li>Third</li>\r
-</ol>\r
-\r
-<p>Same thing but with paragraphs:</p>\r
-\r
-<ol>\r
-<li><p>First</p></li>\r
-<li><p>Second:</p>\r
-\r
-<ul>\r
-<li>Fee</li>\r
-<li>Fie</li>\r
-<li>Foe</li>\r
-</ul></li>\r
-<li><p>Third</p></li>\r
-</ol>\r
-\r
-\r
-<p>This was an error in Markdown 1.0.1:</p>\r
-\r
-<ul>\r
-<li><p>this</p>\r
-\r
-<ul><li>sub</li></ul>\r
-\r
-<p>that</p></li>\r
-</ul>\r
+<h2>Unordered</h2>
+
+<p>Asterisks tight:</p>
+
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+
+<p>Asterisks loose:</p>
+
+<ul>
+<li><p>asterisk 1</p></li>
+<li><p>asterisk 2</p></li>
+<li><p>asterisk 3</p></li>
+</ul>
+
+<hr />
+
+<p>Pluses tight:</p>
+
+<ul>
+<li>Plus 1</li>
+<li>Plus 2</li>
+<li>Plus 3</li>
+</ul>
+
+<p>Pluses loose:</p>
+
+<ul>
+<li><p>Plus 1</p></li>
+<li><p>Plus 2</p></li>
+<li><p>Plus 3</p></li>
+</ul>
+
+<hr />
+
+<p>Minuses tight:</p>
+
+<ul>
+<li>Minus 1</li>
+<li>Minus 2</li>
+<li>Minus 3</li>
+</ul>
+
+<p>Minuses loose:</p>
+
+<ul>
+<li><p>Minus 1</p></li>
+<li><p>Minus 2</p></li>
+<li><p>Minus 3</p></li>
+</ul>
+
+<h2>Ordered</h2>
+
+<p>Tight:</p>
+
+<ol>
+<li>First</li>
+<li>Second</li>
+<li>Third</li>
+</ol>
+
+<p>and:</p>
+
+<ol>
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+</ol>
+
+<p>Loose using tabs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second</p></li>
+<li><p>Third</p></li>
+</ol>
+
+<p>and using spaces:</p>
+
+<ol>
+<li><p>One</p></li>
+<li><p>Two</p></li>
+<li><p>Three</p></li>
+</ol>
+
+<p>Multiple paragraphs:</p>
+
+<ol>
+<li><p>Item 1, graf one.</p>
+
+<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's
+back.</p></li>
+<li><p>Item 2.</p></li>
+<li><p>Item 3.</p></li>
+</ol>
+
+<h2>Nested</h2>
+
+<ul>
+<li>Tab
+<ul>
+<li>Tab
+<ul>
+<li>Tab</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<p>Here's another:</p>
+
+<ol>
+<li>First</li>
+<li>Second:
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li>Third</li>
+</ol>
+
+<p>Same thing but with paragraphs:</p>
+
+<ol>
+<li><p>First</p></li>
+<li><p>Second:</p>
+
+<ul>
+<li>Fee</li>
+<li>Fie</li>
+<li>Foe</li>
+</ul></li>
+<li><p>Third</p></li>
+</ol>
+
+
+<p>This was an error in Markdown 1.0.1:</p>
+
+<ul>
+<li><p>this</p>
+
+<ul><li>sub</li></ul>
+
+<p>that</p></li>
+</ul>
-<p><strong><em>This is strong and em.</em></strong></p>\r
-\r
-<p>So is <strong><em>this</em></strong> word.</p>\r
-\r
-<p><strong><em>This is strong and em.</em></strong></p>\r
-\r
-<p>So is <strong><em>this</em></strong> word.</p>\r
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
+
+<p><strong><em>This is strong and em.</em></strong></p>
+
+<p>So is <strong><em>this</em></strong> word.</p>
-<ul>\r
-<li><p>this is a list item\r
-indented with tabs</p></li>\r
-<li><p>this is a list item\r
-indented with spaces</p></li>\r
-</ul>\r
-\r
-<p>Code:</p>\r
-\r
-<pre><code>this code block is indented by one tab\r
-</code></pre>\r
-\r
-<p>And:</p>\r
-\r
-<pre><code> this code block is indented by two tabs\r
-</code></pre>\r
-\r
-<p>And:</p>\r
-\r
-<pre><code>+ this is an example list item\r
- indented with tabs\r
-\r
-+ this is an example list item\r
- indented with spaces\r
-</code></pre>\r
+<ul>
+<li><p>this is a list item
+indented with tabs</p></li>
+<li><p>this is a list item
+indented with spaces</p></li>
+</ul>
+
+<p>Code:</p>
+
+<pre><code>this code block is indented by one tab
+</code></pre>
+
+<p>And:</p>
+
+<pre><code> this code block is indented by two tabs
+</code></pre>
+
+<p>And:</p>
+
+<pre><code>+ this is an example list item
+ indented with tabs
+
++ this is an example list item
+ indented with spaces
+</code></pre>
-<blockquote>\r
-<p>A list within a blockquote:</p>\r
-<ul>\r
-<li>asterisk 1</li>\r
-<li>asterisk 2</li>\r
-<li>asterisk 3</li>\r
-</ul>\r
-</blockquote>\r
+<blockquote>
+<p>A list within a blockquote:</p>
+<ul>
+<li>asterisk 1</li>
+<li>asterisk 2</li>
+<li>asterisk 3</li>
+</ul>
+</blockquote>
-[DEFAULT]\r
-input_ext=.text\r
-normalize=1\r
-# comment out next line to run these tests\r
-#skip=1\r
-\r
-[Images]\r
-# the attributes don't get ordered the same so we skip this\r
-skip=1\r
-\r
-[Code Blocks]\r
-# some weird whitespace issue\r
-skip=1\r
-\r
-[Links, reference style]\r
-# weird issue with nested brackets TODO: fixme\r
-skip=1\r
-\r
-[Backslash escapes]\r
-# backticks in raw html attributes TODO: fixme\r
-skip=1\r
-\r
-[Code Spans]\r
-# more backticks in raw html attributes TODO: fixme\r
-skip=1\r
+DEFAULT:
+ input_ext: .text
+ normalize: True
+ # comment out next line to run these tests
+ #skip: True
+
+Images:
+ # the attributes don't get ordered the same so we skip this
+ skip: True
+
+Code Blocks:
+ # some weird whitespace issue
+ skip: True
+
+Links, reference style:
+ # weird issue with nested brackets TODO: fixme
+ skip: True
+
+Backslash escapes:
+ # backticks in raw html attributes TODO: fixme
+ skip: True
+
+Code Spans:
+ # more backticks in raw html attributes TODO: fixme
+ skip: True
-import traceback\r
-from .util import MarkdownSyntaxError\r
-from nose.plugins import Plugin\r
-from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin\r
-\r
-class Markdown(ErrorClassPlugin):\r
- """ Add MarkdownSyntaxError and ensure proper formatting. """\r
- mdsyntax = ErrorClass(MarkdownSyntaxError, \r
- label='MarkdownSyntaxError', \r
- isfailure=True)\r
- enabled = True\r
-\r
- def configure(self, options, conf):\r
- self.conf = conf\r
-\r
- def addError(self, test, err):\r
- """ Ensure other plugins see the error by returning nothing here. """\r
- pass\r
-\r
- def formatError(self, test, err):\r
- """ Remove unnessecary and unhelpful traceback from error report. """\r
- et, ev, tb = err\r
- if et.__name__ == 'MarkdownSyntaxError':\r
- return et, ev, ''\r
- return err\r
-\r
-\r
-def escape(html):\r
- """ Escape HTML for display as source within HTML. """\r
- html = html.replace('&', '&')\r
- html = html.replace('<', '<')\r
- html = html.replace('>', '>')\r
- return html\r
-\r
-\r
-class HtmlOutput(Plugin):\r
- """Output test results as ugly, unstyled html. """\r
- \r
- name = 'html-output'\r
- score = 2 # run late\r
- enabled = True\r
- \r
- def __init__(self):\r
- super(HtmlOutput, self).__init__()\r
- self.html = [ '<html><head>',\r
- '<title>Test output</title>',\r
- '</head><body>' ]\r
- \r
- def configure(self, options, conf):\r
- self.conf = conf\r
-\r
- def addSuccess(self, test):\r
- self.html.append('<span>ok</span>')\r
- \r
- def addError(self, test, err):\r
- err = self.formatErr(err)\r
- self.html.append('<span>ERROR</span>')\r
- self.html.append('<pre>%s</pre>' % escape(err))\r
- \r
- def addFailure(self, test, err):\r
- err = self.formatErr(err)\r
- self.html.append('<span>FAIL</span>')\r
- self.html.append('<pre>%s</pre>' % escape(err))\r
-\r
- def finalize(self, result):\r
- self.html.append('<div>')\r
- self.html.append("Ran %d test%s" %\r
- (result.testsRun, result.testsRun != 1 and "s" \r
-or ""))\r
- self.html.append('</div>')\r
- self.html.append('<div>')\r
- if not result.wasSuccessful():\r
- self.html.extend(['<span>FAILED (',\r
- 'failures=%d ' % len(result.failures),\r
- 'errors=%d' % len(result.errors)])\r
- for cls in list(result.errorClasses.keys()):\r
- storage, label, isfail = result.errorClasses[cls]\r
- if len(storage):\r
- self.html.append(' %ss=%d' % (label, len(storage)))\r
- self.html.append(')</span>')\r
- else:\r
- self.html.append('OK')\r
- self.html.append('</div></body></html>')\r
- f = open('test-output.html', 'w')\r
- for l in self.html:\r
- f.write(l)\r
- f.close()\r
-\r
- def formatErr(self, err):\r
- exctype, value, tb = err\r
- return ''.join(traceback.format_exception(exctype, value, tb))\r
- \r
- def startContext(self, ctx):\r
- try:\r
- n = ctx.__name__\r
- except AttributeError:\r
- n = str(ctx).replace('<', '').replace('>', '')\r
- self.html.extend(['<fieldset>', '<legend>', n, '</legend>'])\r
- try:\r
- path = ctx.__file__.replace('.pyc', '.py')\r
- self.html.extend(['<div>', path, '</div>'])\r
- except AttributeError:\r
- pass\r
-\r
- def stopContext(self, ctx):\r
- self.html.append('</fieldset>')\r
- \r
- def startTest(self, test):\r
- self.html.extend([ '<div><span>',\r
- test.shortDescription() or str(test),\r
- '</span>' ])\r
- \r
- def stopTest(self, test):\r
- self.html.append('</div>')\r
-\r
+import traceback
+from nose.plugins import Plugin
+from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin
+
+
+class MarkdownSyntaxError(Exception):
+ pass
+
+
+class Markdown(ErrorClassPlugin):
+ """ Add MarkdownSyntaxError and ensure proper formatting. """
+ mdsyntax = ErrorClass(MarkdownSyntaxError,
+ label='MarkdownSyntaxError',
+ isfailure=True)
+ enabled = True
+
+ def configure(self, options, conf):
+ self.conf = conf
+
+ def addError(self, test, err):
+ """ Ensure other plugins see the error by returning nothing here. """
+ pass
+
+ def formatError(self, test, err):
+ """ Remove unnessecary and unhelpful traceback from error report. """
+ et, ev, tb = err
+ if et.__name__ == 'MarkdownSyntaxError':
+ return et, ev, ''
+ return err
+
+
+def escape(html):
+ """ Escape HTML for display as source within HTML. """
+ html = html.replace('&', '&')
+ html = html.replace('<', '<')
+ html = html.replace('>', '>')
+ return html
+
+
+class HtmlOutput(Plugin):
+ """Output test results as ugly, unstyled html. """
+
+ name = 'html-output'
+ score = 2 # run late
+ enabled = True
+
+ def __init__(self):
+ super(HtmlOutput, self).__init__()
+ self.html = [ '<html><head>',
+ '<title>Test output</title>',
+ '</head><body>' ]
+
+ def configure(self, options, conf):
+ self.conf = conf
+
+ def addSuccess(self, test):
+ self.html.append('<span>ok</span>')
+
+ def addError(self, test, err):
+ err = self.formatErr(err)
+ self.html.append('<span>ERROR</span>')
+ self.html.append('<pre>%s</pre>' % escape(err))
+
+ def addFailure(self, test, err):
+ err = self.formatErr(err)
+ self.html.append('<span>FAIL</span>')
+ self.html.append('<pre>%s</pre>' % escape(err))
+
+ def finalize(self, result):
+ self.html.append('<div>')
+ self.html.append("Ran %d test%s" %
+ (result.testsRun, result.testsRun != 1 and "s"
+or ""))
+ self.html.append('</div>')
+ self.html.append('<div>')
+ if not result.wasSuccessful():
+ self.html.extend(['<span>FAILED (',
+ 'failures=%d ' % len(result.failures),
+ 'errors=%d' % len(result.errors)])
+ for cls in list(result.errorClasses.keys()):
+ storage, label, isfail = result.errorClasses[cls]
+ if len(storage):
+ self.html.append(' %ss=%d' % (label, len(storage)))
+ self.html.append(')</span>')
+ else:
+ self.html.append('OK')
+ self.html.append('</div></body></html>')
+ f = open('test-output.html', 'w')
+ for l in self.html:
+ f.write(l)
+ f.close()
+
+ def formatErr(self, err):
+ exctype, value, tb = err
+ return ''.join(traceback.format_exception(exctype, value, tb))
+
+ def startContext(self, ctx):
+ try:
+ n = ctx.__name__
+ except AttributeError:
+ n = str(ctx).replace('<', '').replace('>', '')
+ self.html.extend(['<fieldset>', '<legend>', n, '</legend>'])
+ try:
+ path = ctx.__file__.replace('.pyc', '.py')
+ self.html.extend(['<div>', path, '</div>'])
+ except AttributeError:
+ pass
+
+ def stopContext(self, ctx):
+ self.html.append('</fieldset>')
+
+ def startTest(self, test):
+ self.html.extend([ '<div><span>',
+ test.shortDescription() or str(test),
+ '</span>' ])
+
+ def stopTest(self, test):
+ self.html.append('</div>')
+
-<p>to:</p>\r
-<p><td /><td style="text-align: center; white-space: nowrap;"><br /></p>\r
-<blockquote>\r
-<p>3) You don't need to alter all localization files.\r
- Adding the new labels to the en_US files will do it.</p>\r
+<p>to:</p>
+<p><td /><td style="text-align: center; white-space: nowrap;"><br /></p>
+<blockquote>
+<p>3) You don't need to alter all localization files.
+ Adding the new labels to the en_US files will do it.</p>
</blockquote>
\ No newline at end of file
-to:\r
-\r
-<td /><td style="text-align: center; white-space: nowrap;"><br />\r
-\r
-> 3) You don't need to alter all localization files.\r
-> Adding the new labels to the en_US files will do it.\r
+to:
+
+<td /><td style="text-align: center; white-space: nowrap;"><br />
+
+> 3) You don't need to alter all localization files.
+> Adding the new labels to the en_US files will do it.
-<p>Simple block on one line:</p>\r
-<p><div>foo</div></p>\r
-<p>And nested without indentation:</p>\r
-<p><div>\r
-<div>\r
-<div>\r
-foo\r
-</div>\r
-</div>\r
-<div>bar</div>\r
+<p>Simple block on one line:</p>
+<p><div>foo</div></p>
+<p>And nested without indentation:</p>
+<p><div>
+<div>
+<div>
+foo
+</div>
+</div>
+<div>bar</div>
</div></p>
\ No newline at end of file
-Simple block on one line:\r
-\r
-<div>foo</div>\r
-\r
-And nested without indentation:\r
-\r
-<div>\r
-<div>\r
-<div>\r
-foo\r
-</div>\r
-</div>\r
-<div>bar</div>\r
-</div>\r
+Simple block on one line:
+
+<div>foo</div>
+
+And nested without indentation:
+
+<div>
+<div>
+<div>
+foo
+</div>
+</div>
+<div>bar</div>
+</div>
-<p>Paragraph one.</p>\r
-<p><!-- This is a simple comment --></p>\r
-<p><!--\r
- This is another comment.\r
---></p>\r
-<p>Paragraph two.</p>\r
-<p><!-- one comment block -- -- with two comments --></p>\r
+<p>Paragraph one.</p>
+<p><!-- This is a simple comment --></p>
+<p><!--
+ This is another comment.
+--></p>
+<p>Paragraph two.</p>
+<p><!-- one comment block -- -- with two comments --></p>
<p>The end.</p>
\ No newline at end of file
-Paragraph one.\r
-\r
-<!-- This is a simple comment -->\r
-\r
-<!--\r
- This is another comment.\r
--->\r
-\r
-Paragraph two.\r
-\r
-<!-- one comment block -- -- with two comments -->\r
-\r
-The end.\r
+Paragraph one.
+
+<!-- This is a simple comment -->
+
+<!--
+ This is another comment.
+-->
+
+Paragraph two.
+
+<!-- one comment block -- -- with two comments -->
+
+The end.
-<p>Here's a simple block:</p>\r
-<p><div>\r
- foo\r
-</div></p>\r
-<p>This should be a code block, though:</p>\r
-<pre><code><div>\r
- foo\r
-</div>\r
-</code></pre>\r
-<p>As should this:</p>\r
-<pre><code><div>foo</div>\r
-</code></pre>\r
-<p>Now, nested:</p>\r
-<p><div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div></p>\r
-<p>This should just be an HTML comment:</p>\r
-<p><!-- Comment --></p>\r
-<p>Multiline:</p>\r
-<p><!--\r
-Blah\r
-Blah\r
---></p>\r
-<p>Code block:</p>\r
-<pre><code><!-- Comment -->\r
-</code></pre>\r
-<p>Just plain comment, with trailing spaces on the line:</p>\r
-<p><!-- foo --> </p>\r
-<p>Code:</p>\r
-<pre><code><hr />\r
-</code></pre>\r
-<p>Hr's:</p>\r
-<p><hr></p>\r
-<p><hr/></p>\r
-<p><hr /></p>\r
-<p><hr> </p>\r
-<p><hr/> </p>\r
-<p><hr /> </p>\r
-<p><hr class="foo" id="bar" /></p>\r
-<p><hr class="foo" id="bar"/></p>\r
-<p><hr class="foo" id="bar" ></p>\r
+<p>Here's a simple block:</p>
+<p><div>
+ foo
+</div></p>
+<p>This should be a code block, though:</p>
+<pre><code><div>
+ foo
+</div>
+</code></pre>
+<p>As should this:</p>
+<pre><code><div>foo</div>
+</code></pre>
+<p>Now, nested:</p>
+<p><div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div></p>
+<p>This should just be an HTML comment:</p>
+<p><!-- Comment --></p>
+<p>Multiline:</p>
+<p><!--
+Blah
+Blah
+--></p>
+<p>Code block:</p>
+<pre><code><!-- Comment -->
+</code></pre>
+<p>Just plain comment, with trailing spaces on the line:</p>
+<p><!-- foo --> </p>
+<p>Code:</p>
+<pre><code><hr />
+</code></pre>
+<p>Hr's:</p>
+<p><hr></p>
+<p><hr/></p>
+<p><hr /></p>
+<p><hr> </p>
+<p><hr/> </p>
+<p><hr /> </p>
+<p><hr class="foo" id="bar" /></p>
+<p><hr class="foo" id="bar"/></p>
+<p><hr class="foo" id="bar" ></p>
<p><some <a href="http://example.com">weird</a> stuff></p>
\ No newline at end of file
-Here's a simple block:\r
-\r
-<div>\r
- foo\r
-</div>\r
-\r
-This should be a code block, though:\r
-\r
- <div>\r
- foo\r
- </div>\r
-\r
-As should this:\r
-\r
- <div>foo</div>\r
-\r
-Now, nested:\r
-\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-This should just be an HTML comment:\r
-\r
-<!-- Comment -->\r
-\r
-Multiline:\r
-\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-Code block:\r
-\r
- <!-- Comment -->\r
-\r
-Just plain comment, with trailing spaces on the line:\r
-\r
-<!-- foo --> \r
-\r
-Code:\r
-\r
- <hr />\r
- \r
-Hr's:\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr> \r
-\r
-<hr/> \r
-\r
-<hr /> \r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
-\r
-<some [weird](http://example.com) stuff>\r
+Here's a simple block:
+
+<div>
+ foo
+</div>
+
+This should be a code block, though:
+
+ <div>
+ foo
+ </div>
+
+As should this:
+
+ <div>foo</div>
+
+Now, nested:
+
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+This should just be an HTML comment:
+
+<!-- Comment -->
+
+Multiline:
+
+<!--
+Blah
+Blah
+-->
+
+Code block:
+
+ <!-- Comment -->
+
+Just plain comment, with trailing spaces on the line:
+
+<!-- foo -->
+
+Code:
+
+ <hr />
+
+Hr's:
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
+
+<some [weird](http://example.com) stuff>
-<p><a href="">XSS</a>\r
+<p><a href="">XSS</a>
See http://security.stackexchange.com/q/30330/1261 for details.</p>
\ No newline at end of file
-[XSS](javascript://%0Aalert%28'XSS'%29;)\r
-See http://security.stackexchange.com/q/30330/1261 for details.\r
-\r
+[XSS](javascript://%0Aalert%28'XSS'%29;)
+See http://security.stackexchange.com/q/30330/1261 for details.
+
-<p>Here's a simple block:</p>\r
-<p></p>\r
-<p>This should be a code block, though:</p>\r
-<pre><code><div>\r
- foo\r
-</div>\r
-</code></pre>\r
-<p>As should this:</p>\r
-<pre><code><div>foo</div>\r
-</code></pre>\r
-<p>Now, nested:</p>\r
-<p></p>\r
-<p>This should just be an HTML comment:</p>\r
-<p></p>\r
-<p>Multiline:</p>\r
-<p></p>\r
-<p>Code block:</p>\r
-<pre><code><!-- Comment -->\r
-</code></pre>\r
-<p>Just plain comment, with trailing spaces on the line:</p>\r
-<p></p>\r
-<p>Code:</p>\r
-<pre><code><hr />\r
-</code></pre>\r
-<p>Hr's:</p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
-<p></p>\r
+<p>Here's a simple block:</p>
+<p></p>
+<p>This should be a code block, though:</p>
+<pre><code><div>
+ foo
+</div>
+</code></pre>
+<p>As should this:</p>
+<pre><code><div>foo</div>
+</code></pre>
+<p>Now, nested:</p>
+<p></p>
+<p>This should just be an HTML comment:</p>
+<p></p>
+<p>Multiline:</p>
+<p></p>
+<p>Code block:</p>
+<pre><code><!-- Comment -->
+</code></pre>
+<p>Just plain comment, with trailing spaces on the line:</p>
+<p></p>
+<p>Code:</p>
+<pre><code><hr />
+</code></pre>
+<p>Hr's:</p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
<p></p>
\ No newline at end of file
-Here's a simple block:\r
-\r
-<div>\r
- foo\r
-</div>\r
-\r
-This should be a code block, though:\r
-\r
- <div>\r
- foo\r
- </div>\r
-\r
-As should this:\r
-\r
- <div>foo</div>\r
-\r
-Now, nested:\r
-\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-This should just be an HTML comment:\r
-\r
-<!-- Comment -->\r
-\r
-Multiline:\r
-\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-Code block:\r
-\r
- <!-- Comment -->\r
-\r
-Just plain comment, with trailing spaces on the line:\r
-\r
-<!-- foo --> \r
-\r
-Code:\r
-\r
- <hr />\r
- \r
-Hr's:\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr> \r
-\r
-<hr/> \r
-\r
-<hr /> \r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
-\r
-<some [weird](http://example.com) stuff>\r
+Here's a simple block:
+
+<div>
+ foo
+</div>
+
+This should be a code block, though:
+
+ <div>
+ foo
+ </div>
+
+As should this:
+
+ <div>foo</div>
+
+Now, nested:
+
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+This should just be an HTML comment:
+
+<!-- Comment -->
+
+Multiline:
+
+<!--
+Blah
+Blah
+-->
+
+Code block:
+
+ <!-- Comment -->
+
+Just plain comment, with trailing spaces on the line:
+
+<!-- foo -->
+
+Code:
+
+ <hr />
+
+Hr's:
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
+
+<some [weird](http://example.com) stuff>
-<p>Here's a simple block:</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>This should be a code block, though:</p>\r
-<pre><code><div>\r
- foo\r
-</div>\r
-</code></pre>\r
-<p>As should this:</p>\r
-<pre><code><div>foo</div>\r
-</code></pre>\r
-<p>Now, nested:</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>This should just be an HTML comment:</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>Multiline:</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>Code block:</p>\r
-<pre><code><!-- Comment -->\r
-</code></pre>\r
-<p>Just plain comment, with trailing spaces on the line:</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>Code:</p>\r
-<pre><code><hr />\r
-</code></pre>\r
-<p>Hr's:</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
-<p>[HTML_REMOVED]</p>\r
+<p>Here's a simple block:</p>
+<p>[HTML_REMOVED]</p>
+<p>This should be a code block, though:</p>
+<pre><code><div>
+ foo
+</div>
+</code></pre>
+<p>As should this:</p>
+<pre><code><div>foo</div>
+</code></pre>
+<p>Now, nested:</p>
+<p>[HTML_REMOVED]</p>
+<p>This should just be an HTML comment:</p>
+<p>[HTML_REMOVED]</p>
+<p>Multiline:</p>
+<p>[HTML_REMOVED]</p>
+<p>Code block:</p>
+<pre><code><!-- Comment -->
+</code></pre>
+<p>Just plain comment, with trailing spaces on the line:</p>
+<p>[HTML_REMOVED]</p>
+<p>Code:</p>
+<pre><code><hr />
+</code></pre>
+<p>Hr's:</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
+<p>[HTML_REMOVED]</p>
<p>[HTML_REMOVED]</p>
\ No newline at end of file
-Here's a simple block:\r
-\r
-<div>\r
- foo\r
-</div>\r
-\r
-This should be a code block, though:\r
-\r
- <div>\r
- foo\r
- </div>\r
-\r
-As should this:\r
-\r
- <div>foo</div>\r
-\r
-Now, nested:\r
-\r
-<div>\r
- <div>\r
- <div>\r
- foo\r
- </div>\r
- </div>\r
-</div>\r
-\r
-This should just be an HTML comment:\r
-\r
-<!-- Comment -->\r
-\r
-Multiline:\r
-\r
-<!--\r
-Blah\r
-Blah\r
--->\r
-\r
-Code block:\r
-\r
- <!-- Comment -->\r
-\r
-Just plain comment, with trailing spaces on the line:\r
-\r
-<!-- foo --> \r
-\r
-Code:\r
-\r
- <hr />\r
- \r
-Hr's:\r
-\r
-<hr>\r
-\r
-<hr/>\r
-\r
-<hr />\r
-\r
-<hr> \r
-\r
-<hr/> \r
-\r
-<hr /> \r
-\r
-<hr class="foo" id="bar" />\r
-\r
-<hr class="foo" id="bar"/>\r
-\r
-<hr class="foo" id="bar" >\r
-\r
-<some [weird](http://example.com) stuff>\r
+Here's a simple block:
+
+<div>
+ foo
+</div>
+
+This should be a code block, though:
+
+ <div>
+ foo
+ </div>
+
+As should this:
+
+ <div>foo</div>
+
+Now, nested:
+
+<div>
+ <div>
+ <div>
+ foo
+ </div>
+ </div>
+</div>
+
+This should just be an HTML comment:
+
+<!-- Comment -->
+
+Multiline:
+
+<!--
+Blah
+Blah
+-->
+
+Code block:
+
+ <!-- Comment -->
+
+Just plain comment, with trailing spaces on the line:
+
+<!-- foo -->
+
+Code:
+
+ <hr />
+
+Hr's:
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr>
+
+<hr/>
+
+<hr />
+
+<hr class="foo" id="bar" />
+
+<hr class="foo" id="bar"/>
+
+<hr class="foo" id="bar" >
+
+<some [weird](http://example.com) stuff>
-<p>This should be stripped/escaped in safe_mode.</p>\r
-<p><script>\r
-alert("Hello world!")\r
-</script></p>\r
-<p>With blank lines.</p>\r
-<p><script></p>\r
-<p>alert("Hello world!")</p>\r
-<p></script></p>\r
-<p>Now with some weirdness</p>\r
-<p><code><script <!--\r
-alert("Hello world!")\r
-</script <></code> `</p>\r
-<p>Try another way.</p>\r
-<p><script <!--\r
-alert("Hello world!")\r
-</script <></p>\r
-<p>This time with blank lines.</p>\r
-<p><script <!--</p>\r
-<p>alert("Hello world!")</p>\r
+<p>This should be stripped/escaped in safe_mode.</p>
+<p><script>
+alert("Hello world!")
+</script></p>
+<p>With blank lines.</p>
+<p><script></p>
+<p>alert("Hello world!")</p>
+<p></script></p>
+<p>Now with some weirdness</p>
+<p><code><script <!--
+alert("Hello world!")
+</script <></code> `</p>
+<p>Try another way.</p>
+<p><script <!--
+alert("Hello world!")
+</script <></p>
+<p>This time with blank lines.</p>
+<p><script <!--</p>
+<p>alert("Hello world!")</p>
<p></script <></p>
\ No newline at end of file
-This should be stripped/escaped in safe_mode.\r
-\r
-<script>\r
-alert("Hello world!")\r
-</script>\r
-\r
-With blank lines.\r
-\r
-<script>\r
-\r
-alert("Hello world!")\r
-\r
-</script>\r
-\r
-Now with some weirdness\r
-\r
-``<script <!--\r
-alert("Hello world!")\r
-</script <>`` `\r
-\r
-Try another way.\r
-\r
-<script <!--\r
-alert("Hello world!")\r
-</script <>\r
-\r
-This time with blank lines.\r
-\r
-<script <!--\r
-\r
-alert("Hello world!")\r
-\r
-</script <>\r
+This should be stripped/escaped in safe_mode.
+
+<script>
+alert("Hello world!")
+</script>
+
+With blank lines.
+
+<script>
+
+alert("Hello world!")
+
+</script>
+
+Now with some weirdness
+
+``<script <!--
+alert("Hello world!")
+</script <>`` `
+
+Try another way.
+
+<script <!--
+alert("Hello world!")
+</script <>
+
+This time with blank lines.
+
+<script <!--
+
+alert("Hello world!")
+
+</script <>
-[DEFAULT]\r
-safe_mode=escape\r
-\r
-[remove]\r
-safe_mode=remove\r
-\r
-[replace]\r
-safe_mode=replace\r
+DEFAULT:
+ safe_mode: escape
+
+remove:
+ safe_mode: remove
+
+replace:
+ safe_mode: replace
-<p>These links should be unsafe and not allowed in safe_mode</p>\r
-<p><a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a>\r
-<a href="">link</a></p>\r
-<p><img alt="img" src="" />\r
-<a href="">ref</a>\r
-<img alt="imgref" src="" /></p>\r
-<p>These should work regardless:</p>\r
-<p><a href="relative/url.html">relative</a>\r
-<a href="mailto:foo@bar.com">email</a>\r
-<a href="news:some.news.group.com">news scheme</a>\r
+<p>These links should be unsafe and not allowed in safe_mode</p>
+<p><a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a>
+<a href="">link</a></p>
+<p><img alt="img" src="" />
+<a href="">ref</a>
+<img alt="imgref" src="" /></p>
+<p>These should work regardless:</p>
+<p><a href="relative/url.html">relative</a>
+<a href="mailto:foo@bar.com">email</a>
+<a href="news:some.news.group.com">news scheme</a>
<a href="http://example.com">http link</a></p>
\ No newline at end of file
-These links should be unsafe and not allowed in safe_mode\r
-\r
-[link](javascript:alert%28'Hello%20world!'%29)\r
-[link](vbscript:msgbox%28%22Hello%20world!%22%29)\r
-[link](livescript:alert%28'Hello%20world!'%29)\r
-[link](mocha:[code])\r
-[link](jAvAsCrIpT:alert%28'Hello%20world!'%29)\r
-[link](ja vas cr ipt:alert%28'Hello%20world!'%29)\r
-[link](ja vas cr ipt:alert%28'Hello%20world!'%29)\r
-[link](ja vas cr ipt:alert%28'Hello%20world!'%29)\r
-[link](ja%09 %0Avas cr
ipt:alert%28'Hello%20world!'%29)\r
-[link](ja%20vas%20cr%20ipt:alert%28'Hello%20world!'%29)\r
-[link](live%20script:alert%28'Hello%20world!'%29)\r
-\r
-\r
-[ref][]\r
-![imgref][]\r
-\r
-[ref]: javascript:alert%29'XSS'%29\r
-[imgref]: javascript:alert%29'XSS'%29\r
-\r
-These should work regardless:\r
-\r
-[relative](relative/url.html)\r
-[email](mailto:foo@bar.com)\r
-[news scheme](news:some.news.group.com)\r
-[http link](http://example.com)\r
+These links should be unsafe and not allowed in safe_mode
+
+[link](javascript:alert%28'Hello%20world!'%29)
+[link](vbscript:msgbox%28%22Hello%20world!%22%29)
+[link](livescript:alert%28'Hello%20world!'%29)
+[link](mocha:[code])
+[link](jAvAsCrIpT:alert%28'Hello%20world!'%29)
+[link](ja vas cr ipt:alert%28'Hello%20world!'%29)
+[link](ja vas cr ipt:alert%28'Hello%20world!'%29)
+[link](ja vas cr ipt:alert%28'Hello%20world!'%29)
+[link](ja%09 %0Avas cr
ipt:alert%28'Hello%20world!'%29)
+[link](ja%20vas%20cr%20ipt:alert%28'Hello%20world!'%29)
+[link](live%20script:alert%28'Hello%20world!'%29)
+
+
+[ref][]
+![imgref][]
+
+[ref]: javascript:alert%29'XSS'%29
+[imgref]: javascript:alert%29'XSS'%29
+
+These should work regardless:
+
+[relative](relative/url.html)
+[email](mailto:foo@bar.com)
+[news scheme](news:some.news.group.com)
+[http link](http://example.com)
-#!/usr/bin/python\r
-"""\r
-Python-Markdown Regression Tests\r
-================================\r
-\r
-Tests of the various APIs with the python markdown lib.\r
-\r
-"""\r
-\r
-from __future__ import unicode_literals\r
-import unittest\r
-import sys\r
-import types\r
-import markdown\r
-import warnings\r
-\r
-PY3 = sys.version_info[0] == 3\r
-\r
-class TestMarkdownBasics(unittest.TestCase):\r
- """ Tests basics of the Markdown class. """\r
-\r
- def setUp(self):\r
- """ Create instance of Markdown. """\r
- self.md = markdown.Markdown()\r
-\r
- def testBlankInput(self):\r
- """ Test blank input. """\r
- self.assertEqual(self.md.convert(''), '')\r
-\r
- def testWhitespaceOnly(self):\r
- """ Test input of only whitespace. """\r
- self.assertEqual(self.md.convert(' '), '')\r
-\r
- def testSimpleInput(self):\r
- """ Test simple input. """\r
- self.assertEqual(self.md.convert('foo'), '<p>foo</p>')\r
-\r
-class TestBlockParser(unittest.TestCase):\r
- """ Tests of the BlockParser class. """\r
-\r
- def setUp(self):\r
- """ Create instance of BlockParser. """\r
- self.parser = markdown.Markdown().parser\r
-\r
- def testParseChunk(self):\r
- """ Test BlockParser.parseChunk. """\r
- root = markdown.util.etree.Element("div")\r
- text = 'foo'\r
- self.parser.parseChunk(root, text)\r
- self.assertEqual(markdown.serializers.to_xhtml_string(root), \r
- "<div><p>foo</p></div>")\r
-\r
- def testParseDocument(self):\r
- """ Test BlockParser.parseDocument. """\r
- lines = ['#foo', '', 'bar', '', ' baz']\r
- tree = self.parser.parseDocument(lines)\r
- self.assertTrue(isinstance(tree, markdown.util.etree.ElementTree))\r
- self.assertTrue(markdown.util.etree.iselement(tree.getroot()))\r
- self.assertEqual(markdown.serializers.to_xhtml_string(tree.getroot()),\r
- "<div><h1>foo</h1><p>bar</p><pre><code>baz\n</code></pre></div>")\r
-\r
-\r
-class TestBlockParserState(unittest.TestCase):\r
- """ Tests of the State class for BlockParser. """\r
-\r
- def setUp(self):\r
- self.state = markdown.blockparser.State()\r
-\r
- def testBlankState(self):\r
- """ Test State when empty. """\r
- self.assertEqual(self.state, [])\r
-\r
- def testSetSate(self):\r
- """ Test State.set(). """\r
- self.state.set('a_state')\r
- self.assertEqual(self.state, ['a_state'])\r
- self.state.set('state2')\r
- self.assertEqual(self.state, ['a_state', 'state2'])\r
-\r
- def testIsSate(self):\r
- """ Test State.isstate(). """\r
- self.assertEqual(self.state.isstate('anything'), False)\r
- self.state.set('a_state')\r
- self.assertEqual(self.state.isstate('a_state'), True)\r
- self.state.set('state2')\r
- self.assertEqual(self.state.isstate('state2'), True)\r
- self.assertEqual(self.state.isstate('a_state'), False)\r
- self.assertEqual(self.state.isstate('missing'), False)\r
-\r
- def testReset(self):\r
- """ Test State.reset(). """\r
- self.state.set('a_state')\r
- self.state.reset()\r
- self.assertEqual(self.state, [])\r
- self.state.set('state1')\r
- self.state.set('state2')\r
- self.state.reset()\r
- self.assertEqual(self.state, ['state1'])\r
-\r
-class TestHtmlStash(unittest.TestCase):\r
- """ Test Markdown's HtmlStash. """\r
- \r
- def setUp(self):\r
- self.stash = markdown.util.HtmlStash()\r
- self.placeholder = self.stash.store('foo')\r
-\r
- def testSimpleStore(self):\r
- """ Test HtmlStash.store. """\r
- self.assertEqual(self.placeholder, self.stash.get_placeholder(0))\r
- self.assertEqual(self.stash.html_counter, 1)\r
- self.assertEqual(self.stash.rawHtmlBlocks, [('foo', False)])\r
-\r
- def testStoreMore(self):\r
- """ Test HtmlStash.store with additional blocks. """\r
- placeholder = self.stash.store('bar')\r
- self.assertEqual(placeholder, self.stash.get_placeholder(1))\r
- self.assertEqual(self.stash.html_counter, 2)\r
- self.assertEqual(self.stash.rawHtmlBlocks, \r
- [('foo', False), ('bar', False)])\r
-\r
- def testSafeStore(self):\r
- """ Test HtmlStash.store with 'safe' html. """\r
- self.stash.store('bar', True)\r
- self.assertEqual(self.stash.rawHtmlBlocks, \r
- [('foo', False), ('bar', True)])\r
-\r
- def testReset(self):\r
- """ Test HtmlStash.reset. """\r
- self.stash.reset()\r
- self.assertEqual(self.stash.html_counter, 0)\r
- self.assertEqual(self.stash.rawHtmlBlocks, [])\r
-\r
-class TestOrderedDict(unittest.TestCase):\r
- """ Test OrderedDict storage class. """\r
-\r
- def setUp(self):\r
- self.odict = markdown.odict.OrderedDict()\r
- self.odict['first'] = 'This'\r
- self.odict['third'] = 'a'\r
- self.odict['fourth'] = 'self'\r
- self.odict['fifth'] = 'test'\r
-\r
- def testValues(self):\r
- """ Test output of OrderedDict.values(). """\r
- self.assertEqual(list(self.odict.values()), ['This', 'a', 'self', 'test'])\r
-\r
- def testKeys(self):\r
- """ Test output of OrderedDict.keys(). """\r
- self.assertEqual(list(self.odict.keys()),\r
- ['first', 'third', 'fourth', 'fifth'])\r
-\r
- def testItems(self):\r
- """ Test output of OrderedDict.items(). """\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test')])\r
-\r
- def testAddBefore(self):\r
- """ Test adding an OrderedDict item before a given key. """\r
- self.odict.add('second', 'is', '<third')\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('second', 'is'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test')])\r
-\r
- def testAddAfter(self):\r
- """ Test adding an OrderDict item after a given key. """\r
- self.odict.add('second', 'is', '>first')\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('second', 'is'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test')])\r
-\r
- def testAddAfterEnd(self):\r
- """ Test adding an OrderedDict item after the last key. """\r
- self.odict.add('sixth', '.', '>fifth')\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test'), ('sixth', '.')])\r
-\r
- def testAdd_begin(self):\r
- """ Test adding an OrderedDict item using "_begin". """\r
- self.odict.add('zero', 'CRAZY', '_begin')\r
- self.assertEqual(list(self.odict.items()),\r
- [('zero', 'CRAZY'), ('first', 'This'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test')])\r
-\r
- def testAdd_end(self):\r
- """ Test adding an OrderedDict item using "_end". """\r
- self.odict.add('sixth', '.', '_end')\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test'), ('sixth', '.')])\r
-\r
- def testAddBadLocation(self):\r
- """ Test Error on bad location in OrderedDict.add(). """\r
- self.assertRaises(ValueError, self.odict.add, 'sixth', '.', '<seventh')\r
- self.assertRaises(ValueError, self.odict.add, 'second', 'is', 'third')\r
-\r
- def testDeleteItem(self):\r
- """ Test deletion of an OrderedDict item. """\r
- del self.odict['fourth']\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('third', 'a'), ('fifth', 'test')])\r
-\r
- def testChangeValue(self):\r
- """ Test OrderedDict change value. """\r
- self.odict['fourth'] = 'CRAZY'\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('third', 'a'), \r
- ('fourth', 'CRAZY'), ('fifth', 'test')])\r
-\r
- def testChangeOrder(self):\r
- """ Test OrderedDict change order. """\r
- self.odict.link('fourth', '<third')\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('fourth', 'self'),\r
- ('third', 'a'), ('fifth', 'test')])\r
-\r
- def textBadLink(self):\r
- """ Test OrderedDict change order with bad location. """\r
- self.assertRaises(ValueError, self.odict.link('fourth', '<bad'))\r
- # Check for data integrity ("fourth" wasn't deleted).'\r
- self.assertEqual(list(self.odict.items()),\r
- [('first', 'This'), ('third', 'a'), \r
- ('fourth', 'self'), ('fifth', 'test')])\r
-\r
-class TestErrors(unittest.TestCase):\r
- """ Test Error Reporting. """\r
-\r
- def setUp(self):\r
- # Set warnings to be raised as errors\r
- warnings.simplefilter('error')\r
-\r
- def tearDown(self):\r
- # Reset warning behavior back to default\r
- warnings.simplefilter('default')\r
-\r
- def testNonUnicodeSource(self):\r
- """ Test falure on non-unicode source text. """\r
- if sys.version_info < (3, 0):\r
- source = "foo".encode('utf-16') \r
- self.assertRaises(UnicodeDecodeError, markdown.markdown, source)\r
-\r
- def testBadOutputFormat(self):\r
- """ Test failure on bad output_format. """\r
- self.assertRaises(KeyError, markdown.Markdown, output_format='invalid')\r
-\r
- def testLoadExtensionFailure(self):\r
- """ Test failure of an extension to load. """\r
- self.assertRaises(ImportError, \r
- markdown.Markdown, extensions=['non_existant_ext']) \r
-\r
- def testLoadBadExtension(self):\r
- """ Test loading of an Extension with no makeExtension function. """\r
- _create_fake_extension(name='fake', has_factory_func=False)\r
- self.assertRaises(AttributeError, markdown.Markdown, extensions=['fake'])\r
-\r
- def testNonExtension(self):\r
- """ Test loading a non Extension object as an extension. """\r
- _create_fake_extension(name='fake', is_wrong_type=True)\r
- self.assertRaises(TypeError, markdown.Markdown, extensions=['fake'])\r
-\r
- def testBaseExtention(self):\r
- """ Test that the base Extension class will raise NotImplemented. """\r
- _create_fake_extension(name='fake')\r
- self.assertRaises(NotImplementedError, \r
- markdown.Markdown, extensions=['fake'])\r
-\r
-\r
-def _create_fake_extension(name, has_factory_func=True, is_wrong_type=False):\r
- """ Create a fake extension module for testing. """\r
- mod_name = '_'.join(['mdx', name])\r
- if not PY3:\r
- # mod_name must be bytes in Python 2.x\r
- mod_name = bytes(mod_name)\r
- ext_mod = types.ModuleType(mod_name)\r
- def makeExtension(configs=None):\r
- if is_wrong_type:\r
- return object\r
- else:\r
- return markdown.extensions.Extension(configs=configs)\r
- if has_factory_func:\r
- ext_mod.makeExtension = makeExtension\r
- # Warning: this brute forces the extenson module onto the system. Either \r
- # this needs to be specificly overriden or a new python session needs to \r
- # be started to get rid of this. This should be ok in a testing context.\r
- sys.modules[mod_name] = ext_mod\r
-\r
-\r
-class testETreeComments(unittest.TestCase):\r
- """ \r
- Test that ElementTree Comments work.\r
-\r
- These tests should only be a concern when using cElementTree with third\r
- party serializers (including markdown's (x)html serializer). While markdown\r
- doesn't use ElementTree.Comment itself, we should certainly support any\r
- third party extensions which may. Therefore, these tests are included to\r
- ensure such support is maintained.\r
- """\r
-\r
- def setUp(self):\r
- # Create comment node\r
- self.comment = markdown.util.etree.Comment('foo')\r
- if hasattr(markdown.util.etree, 'test_comment'):\r
- self.test_comment = markdown.util.etree.test_comment\r
- else:\r
- self.test_comment = markdown.util.etree.Comment\r
-\r
- def testCommentIsComment(self):\r
- """ Test that an ElementTree Comment passes the `is Comment` test. """\r
- self.assertTrue(self.comment.tag is markdown.util.etree.test_comment)\r
-\r
- def testCommentIsBlockLevel(self):\r
- """ Test that an ElementTree Comment is recognized as BlockLevel. """\r
- self.assertFalse(markdown.util.isBlockLevel(self.comment.tag))\r
-\r
- def testCommentSerialization(self):\r
- """ Test that an ElementTree Comment serializes properly. """\r
- self.assertEqual(markdown.serializers.to_html_string(self.comment),\r
- '<!--foo-->')\r
-\r
- def testCommentPrettify(self):\r
- """ Test that an ElementTree Comment is prettified properly. """\r
- pretty = markdown.treeprocessors.PrettifyTreeprocessor()\r
- pretty.run(self.comment)\r
- self.assertEqual(markdown.serializers.to_html_string(self.comment),\r
- '<!--foo-->\n')\r
-\r
-\r
-class testSerializers(unittest.TestCase):\r
- """ Test the html and xhtml serializers. """\r
-\r
- def testHtml(self):\r
- """ Test HTML serialization. """\r
- el = markdown.util.etree.Element('div')\r
- p = markdown.util.etree.SubElement(el, 'p')\r
- p.text = 'foo'\r
- hr = markdown.util.etree.SubElement(el, 'hr')\r
- self.assertEqual(markdown.serializers.to_html_string(el),\r
- '<div><p>foo</p><hr></div>')\r
-\r
- def testXhtml(self):\r
- """" Test XHTML serialization. """\r
- el = markdown.util.etree.Element('div')\r
- p = markdown.util.etree.SubElement(el, 'p')\r
- p.text = 'foo'\r
- hr = markdown.util.etree.SubElement(el, 'hr')\r
- self.assertEqual(markdown.serializers.to_xhtml_string(el),\r
- '<div><p>foo</p><hr /></div>')\r
-\r
- def testMixedCaseTags(self):\r
- """" Test preservation of tag case. """\r
- el = markdown.util.etree.Element('MixedCase')\r
- el.text = 'not valid '\r
- em = markdown.util.etree.SubElement(el, 'EMPHASIS')\r
- em.text = 'html'\r
- hr = markdown.util.etree.SubElement(el, 'HR')\r
- self.assertEqual(markdown.serializers.to_xhtml_string(el),\r
- '<MixedCase>not valid <EMPHASIS>html</EMPHASIS><HR /></MixedCase>')\r
-\r
-\r
- def buildExtension(self):\r
- """ Build an extension which registers fakeSerializer. """\r
- def fakeSerializer(elem):\r
- # Ignore input and return hardcoded output\r
- return '<div><p>foo</p></div>'\r
-\r
- class registerFakeSerializer(markdown.extensions.Extension):\r
- def extendMarkdown(self, md, md_globals):\r
- md.output_formats['fake'] = fakeSerializer\r
-\r
- return registerFakeSerializer()\r
-\r
- def testRegisterSerializer(self):\r
- self.assertEqual(markdown.markdown('baz', \r
- extensions=[self.buildExtension()], output_format='fake'),\r
- '<p>foo</p>')\r
-\r
-\r
-class testAtomicString(unittest.TestCase):\r
- """ Test that AtomicStrings are honored (not parsed). """\r
-\r
- def setUp(self):\r
- md = markdown.Markdown()\r
- self.inlineprocessor = md.treeprocessors['inline']\r
-\r
- def testString(self):\r
- """ Test that a regular string is parsed. """\r
- tree = markdown.util.etree.Element('div')\r
- p = markdown.util.etree.SubElement(tree, 'p')\r
- p.text = 'some *text*'\r
- new = self.inlineprocessor.run(tree)\r
- self.assertEqual(markdown.serializers.to_html_string(new), \r
- '<div><p>some <em>text</em></p></div>')\r
-\r
- def testSimpleAtomicString(self):\r
- """ Test that a simple AtomicString is not parsed. """\r
- tree = markdown.util.etree.Element('div')\r
- p = markdown.util.etree.SubElement(tree, 'p')\r
- p.text = markdown.util.AtomicString('some *text*')\r
- new = self.inlineprocessor.run(tree)\r
- self.assertEqual(markdown.serializers.to_html_string(new), \r
- '<div><p>some *text*</p></div>')\r
-\r
- def testNestedAtomicString(self):\r
- """ Test that a nested AtomicString is not parsed. """\r
- tree = markdown.util.etree.Element('div')\r
- p = markdown.util.etree.SubElement(tree, 'p')\r
- p.text = markdown.util.AtomicString('*some* ')\r
- span1 = markdown.util.etree.SubElement(p, 'span')\r
- span1.text = markdown.util.AtomicString('*more* ')\r
- span2 = markdown.util.etree.SubElement(span1, 'span')\r
- span2.text = markdown.util.AtomicString('*text* ')\r
- span3 = markdown.util.etree.SubElement(span2, 'span')\r
- span3.text = markdown.util.AtomicString('*here*')\r
- span3.tail = markdown.util.AtomicString(' *to*')\r
- span2.tail = markdown.util.AtomicString(' *test*')\r
- span1.tail = markdown.util.AtomicString(' *with*')\r
- new = self.inlineprocessor.run(tree)\r
- self.assertEqual(markdown.serializers.to_html_string(new), \r
- '<div><p>*some* <span>*more* <span>*text* <span>*here*</span> '\r
- '*to*</span> *test*</span> *with*</p></div>')\r
-\r
-class TestConfigParsing(unittest.TestCase):\r
- def assertParses(self, value, result):\r
- self.assertIs(markdown.util.parseBoolValue(value, False), result)\r
-\r
- def testBooleansParsing(self):\r
- self.assertParses(True, True)\r
- self.assertParses('novalue', None)\r
- self.assertParses('yES', True)\r
- self.assertParses('FALSE', False)\r
- self.assertParses(0., False)\r
-\r
- def testInvalidBooleansParsing(self):\r
- self.assertRaises(ValueError, markdown.util.parseBoolValue, 'novalue')\r
+#!/usr/bin/python
+"""
+Python-Markdown Regression Tests
+================================
+
+Tests of the various APIs with the python markdown lib.
+
+"""
+
+from __future__ import unicode_literals
+import unittest
+import sys
+import os
+import types
+import markdown
+import warnings
+from markdown.__main__ import parse_options
+from logging import DEBUG, INFO, CRITICAL
+import yaml
+import tempfile
+
+PY3 = sys.version_info[0] == 3
+
+class TestMarkdownBasics(unittest.TestCase):
+ """ Tests basics of the Markdown class. """
+
+ def setUp(self):
+ """ Create instance of Markdown. """
+ self.md = markdown.Markdown()
+
+ def testBlankInput(self):
+ """ Test blank input. """
+ self.assertEqual(self.md.convert(''), '')
+
+ def testWhitespaceOnly(self):
+ """ Test input of only whitespace. """
+ self.assertEqual(self.md.convert(' '), '')
+
+ def testSimpleInput(self):
+ """ Test simple input. """
+ self.assertEqual(self.md.convert('foo'), '<p>foo</p>')
+
+ def testInstanceExtension(self):
+ """ Test Extension loading with a class instance. """
+ from markdown.extensions.footnotes import FootnoteExtension
+ markdown.Markdown(extensions=[FootnoteExtension()])
+
+ def testNamedExtension(self):
+ """ Test Extension loading with Name (`path.to.module`). """
+ markdown.Markdown(extensions=['markdown.extensions.footnotes'])
+
+ def TestNamedExtensionWithClass(self):
+ """ Test Extension loading with class name (`path.to.module:Class`). """
+ markdown.Markdown(extensions=['markdown.extensions.footnotes:FootnoteExtension'])
+
+class TestBlockParser(unittest.TestCase):
+ """ Tests of the BlockParser class. """
+
+ def setUp(self):
+ """ Create instance of BlockParser. """
+ self.parser = markdown.Markdown().parser
+
+ def testParseChunk(self):
+ """ Test BlockParser.parseChunk. """
+ root = markdown.util.etree.Element("div")
+ text = 'foo'
+ self.parser.parseChunk(root, text)
+ self.assertEqual(markdown.serializers.to_xhtml_string(root),
+ "<div><p>foo</p></div>")
+
+ def testParseDocument(self):
+ """ Test BlockParser.parseDocument. """
+ lines = ['#foo', '', 'bar', '', ' baz']
+ tree = self.parser.parseDocument(lines)
+ self.assertTrue(isinstance(tree, markdown.util.etree.ElementTree))
+ self.assertTrue(markdown.util.etree.iselement(tree.getroot()))
+ self.assertEqual(markdown.serializers.to_xhtml_string(tree.getroot()),
+ "<div><h1>foo</h1><p>bar</p><pre><code>baz\n</code></pre></div>")
+
+
+class TestBlockParserState(unittest.TestCase):
+ """ Tests of the State class for BlockParser. """
+
+ def setUp(self):
+ self.state = markdown.blockparser.State()
+
+ def testBlankState(self):
+ """ Test State when empty. """
+ self.assertEqual(self.state, [])
+
+ def testSetSate(self):
+ """ Test State.set(). """
+ self.state.set('a_state')
+ self.assertEqual(self.state, ['a_state'])
+ self.state.set('state2')
+ self.assertEqual(self.state, ['a_state', 'state2'])
+
+ def testIsSate(self):
+ """ Test State.isstate(). """
+ self.assertEqual(self.state.isstate('anything'), False)
+ self.state.set('a_state')
+ self.assertEqual(self.state.isstate('a_state'), True)
+ self.state.set('state2')
+ self.assertEqual(self.state.isstate('state2'), True)
+ self.assertEqual(self.state.isstate('a_state'), False)
+ self.assertEqual(self.state.isstate('missing'), False)
+
+ def testReset(self):
+ """ Test State.reset(). """
+ self.state.set('a_state')
+ self.state.reset()
+ self.assertEqual(self.state, [])
+ self.state.set('state1')
+ self.state.set('state2')
+ self.state.reset()
+ self.assertEqual(self.state, ['state1'])
+
+class TestHtmlStash(unittest.TestCase):
+ """ Test Markdown's HtmlStash. """
+
+ def setUp(self):
+ self.stash = markdown.util.HtmlStash()
+ self.placeholder = self.stash.store('foo')
+
+ def testSimpleStore(self):
+ """ Test HtmlStash.store. """
+ self.assertEqual(self.placeholder, self.stash.get_placeholder(0))
+ self.assertEqual(self.stash.html_counter, 1)
+ self.assertEqual(self.stash.rawHtmlBlocks, [('foo', False)])
+
+ def testStoreMore(self):
+ """ Test HtmlStash.store with additional blocks. """
+ placeholder = self.stash.store('bar')
+ self.assertEqual(placeholder, self.stash.get_placeholder(1))
+ self.assertEqual(self.stash.html_counter, 2)
+ self.assertEqual(self.stash.rawHtmlBlocks,
+ [('foo', False), ('bar', False)])
+
+ def testSafeStore(self):
+ """ Test HtmlStash.store with 'safe' html. """
+ self.stash.store('bar', True)
+ self.assertEqual(self.stash.rawHtmlBlocks,
+ [('foo', False), ('bar', True)])
+
+ def testReset(self):
+ """ Test HtmlStash.reset. """
+ self.stash.reset()
+ self.assertEqual(self.stash.html_counter, 0)
+ self.assertEqual(self.stash.rawHtmlBlocks, [])
+
+ def testUnsafeHtmlInSafeMode(self):
+ """ Test that unsafe HTML gets escaped in safe_mode. """
+ output = markdown.markdown('foo', extensions=[self.build_extension()], safe_mode='escape')
+ self.assertEqual(output, '<p><script>print("evil")</script></p>')
+
+ def build_extension(self):
+ """ Build an extention that addes unsafe html to Stash in same_mode. """
+ class Unsafe(markdown.treeprocessors.Treeprocessor):
+ def run(self, root):
+ el = root.find('p')
+ el.text = self.markdown.htmlStash.store('<script>print("evil")</script>', safe=False)
+ return root
+
+ class StoreUnsafeHtml(markdown.extensions.Extension):
+ def extendMarkdown(self, md, md_globals):
+ md.treeprocessors.add('unsafe', Unsafe(md), '_end')
+
+ return StoreUnsafeHtml()
+
+
+class TestOrderedDict(unittest.TestCase):
+ """ Test OrderedDict storage class. """
+
+ def setUp(self):
+ self.odict = markdown.odict.OrderedDict()
+ self.odict['first'] = 'This'
+ self.odict['third'] = 'a'
+ self.odict['fourth'] = 'self'
+ self.odict['fifth'] = 'test'
+
+ def testValues(self):
+ """ Test output of OrderedDict.values(). """
+ self.assertEqual(list(self.odict.values()), ['This', 'a', 'self', 'test'])
+
+ def testKeys(self):
+ """ Test output of OrderedDict.keys(). """
+ self.assertEqual(list(self.odict.keys()),
+ ['first', 'third', 'fourth', 'fifth'])
+
+ def testItems(self):
+ """ Test output of OrderedDict.items(). """
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test')])
+
+ def testAddBefore(self):
+ """ Test adding an OrderedDict item before a given key. """
+ self.odict.add('second', 'is', '<third')
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('second', 'is'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test')])
+
+ def testAddAfter(self):
+ """ Test adding an OrderDict item after a given key. """
+ self.odict.add('second', 'is', '>first')
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('second', 'is'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test')])
+
+ def testAddAfterEnd(self):
+ """ Test adding an OrderedDict item after the last key. """
+ self.odict.add('sixth', '.', '>fifth')
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test'), ('sixth', '.')])
+
+ def testAdd_begin(self):
+ """ Test adding an OrderedDict item using "_begin". """
+ self.odict.add('zero', 'CRAZY', '_begin')
+ self.assertEqual(list(self.odict.items()),
+ [('zero', 'CRAZY'), ('first', 'This'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test')])
+
+ def testAdd_end(self):
+ """ Test adding an OrderedDict item using "_end". """
+ self.odict.add('sixth', '.', '_end')
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test'), ('sixth', '.')])
+
+ def testAddBadLocation(self):
+ """ Test Error on bad location in OrderedDict.add(). """
+ self.assertRaises(ValueError, self.odict.add, 'sixth', '.', '<seventh')
+ self.assertRaises(ValueError, self.odict.add, 'second', 'is', 'third')
+
+ def testDeleteItem(self):
+ """ Test deletion of an OrderedDict item. """
+ del self.odict['fourth']
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('third', 'a'), ('fifth', 'test')])
+
+ def testChangeValue(self):
+ """ Test OrderedDict change value. """
+ self.odict['fourth'] = 'CRAZY'
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('third', 'a'),
+ ('fourth', 'CRAZY'), ('fifth', 'test')])
+
+ def testChangeOrder(self):
+ """ Test OrderedDict change order. """
+ self.odict.link('fourth', '<third')
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('fourth', 'self'),
+ ('third', 'a'), ('fifth', 'test')])
+
+ def textBadLink(self):
+ """ Test OrderedDict change order with bad location. """
+ self.assertRaises(ValueError, self.odict.link('fourth', '<bad'))
+ # Check for data integrity ("fourth" wasn't deleted).'
+ self.assertEqual(list(self.odict.items()),
+ [('first', 'This'), ('third', 'a'),
+ ('fourth', 'self'), ('fifth', 'test')])
+
+class TestErrors(unittest.TestCase):
+ """ Test Error Reporting. """
+
+ def setUp(self):
+ # Set warnings to be raised as errors
+ warnings.simplefilter('error')
+
+ def tearDown(self):
+ # Reset warning behavior back to default
+ warnings.simplefilter('default')
+
+ def testNonUnicodeSource(self):
+ """ Test falure on non-unicode source text. """
+ if sys.version_info < (3, 0):
+ source = "foo".encode('utf-16')
+ self.assertRaises(UnicodeDecodeError, markdown.markdown, source)
+
+ def testBadOutputFormat(self):
+ """ Test failure on bad output_format. """
+ self.assertRaises(KeyError, markdown.Markdown, output_format='invalid')
+
+ def testLoadExtensionFailure(self):
+ """ Test failure of an extension to load. """
+ self.assertRaises(ImportError,
+ markdown.Markdown, extensions=['non_existant_ext'])
+
+ def testLoadBadExtension(self):
+ """ Test loading of an Extension with no makeExtension function. """
+ _create_fake_extension(name='fake_a', has_factory_func=False)
+ self.assertRaises(AttributeError, markdown.Markdown, extensions=['fake_a'])
+
+ def testNonExtension(self):
+ """ Test loading a non Extension object as an extension. """
+ _create_fake_extension(name='fake_b', is_wrong_type=True)
+ self.assertRaises(TypeError, markdown.Markdown, extensions=['fake_b'])
+
+ def testBaseExtention(self):
+ """ Test that the base Extension class will raise NotImplemented. """
+ _create_fake_extension(name='fake_c')
+ self.assertRaises(NotImplementedError,
+ markdown.Markdown, extensions=['fake_c'])
+
+ def testMdxExtention(self):
+ """ Test that appending mdx_ raises a PendingDeprecationWarning. """
+ _create_fake_extension(name='fake_d', use_old_style=True)
+ self.assertRaises(PendingDeprecationWarning,
+ markdown.Markdown, extensions=['fake_d'])
+
+ def testShortNameExtention(self):
+ """ Test that using a short name raises a PendingDeprecationWarning. """
+ self.assertRaises(PendingDeprecationWarning,
+ markdown.Markdown, extensions=['footnotes'])
+
+ def testStringConfigExtention(self):
+ """ Test that passing configs to an Extension in the name raises a PendingDeprecationWarning. """
+ self.assertRaises(PendingDeprecationWarning,
+ markdown.Markdown, extensions=['markdown.extension.footnotes(PLACE_MARKER=FOO)'])
+
+
+def _create_fake_extension(name, has_factory_func=True, is_wrong_type=False, use_old_style=False):
+ """ Create a fake extension module for testing. """
+ if use_old_style:
+ mod_name = '_'.join(['mdx', name])
+ else:
+ mod_name = name
+ if not PY3:
+ # mod_name must be bytes in Python 2.x
+ mod_name = bytes(mod_name)
+ ext_mod = types.ModuleType(mod_name)
+ def makeExtension(*args, **kwargs):
+ if is_wrong_type:
+ return object
+ else:
+ return markdown.extensions.Extension(*args, **kwargs)
+ if has_factory_func:
+ ext_mod.makeExtension = makeExtension
+ # Warning: this brute forces the extenson module onto the system. Either
+ # this needs to be specificly overriden or a new python session needs to
+ # be started to get rid of this. This should be ok in a testing context.
+ sys.modules[mod_name] = ext_mod
+
+
+class testETreeComments(unittest.TestCase):
+ """
+ Test that ElementTree Comments work.
+
+ These tests should only be a concern when using cElementTree with third
+ party serializers (including markdown's (x)html serializer). While markdown
+ doesn't use ElementTree.Comment itself, we should certainly support any
+ third party extensions which may. Therefore, these tests are included to
+ ensure such support is maintained.
+ """
+
+ def setUp(self):
+ # Create comment node
+ self.comment = markdown.util.etree.Comment('foo')
+ if hasattr(markdown.util.etree, 'test_comment'):
+ self.test_comment = markdown.util.etree.test_comment
+ else:
+ self.test_comment = markdown.util.etree.Comment
+
+ def testCommentIsComment(self):
+ """ Test that an ElementTree Comment passes the `is Comment` test. """
+ self.assertTrue(self.comment.tag is markdown.util.etree.test_comment)
+
+ def testCommentIsBlockLevel(self):
+ """ Test that an ElementTree Comment is recognized as BlockLevel. """
+ self.assertFalse(markdown.util.isBlockLevel(self.comment.tag))
+
+ def testCommentSerialization(self):
+ """ Test that an ElementTree Comment serializes properly. """
+ self.assertEqual(markdown.serializers.to_html_string(self.comment),
+ '<!--foo-->')
+
+ def testCommentPrettify(self):
+ """ Test that an ElementTree Comment is prettified properly. """
+ pretty = markdown.treeprocessors.PrettifyTreeprocessor()
+ pretty.run(self.comment)
+ self.assertEqual(markdown.serializers.to_html_string(self.comment),
+ '<!--foo-->\n')
+
+
+class testSerializers(unittest.TestCase):
+ """ Test the html and xhtml serializers. """
+
+ def testHtml(self):
+ """ Test HTML serialization. """
+ el = markdown.util.etree.Element('div')
+ p = markdown.util.etree.SubElement(el, 'p')
+ p.text = 'foo'
+ hr = markdown.util.etree.SubElement(el, 'hr')
+ self.assertEqual(markdown.serializers.to_html_string(el),
+ '<div><p>foo</p><hr></div>')
+
+ def testXhtml(self):
+ """" Test XHTML serialization. """
+ el = markdown.util.etree.Element('div')
+ p = markdown.util.etree.SubElement(el, 'p')
+ p.text = 'foo'
+ hr = markdown.util.etree.SubElement(el, 'hr')
+ self.assertEqual(markdown.serializers.to_xhtml_string(el),
+ '<div><p>foo</p><hr /></div>')
+
+ def testMixedCaseTags(self):
+ """" Test preservation of tag case. """
+ el = markdown.util.etree.Element('MixedCase')
+ el.text = 'not valid '
+ em = markdown.util.etree.SubElement(el, 'EMPHASIS')
+ em.text = 'html'
+ hr = markdown.util.etree.SubElement(el, 'HR')
+ self.assertEqual(markdown.serializers.to_xhtml_string(el),
+ '<MixedCase>not valid <EMPHASIS>html</EMPHASIS><HR /></MixedCase>')
+
+
+ def buildExtension(self):
+ """ Build an extension which registers fakeSerializer. """
+ def fakeSerializer(elem):
+ # Ignore input and return hardcoded output
+ return '<div><p>foo</p></div>'
+
+ class registerFakeSerializer(markdown.extensions.Extension):
+ def extendMarkdown(self, md, md_globals):
+ md.output_formats['fake'] = fakeSerializer
+
+ return registerFakeSerializer()
+
+ def testRegisterSerializer(self):
+ self.assertEqual(markdown.markdown('baz',
+ extensions=[self.buildExtension()], output_format='fake'),
+ '<p>foo</p>')
+
+
+class testAtomicString(unittest.TestCase):
+ """ Test that AtomicStrings are honored (not parsed). """
+
+ def setUp(self):
+ md = markdown.Markdown()
+ self.inlineprocessor = md.treeprocessors['inline']
+
+ def testString(self):
+ """ Test that a regular string is parsed. """
+ tree = markdown.util.etree.Element('div')
+ p = markdown.util.etree.SubElement(tree, 'p')
+ p.text = 'some *text*'
+ new = self.inlineprocessor.run(tree)
+ self.assertEqual(markdown.serializers.to_html_string(new),
+ '<div><p>some <em>text</em></p></div>')
+
+ def testSimpleAtomicString(self):
+ """ Test that a simple AtomicString is not parsed. """
+ tree = markdown.util.etree.Element('div')
+ p = markdown.util.etree.SubElement(tree, 'p')
+ p.text = markdown.util.AtomicString('some *text*')
+ new = self.inlineprocessor.run(tree)
+ self.assertEqual(markdown.serializers.to_html_string(new),
+ '<div><p>some *text*</p></div>')
+
+ def testNestedAtomicString(self):
+ """ Test that a nested AtomicString is not parsed. """
+ tree = markdown.util.etree.Element('div')
+ p = markdown.util.etree.SubElement(tree, 'p')
+ p.text = markdown.util.AtomicString('*some* ')
+ span1 = markdown.util.etree.SubElement(p, 'span')
+ span1.text = markdown.util.AtomicString('*more* ')
+ span2 = markdown.util.etree.SubElement(span1, 'span')
+ span2.text = markdown.util.AtomicString('*text* ')
+ span3 = markdown.util.etree.SubElement(span2, 'span')
+ span3.text = markdown.util.AtomicString('*here*')
+ span3.tail = markdown.util.AtomicString(' *to*')
+ span2.tail = markdown.util.AtomicString(' *test*')
+ span1.tail = markdown.util.AtomicString(' *with*')
+ new = self.inlineprocessor.run(tree)
+ self.assertEqual(markdown.serializers.to_html_string(new),
+ '<div><p>*some* <span>*more* <span>*text* <span>*here*</span> '
+ '*to*</span> *test*</span> *with*</p></div>')
+
+class TestConfigParsing(unittest.TestCase):
+ def assertParses(self, value, result):
+ self.assertTrue(markdown.util.parseBoolValue(value, False) is result)
+
+ def testBooleansParsing(self):
+ self.assertParses(True, True)
+ self.assertParses('novalue', None)
+ self.assertParses('yES', True)
+ self.assertParses('FALSE', False)
+ self.assertParses(0., False)
+ self.assertParses('none', False)
+
+ def testPreserveNone(self):
+ self.assertTrue(markdown.util.parseBoolValue('None', preserve_none=True) is None)
+ self.assertTrue(markdown.util.parseBoolValue(None, preserve_none=True) is None)
+
+ def testInvalidBooleansParsing(self):
+ self.assertRaises(ValueError, markdown.util.parseBoolValue, 'novalue')
+
+class TestCliOptionParsing(unittest.TestCase):
+ """ Test parsing of Command Line Interface Options. """
+
+ def setUp(self):
+ self.default_options = {
+ 'input': None,
+ 'output': None,
+ 'encoding': None,
+ 'safe_mode': False,
+ 'output_format': 'xhtml1',
+ 'lazy_ol': True,
+ 'extensions': [],
+ 'extension_configs': {},
+ }
+ self.tempfile = ''
+
+ def tearDown(self):
+ if os.path.isfile(self.tempfile):
+ os.remove(self.tempfile)
+
+ def testNoOptions(self):
+ options, logging_level = parse_options([])
+ self.assertEqual(options, self.default_options)
+ self.assertEqual(logging_level, CRITICAL)
+
+ def testQuietOption(self):
+ options, logging_level = parse_options(['-q'])
+ self.assertTrue(logging_level > CRITICAL)
+
+ def testVerboseOption(self):
+ options, logging_level = parse_options(['-v'])
+ self.assertEqual(logging_level, INFO)
+
+ def testNoisyOption(self):
+ options, logging_level = parse_options(['--noisy'])
+ self.assertEqual(logging_level, DEBUG)
+
+ def testInputFileOption(self):
+ options, logging_level = parse_options(['foo.txt'])
+ self.default_options['input'] = 'foo.txt'
+ self.assertEqual(options, self.default_options)
+
+ def testOutputFileOption(self):
+ options, logging_level = parse_options(['-f', 'foo.html'])
+ self.default_options['output'] = 'foo.html'
+ self.assertEqual(options, self.default_options)
+
+ def testInputAndOutputFileOptions(self):
+ options, logging_level = parse_options(['-f', 'foo.html', 'foo.txt'])
+ self.default_options['output'] = 'foo.html'
+ self.default_options['input'] = 'foo.txt'
+ self.assertEqual(options, self.default_options)
+
+ def testEncodingOption(self):
+ options, logging_level = parse_options(['-e', 'utf-8'])
+ self.default_options['encoding'] = 'utf-8'
+ self.assertEqual(options, self.default_options)
+
+ def testSafeModeOption(self):
+ options, logging_level = parse_options(['-s', 'escape'])
+ self.default_options['safe_mode'] = 'escape'
+ self.assertEqual(options, self.default_options)
+
+ def testOutputFormatOption(self):
+ options, logging_level = parse_options(['-o', 'html5'])
+ self.default_options['output_format'] = 'html5'
+ self.assertEqual(options, self.default_options)
+
+ def testNoLazyOlOption(self):
+ options, logging_level = parse_options(['-n'])
+ self.default_options['lazy_ol'] = False
+ self.assertEqual(options, self.default_options)
+
+ def testExtensionOption(self):
+ options, logging_level = parse_options(['-x', 'markdown.extensions.footnotes'])
+ self.default_options['extensions'] = ['markdown.extensions.footnotes']
+ self.assertEqual(options, self.default_options)
+
+ def testMultipleExtensionOptions(self):
+ options, logging_level = parse_options(['-x', 'markdown.extensions.footnotes',
+ '-x', 'markdown.extensions.smarty'])
+ self.default_options['extensions'] = ['markdown.extensions.footnotes',
+ 'markdown.extensions.smarty']
+ self.assertEqual(options, self.default_options)
+
+ def create_config_file(self, config):
+ """ Helper to create temp config files. """
+ if not isinstance(config, markdown.util.string_type):
+ # convert to string
+ config = yaml.dump(config)
+ fd, self.tempfile = tempfile.mkstemp('.yml')
+ with os.fdopen(fd, 'w') as fp:
+ fp.write(config)
+
+ def testExtensonConfigOption(self):
+ config = {
+ 'markdown.extensions.wikilinks': {
+ 'base_url': 'http://example.com/',
+ 'end_url': '.html',
+ 'html_class': 'test',
+ },
+ 'markdown.extensions.footnotes:FootnotesExtension': {
+ 'PLACE_MARKER': '~~~footnotes~~~'
+ }
+ }
+ self.create_config_file(config)
+ options, logging_level = parse_options(['-c', self.tempfile])
+ self.default_options['extension_configs'] = config
+ self.assertEqual(options, self.default_options)
+
+ def testExtensonConfigOptionAsJSON(self):
+ config = {
+ 'markdown.extensions.wikilinks': {
+ 'base_url': 'http://example.com/',
+ 'end_url': '.html',
+ 'html_class': 'test',
+ },
+ 'markdown.extensions.footnotes:FootnotesExtension': {
+ 'PLACE_MARKER': '~~~footnotes~~~'
+ }
+ }
+ import json
+ self.create_config_file(json.dumps(config))
+ options, logging_level = parse_options(['-c', self.tempfile])
+ self.default_options['extension_configs'] = config
+ self.assertEqual(options, self.default_options)
+
+ def testExtensonConfigOptionMissingFile(self):
+ self.assertRaises(IOError, parse_options, ['-c', 'missing_file.yaml'])
+
+ def testExtensonConfigOptionBadFormat(self):
+ config = """
+[footnotes]
+PLACE_MARKER= ~~~footnotes~~~
+"""
+ self.create_config_file(config)
+ self.assertRaises(yaml.YAMLError, parse_options, ['-c', self.tempfile])
\ No newline at end of file
-"""\r
-Python-Markdown Extension Regression Tests\r
-==========================================\r
-\r
-A collection of regression tests to confirm that the included extensions\r
-continue to work as advertised. This used to be accomplished by doctests.\r
-\r
-"""\r
-\r
-from __future__ import unicode_literals\r
-import unittest\r
-import markdown\r
-\r
-class TestAbbr(unittest.TestCase):\r
- """ Test abbr extension. """\r
-\r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['abbr'])\r
-\r
- def testSimpleAbbr(self):\r
- """ Test Abbreviations. """\r
- text = 'Some text with an ABBR and a REF. Ignore REFERENCE and ref.' + \\r
- '\n\n*[ABBR]: Abbreviation\n' + \\r
- '*[REF]: Abbreviation Reference'\r
- self.assertEqual(self.md.convert(text),\r
- '<p>Some text with an <abbr title="Abbreviation">ABBR</abbr> '\r
- 'and a <abbr title="Abbreviation Reference">REF</abbr>. Ignore '\r
- 'REFERENCE and ref.</p>')\r
-\r
- def testNestedAbbr(self):\r
- """ Test Nested Abbreviations. """\r
- text = '[ABBR](/foo) and _ABBR_\n\n' + \\r
- '*[ABBR]: Abreviation'\r
- self.assertEqual(self.md.convert(text),\r
- '<p><a href="/foo"><abbr title="Abreviation">ABBR</abbr></a> '\r
- 'and <em><abbr title="Abreviation">ABBR</abbr></em></p>')\r
-\r
-\r
-class TestCodeHilite(unittest.TestCase):\r
- """ Test codehilite extension. """\r
-\r
- def setUp(self):\r
- self.has_pygments = True\r
- try:\r
- import pygments\r
- except ImportError:\r
- self.has_pygments = False\r
-\r
- def testBasicCodeHilite(self):\r
- text = '\t# A Code Comment'\r
- md = markdown.Markdown(extensions=['codehilite'])\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite">'\r
- '<pre><span class="c"># A Code Comment</span>\n'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code># A Code Comment'\r
- '</code></pre>')\r
- \r
- def testLinenumsTrue(self):\r
- text = '\t# A Code Comment'\r
- md = markdown.Markdown(extensions=['codehilite(linenums=True)'])\r
- if self.has_pygments:\r
- # Differant versions of pygments output slightly different markup.\r
- # So we use 'startwith' and test just enough to confirm that \r
- # pygments received and processed linenums.\r
- self.assertTrue(md.convert(text).startswith(\r
- '<table class="codehilitetable"><tr><td class="linenos">'))\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code class="linenums"># A Code Comment'\r
- '</code></pre>')\r
-\r
- def testLinenumsFalse(self):\r
- text = '\t#!Python\n\t# A Code Comment'\r
- md = markdown.Markdown(extensions=['codehilite(linenums=False)'])\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite">'\r
- '<pre><span class="c"># A Code Comment</span>\n'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code class="language-python"># A Code Comment'\r
- '</code></pre>')\r
-\r
- def testLinenumsNone(self):\r
- text = '\t# A Code Comment'\r
- md = markdown.Markdown(extensions=['codehilite(linenums=None)'])\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite">'\r
- '<pre><span class="c"># A Code Comment</span>\n'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code># A Code Comment'\r
- '</code></pre>')\r
-\r
- def testLinenumsNoneWithShebang(self):\r
- text = '\t#!Python\n\t# A Code Comment'\r
- md = markdown.Markdown(extensions=['codehilite(linenums=None)'])\r
- if self.has_pygments:\r
- # Differant versions of pygments output slightly different markup.\r
- # So we use 'startwith' and test just enough to confirm that \r
- # pygments received and processed linenums.\r
- self.assertTrue(md.convert(text).startswith(\r
- '<table class="codehilitetable"><tr><td class="linenos">'))\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code class="language-python linenums"># A Code Comment'\r
- '</code></pre>')\r
-\r
- def testLinenumsNoneWithColon(self):\r
- text = '\t:::Python\n\t# A Code Comment'\r
- md = markdown.Markdown(extensions=['codehilite(linenums=None)'])\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite">'\r
- '<pre><span class="c"># A Code Comment</span>\n'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code class="language-python"># A Code Comment'\r
- '</code></pre>')\r
-\r
- def testHighlightLinesWithColon(self):\r
- # Test with hl_lines delimited by single or double quotes.\r
- text0 = '\t:::Python hl_lines="2"\n\t#line 1\n\t#line 2\n\t#line 3'\r
- text1 = "\t:::Python hl_lines='2'\n\t#line 1\n\t#line 2\n\t#line 3"\r
-\r
- for text in (text0, text1):\r
- md = markdown.Markdown(extensions=['codehilite'])\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite"><pre>'\r
- '<span class="c">#line 1</span>\n'\r
- '<span class="hll"><span class="c">#line 2</span>\n</span>'\r
- '<span class="c">#line 3</span>\n'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite">'\r
- '<code class="language-python">#line 1\n'\r
- '#line 2\n'\r
- '#line 3</code></pre>')\r
-\r
-class TestFencedCode(unittest.TestCase):\r
- """ Test fenced_code extension. """\r
-\r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['fenced_code'])\r
- self.has_pygments = True\r
- try:\r
- import pygments\r
- except ImportError:\r
- self.has_pygments = False\r
-\r
- def testBasicFence(self):\r
- """ Test Fenced Code Blocks. """\r
- text = '''\r
-A paragraph before a fenced code block:\r
-\r
-~~~\r
-Fenced code block\r
-~~~'''\r
- self.assertEqual(self.md.convert(text),\r
- '<p>A paragraph before a fenced code block:</p>\n'\r
- '<pre><code>Fenced code block\n'\r
- '</code></pre>')\r
-\r
- def testSafeFence(self):\r
- """ Test Fenced Code with safe_mode. """\r
- text = '~~~\nCode\n~~~'\r
- self.md.safeMode = 'replace'\r
- self.assertEqual(self.md.convert(text),\r
- '<pre><code>Code\n'\r
- '</code></pre>')\r
-\r
- def testNestedFence(self):\r
- """ Test nested fence. """\r
-\r
- text = '''\r
-~~~~~~~~\r
-\r
-~~~~\r
-~~~~~~~~'''\r
- self.assertEqual(self.md.convert(text),\r
- '<pre><code>\n'\r
- '~~~~\n'\r
- '</code></pre>')\r
-\r
- def testFencedLanguage(self):\r
- """ Test Language Tags. """\r
-\r
- text = '''\r
-~~~~{.python}\r
-# Some python code\r
-~~~~'''\r
- self.assertEqual(self.md.convert(text),\r
- '<pre><code class="python"># Some python code\n'\r
- '</code></pre>')\r
-\r
- def testFencedBackticks(self):\r
- """ Test Code Fenced with Backticks. """\r
-\r
- text = '''\r
-`````\r
-# Arbitrary code\r
-~~~~~ # these tildes will not close the block\r
-`````'''\r
- self.assertEqual(self.md.convert(text),\r
- '<pre><code># Arbitrary code\n'\r
- '~~~~~ # these tildes will not close the block\n'\r
- '</code></pre>')\r
-\r
- def testFencedCodeWithHighlightLines(self):\r
- """ Test Fenced Code with Highlighted Lines. """\r
-\r
- text = '''\r
-```hl_lines="1 3"\r
-line 1\r
-line 2\r
-line 3\r
-```'''\r
- md = markdown.Markdown(extensions=[\r
- 'codehilite(linenums=None,guess_lang=False)',\r
- 'fenced_code'])\r
-\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite"><pre>'\r
- '<span class="hll">line 1\n</span>'\r
- 'line 2\n'\r
- '<span class="hll">line 3\n</span>'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code>line 1\n'\r
- 'line 2\n'\r
- 'line 3</code></pre>')\r
-\r
- def testFencedLanguageAndHighlightLines(self):\r
- """ Test Fenced Code with Highlighted Lines. """\r
-\r
- text0 = '''\r
-```.python hl_lines="1 3"\r
-#line 1\r
-#line 2\r
-#line 3\r
-```'''\r
- text1 = '''\r
-~~~{.python hl_lines='1 3'}\r
-#line 1\r
-#line 2\r
-#line 3\r
-~~~'''\r
- for text in (text0, text1):\r
- md = markdown.Markdown(extensions=[\r
- 'codehilite(linenums=None,guess_lang=False)',\r
- 'fenced_code'])\r
-\r
- if self.has_pygments:\r
- self.assertEqual(md.convert(text),\r
- '<div class="codehilite"><pre>'\r
- '<span class="hll"><span class="c">#line 1</span>\n</span>'\r
- '<span class="c">#line 2</span>\n'\r
- '<span class="hll"><span class="c">#line 3</span>\n</span>'\r
- '</pre></div>')\r
- else:\r
- self.assertEqual(md.convert(text),\r
- '<pre class="codehilite"><code class="language-python">#line 1\n'\r
- '#line 2\n'\r
- '#line 3</code></pre>')\r
-\r
-class TestHeaderId(unittest.TestCase):\r
- """ Test HeaderId Extension. """\r
-\r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['headerid'])\r
-\r
- def testBasicHeaderId(self):\r
- """ Test Basic HeaderID """\r
-\r
- text = "# Some Header #"\r
- self.assertEqual(self.md.convert(text),\r
- '<h1 id="some-header">Some Header</h1>')\r
-\r
- def testUniqueFunc(self):\r
- """ Test 'unique' function. """\r
- from markdown.extensions.headerid import unique\r
- ids = set(['foo'])\r
- self.assertEqual(unique('foo', ids), 'foo_1')\r
- self.assertEqual(ids, set(['foo', 'foo_1']))\r
-\r
- def testUniqueIds(self):\r
- """ Test Unique IDs. """\r
-\r
- text = '#Header\n#Header\n#Header'\r
- self.assertEqual(self.md.convert(text),\r
- '<h1 id="header">Header</h1>\n'\r
- '<h1 id="header_1">Header</h1>\n'\r
- '<h1 id="header_2">Header</h1>')\r
-\r
- def testBaseLevel(self):\r
- """ Test Header Base Level. """\r
-\r
- text = '#Some Header\n## Next Level'\r
- self.assertEqual(markdown.markdown(text, ['headerid(level=3)']),\r
- '<h3 id="some-header">Some Header</h3>\n'\r
- '<h4 id="next-level">Next Level</h4>')\r
-\r
- def testHeaderInlineMarkup(self):\r
- """ Test Header IDs with inline markup. """\r
-\r
- text = '#Some *Header* with [markup](http://example.com).'\r
- self.assertEqual(self.md.convert(text),\r
- '<h1 id="some-header-with-markup">Some <em>Header</em> with '\r
- '<a href="http://example.com">markup</a>.</h1>')\r
-\r
- def testHtmlEntities(self):\r
- """ Test HeaderIDs with HTML Entities. """\r
- text = '# Foo & bar'\r
- self.assertEqual(self.md.convert(text),\r
- '<h1 id="foo-bar">Foo & bar</h1>')\r
-\r
- def testRawHtml(self):\r
- """ Test HeaderIDs with raw HTML. """\r
- text = '# Foo <b>Bar</b> Baz.'\r
- self.assertEqual(self.md.convert(text),\r
- '<h1 id="foo-bar-baz">Foo <b>Bar</b> Baz.</h1>')\r
-\r
- def testNoAutoIds(self):\r
- """ Test HeaderIDs with no auto generated IDs. """\r
-\r
- text = '# Some Header\n# Another Header'\r
- self.assertEqual(markdown.markdown(text, ['headerid(forceid=False)']),\r
- '<h1>Some Header</h1>\n'\r
- '<h1>Another Header</h1>')\r
-\r
- def testHeaderIdWithMetaData(self):\r
- """ Test Header IDs with MetaData extension. """\r
-\r
- text = '''header_level: 2\r
-header_forceid: Off\r
-\r
-# A Header'''\r
- self.assertEqual(markdown.markdown(text, ['headerid', 'meta']),\r
- '<h2>A Header</h2>')\r
-\r
- def testHeaderIdWithAttr_List(self):\r
- """ Test HeaderIDs with Attr_List extension. """\r
- \r
- text = '# Header1 {: #foo }\n# Header2 {: .bar }'\r
- self.assertEqual(markdown.markdown(text, ['headerid', 'attr_list']),\r
- '<h1 id="foo">Header1</h1>\n'\r
- '<h1 class="bar" id="header2">Header2</h1>')\r
- # Switch order extensions are loaded - should be no change in behavior.\r
- self.assertEqual(markdown.markdown(text, ['attr_list', 'headerid']),\r
- '<h1 id="foo">Header1</h1>\n'\r
- '<h1 class="bar" id="header2">Header2</h1>')\r
-\r
-class TestMetaData(unittest.TestCase):\r
- """ Test MetaData extension. """\r
-\r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['meta'])\r
-\r
- def testBasicMetaData(self):\r
- """ Test basic metadata. """\r
-\r
- text = '''Title: A Test Doc.\r
-Author: Waylan Limberg\r
- John Doe\r
-Blank_Data:\r
-\r
-The body. This is paragraph one.'''\r
- self.assertEqual(self.md.convert(text),\r
- '<p>The body. This is paragraph one.</p>')\r
- self.assertEqual(self.md.Meta,\r
- {'author': ['Waylan Limberg', 'John Doe'],\r
- 'blank_data': [''],\r
- 'title': ['A Test Doc.']})\r
-\r
- def testMissingMetaData(self):\r
- """ Test document without Meta Data. """\r
-\r
- text = ' Some Code - not extra lines of meta data.'\r
- self.assertEqual(self.md.convert(text),\r
- '<pre><code>Some Code - not extra lines of meta data.\n'\r
- '</code></pre>')\r
- self.assertEqual(self.md.Meta, {})\r
-\r
- def testMetaDataWithoutNewline(self):\r
- """ Test doocument with only metadata and no newline at end."""\r
- text = 'title: No newline'\r
- self.assertEqual(self.md.convert(text), '')\r
- self.assertEqual(self.md.Meta, {'title': ['No newline']})\r
-\r
-\r
-class TestWikiLinks(unittest.TestCase):\r
- """ Test Wikilinks Extension. """\r
-\r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['wikilinks'])\r
- self.text = "Some text with a [[WikiLink]]."\r
-\r
- def testBasicWikilinks(self):\r
- """ Test [[wikilinks]]. """\r
-\r
- self.assertEqual(self.md.convert(self.text),\r
- '<p>Some text with a '\r
- '<a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>')\r
-\r
- def testWikilinkWhitespace(self):\r
- """ Test whitespace in wikilinks. """\r
- self.assertEqual(self.md.convert('[[ foo bar_baz ]]'),\r
- '<p><a class="wikilink" href="/foo_bar_baz/">foo bar_baz</a></p>')\r
- self.assertEqual(self.md.convert('foo [[ ]] bar'),\r
- '<p>foo bar</p>')\r
-\r
- def testSimpleSettings(self):\r
- """ Test Simple Settings. """\r
-\r
- self.assertEqual(markdown.markdown(self.text,\r
- ['wikilinks(base_url=/wiki/,end_url=.html,html_class=foo)']),\r
- '<p>Some text with a '\r
- '<a class="foo" href="/wiki/WikiLink.html">WikiLink</a>.</p>')\r
-\r
- def testComplexSettings(self):\r
- """ Test Complex Settings. """\r
-\r
- md = markdown.Markdown(\r
- extensions = ['wikilinks'],\r
- extension_configs = {'wikilinks': [\r
- ('base_url', 'http://example.com/'),\r
- ('end_url', '.html'),\r
- ('html_class', '') ]},\r
- safe_mode = True)\r
- self.assertEqual(md.convert(self.text),\r
- '<p>Some text with a '\r
- '<a href="http://example.com/WikiLink.html">WikiLink</a>.</p>')\r
-\r
- def testWikilinksMetaData(self):\r
- """ test MetaData with Wikilinks Extension. """\r
-\r
- text = """wiki_base_url: http://example.com/\r
-wiki_end_url: .html\r
-wiki_html_class:\r
-\r
-Some text with a [[WikiLink]]."""\r
- md = markdown.Markdown(extensions=['meta', 'wikilinks'])\r
- self.assertEqual(md.convert(text),\r
- '<p>Some text with a '\r
- '<a href="http://example.com/WikiLink.html">WikiLink</a>.</p>')\r
-\r
- # MetaData should not carry over to next document:\r
- self.assertEqual(md.convert("No [[MetaData]] here."),\r
- '<p>No <a class="wikilink" href="/MetaData/">MetaData</a> '\r
- 'here.</p>')\r
-\r
- def testURLCallback(self):\r
- """ Test used of a custom URL builder. """\r
-\r
- def my_url_builder(label, base, end):\r
- return '/bar/'\r
- md = markdown.Markdown(extensions=['wikilinks'],\r
- extension_configs={'wikilinks' : [('build_url', my_url_builder)]})\r
- self.assertEqual(md.convert('[[foo]]'),\r
- '<p><a class="wikilink" href="/bar/">foo</a></p>')\r
-\r
-class TestAdmonition(unittest.TestCase):\r
- """ Test Admonition Extension. """\r
-\r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['admonition'])\r
-\r
- def testRE(self):\r
- RE = self.md.parser.blockprocessors['admonition'].RE\r
- tests = [\r
- ('!!! note', ('note', None)),\r
- ('!!! note "Please Note"', ('note', 'Please Note')),\r
- ('!!! note ""', ('note', '')),\r
- ]\r
- for test, expected in tests:\r
- self.assertEqual(RE.match(test).groups(), expected)\r
-\r
-class TestTOC(unittest.TestCase):\r
- """ Test TOC Extension. """\r
- \r
- def setUp(self):\r
- self.md = markdown.Markdown(extensions=['toc'])\r
-\r
- def testMarker(self):\r
- """ Test TOC with a Marker. """\r
- text = '[TOC]\n\n# Header 1\n\n## Header 2'\r
- self.assertEqual(self.md.convert(text),\r
- '<div class="toc">\n'\r
- '<ul>\n'\r
- '<li><a href="#header-1">Header 1</a>'\r
- '<ul>\n'\r
- '<li><a href="#header-2">Header 2</a></li>\n'\r
- '</ul>\n'\r
- '</li>\n'\r
- '</ul>\n'\r
- '</div>\n'\r
- '<h1 id="header-1">Header 1</h1>\n'\r
- '<h2 id="header-2">Header 2</h2>')\r
- \r
- def testNoMarker(self):\r
- """ Test TOC without a Marker. """\r
- text = '# Header 1\n\n## Header 2'\r
- self.assertEqual(self.md.convert(text),\r
- '<h1 id="header-1">Header 1</h1>\n'\r
- '<h2 id="header-2">Header 2</h2>')\r
- self.assertEqual(self.md.toc,\r
- '<div class="toc">\n'\r
- '<ul>\n'\r
- '<li><a href="#header-1">Header 1</a>'\r
- '<ul>\n'\r
- '<li><a href="#header-2">Header 2</a></li>\n'\r
- '</ul>\n'\r
- '</li>\n'\r
- '</ul>\n'\r
- '</div>\n')\r
+"""
+Python-Markdown Extension Regression Tests
+==========================================
+
+A collection of regression tests to confirm that the included extensions
+continue to work as advertised. This used to be accomplished by doctests.
+
+"""
+
+from __future__ import unicode_literals
+import unittest
+import markdown
+
+class TestExtensionClass(unittest.TestCase):
+ """ Test markdown.extensions.Extension. """
+
+ def setUp(self):
+ class TestExtension(markdown.extensions.Extension):
+ config = {
+ 'foo': ['bar', 'Description of foo'],
+ 'bar': ['baz', 'Description of bar']
+ }
+
+ self.ext = TestExtension()
+ self.ExtKlass = TestExtension
+
+ def testGetConfig(self):
+ self.assertEqual(self.ext.getConfig('foo'), 'bar')
+
+ def testGetConfigDefault(self):
+ self.assertEqual(self.ext.getConfig('baz'), '')
+ self.assertEqual(self.ext.getConfig('baz', default='missing'), 'missing')
+
+ def testGetConfigs(self):
+ self.assertEqual(self.ext.getConfigs(), {'foo': 'bar', 'bar': 'baz'})
+
+ def testGetConfigInfo(self):
+ self.assertEqual(dict(self.ext.getConfigInfo()),
+ dict([('foo', 'Description of foo'),
+ ('bar', 'Description of bar')]))
+
+ def testSetConfig(self):
+ self.ext.setConfig('foo', 'baz')
+ self.assertEqual(self.ext.getConfigs(), {'foo': 'baz', 'bar': 'baz'})
+
+ def testSetConfigWithBadKey(self):
+ # self.ext.setConfig('bad', 'baz) ==> KeyError
+ self.assertRaises(KeyError, self.ext.setConfig, 'bad', 'baz')
+
+ def testConfigAsKwargsOnInit(self):
+ ext = self.ExtKlass(foo='baz', bar='blah')
+ self.assertEqual(ext.getConfigs(), {'foo': 'baz', 'bar': 'blah'})
+
+
+class TestAbbr(unittest.TestCase):
+ """ Test abbr extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.abbr'])
+
+ def testSimpleAbbr(self):
+ """ Test Abbreviations. """
+ text = 'Some text with an ABBR and a REF. Ignore REFERENCE and ref.' + \
+ '\n\n*[ABBR]: Abbreviation\n' + \
+ '*[REF]: Abbreviation Reference'
+ self.assertEqual(self.md.convert(text),
+ '<p>Some text with an <abbr title="Abbreviation">ABBR</abbr> '
+ 'and a <abbr title="Abbreviation Reference">REF</abbr>. Ignore '
+ 'REFERENCE and ref.</p>')
+
+ def testNestedAbbr(self):
+ """ Test Nested Abbreviations. """
+ text = '[ABBR](/foo) and _ABBR_\n\n' + \
+ '*[ABBR]: Abreviation'
+ self.assertEqual(self.md.convert(text),
+ '<p><a href="/foo"><abbr title="Abreviation">ABBR</abbr></a> '
+ 'and <em><abbr title="Abreviation">ABBR</abbr></em></p>')
+
+
+class TestCodeHilite(unittest.TestCase):
+ """ Test codehilite extension. """
+
+ def setUp(self):
+ self.has_pygments = True
+ try:
+ import pygments
+ except ImportError:
+ self.has_pygments = False
+
+ def testBasicCodeHilite(self):
+ text = '\t# A Code Comment'
+ md = markdown.Markdown(extensions=['markdown.extensions.codehilite'])
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite">'
+ '<pre><span class="c"># A Code Comment</span>\n'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code># A Code Comment'
+ '</code></pre>')
+
+ def testLinenumsTrue(self):
+ text = '\t# A Code Comment'
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.codehilite.CodeHiliteExtension(linenums=True)])
+ if self.has_pygments:
+ # Differant versions of pygments output slightly different markup.
+ # So we use 'startwith' and test just enough to confirm that
+ # pygments received and processed linenums.
+ self.assertTrue(md.convert(text).startswith(
+ '<table class="codehilitetable"><tr><td class="linenos">'))
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code class="linenums"># A Code Comment'
+ '</code></pre>')
+
+ def testLinenumsFalse(self):
+ text = '\t#!Python\n\t# A Code Comment'
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.codehilite.CodeHiliteExtension(linenums=False)])
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite">'
+ '<pre><span class="c"># A Code Comment</span>\n'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code class="language-python"># A Code Comment'
+ '</code></pre>')
+
+ def testLinenumsNone(self):
+ text = '\t# A Code Comment'
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.codehilite.CodeHiliteExtension(linenums=None)])
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite">'
+ '<pre><span class="c"># A Code Comment</span>\n'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code># A Code Comment'
+ '</code></pre>')
+
+ def testLinenumsNoneWithShebang(self):
+ text = '\t#!Python\n\t# A Code Comment'
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.codehilite.CodeHiliteExtension(linenums=None)])
+ if self.has_pygments:
+ # Differant versions of pygments output slightly different markup.
+ # So we use 'startwith' and test just enough to confirm that
+ # pygments received and processed linenums.
+ self.assertTrue(md.convert(text).startswith(
+ '<table class="codehilitetable"><tr><td class="linenos">'))
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code class="language-python linenums"># A Code Comment'
+ '</code></pre>')
+
+ def testLinenumsNoneWithColon(self):
+ text = '\t:::Python\n\t# A Code Comment'
+ md = markdown.Markdown(
+ extensions=[markdown.extensions.codehilite.CodeHiliteExtension(linenums=None)])
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite">'
+ '<pre><span class="c"># A Code Comment</span>\n'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code class="language-python"># A Code Comment'
+ '</code></pre>')
+
+ def testHighlightLinesWithColon(self):
+ # Test with hl_lines delimited by single or double quotes.
+ text0 = '\t:::Python hl_lines="2"\n\t#line 1\n\t#line 2\n\t#line 3'
+ text1 = "\t:::Python hl_lines='2'\n\t#line 1\n\t#line 2\n\t#line 3"
+
+ for text in (text0, text1):
+ md = markdown.Markdown(extensions=['markdown.extensions.codehilite'])
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite"><pre>'
+ '<span class="c">#line 1</span>\n'
+ '<span class="hll"><span class="c">#line 2</span>\n</span>'
+ '<span class="c">#line 3</span>\n'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite">'
+ '<code class="language-python">#line 1\n'
+ '#line 2\n'
+ '#line 3</code></pre>')
+
+class TestFencedCode(unittest.TestCase):
+ """ Test fenced_code extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.fenced_code'])
+ self.has_pygments = True
+ try:
+ import pygments
+ except ImportError:
+ self.has_pygments = False
+
+ def testBasicFence(self):
+ """ Test Fenced Code Blocks. """
+ text = '''
+A paragraph before a fenced code block:
+
+~~~
+Fenced code block
+~~~'''
+ self.assertEqual(self.md.convert(text),
+ '<p>A paragraph before a fenced code block:</p>\n'
+ '<pre><code>Fenced code block\n'
+ '</code></pre>')
+
+ def testSafeFence(self):
+ """ Test Fenced Code with safe_mode. """
+ text = '~~~\nCode\n~~~'
+ self.md.safeMode = 'replace'
+ self.assertEqual(self.md.convert(text),
+ '<pre><code>Code\n'
+ '</code></pre>')
+
+ def testNestedFence(self):
+ """ Test nested fence. """
+
+ text = '''
+~~~~~~~~
+
+~~~~
+~~~~~~~~'''
+ self.assertEqual(self.md.convert(text),
+ '<pre><code>\n'
+ '~~~~\n'
+ '</code></pre>')
+
+ def testFencedLanguage(self):
+ """ Test Language Tags. """
+
+ text = '''
+~~~~{.python}
+# Some python code
+~~~~'''
+ self.assertEqual(self.md.convert(text),
+ '<pre><code class="python"># Some python code\n'
+ '</code></pre>')
+
+ def testFencedBackticks(self):
+ """ Test Code Fenced with Backticks. """
+
+ text = '''
+`````
+# Arbitrary code
+~~~~~ # these tildes will not close the block
+`````'''
+ self.assertEqual(self.md.convert(text),
+ '<pre><code># Arbitrary code\n'
+ '~~~~~ # these tildes will not close the block\n'
+ '</code></pre>')
+
+ def testFencedCodeWithHighlightLines(self):
+ """ Test Fenced Code with Highlighted Lines. """
+
+ text = '''
+```hl_lines="1 3"
+line 1
+line 2
+line 3
+```'''
+ md = markdown.Markdown(extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'markdown.extensions.fenced_code'])
+
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite"><pre>'
+ '<span class="hll">line 1\n</span>'
+ 'line 2\n'
+ '<span class="hll">line 3\n</span>'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code>line 1\n'
+ 'line 2\n'
+ 'line 3</code></pre>')
+
+ def testFencedLanguageAndHighlightLines(self):
+ """ Test Fenced Code with Highlighted Lines. """
+
+ text0 = '''
+```.python hl_lines="1 3"
+#line 1
+#line 2
+#line 3
+```'''
+ text1 = '''
+~~~{.python hl_lines='1 3'}
+#line 1
+#line 2
+#line 3
+~~~'''
+ for text in (text0, text1):
+ md = markdown.Markdown(extensions=[
+ markdown.extensions.codehilite.CodeHiliteExtension(linenums=None, guess_lang=False),
+ 'markdown.extensions.fenced_code'])
+
+ if self.has_pygments:
+ self.assertEqual(md.convert(text),
+ '<div class="codehilite"><pre>'
+ '<span class="hll"><span class="c">#line 1</span>\n</span>'
+ '<span class="c">#line 2</span>\n'
+ '<span class="hll"><span class="c">#line 3</span>\n</span>'
+ '</pre></div>')
+ else:
+ self.assertEqual(md.convert(text),
+ '<pre class="codehilite"><code class="language-python">#line 1\n'
+ '#line 2\n'
+ '#line 3</code></pre>')
+
+class TestHeaderId(unittest.TestCase):
+ """ Test HeaderId Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.headerid'])
+
+ def testBasicHeaderId(self):
+ """ Test Basic HeaderID """
+
+ text = "# Some Header #"
+ self.assertEqual(self.md.convert(text),
+ '<h1 id="some-header">Some Header</h1>')
+
+ def testUniqueFunc(self):
+ """ Test 'unique' function. """
+ from markdown.extensions.headerid import unique
+ ids = set(['foo'])
+ self.assertEqual(unique('foo', ids), 'foo_1')
+ self.assertEqual(ids, set(['foo', 'foo_1']))
+
+ def testUniqueIds(self):
+ """ Test Unique IDs. """
+
+ text = '#Header\n#Header\n#Header'
+ self.assertEqual(self.md.convert(text),
+ '<h1 id="header">Header</h1>\n'
+ '<h1 id="header_1">Header</h1>\n'
+ '<h1 id="header_2">Header</h1>')
+
+ def testBaseLevel(self):
+ """ Test Header Base Level. """
+
+ text = '#Some Header\n## Next Level'
+ self.assertEqual(
+ markdown.markdown(text, [markdown.extensions.headerid.HeaderIdExtension(level=3)]),
+ '<h3 id="some-header">Some Header</h3>\n'
+ '<h4 id="next-level">Next Level</h4>')
+
+ def testHeaderInlineMarkup(self):
+ """ Test Header IDs with inline markup. """
+
+ text = '#Some *Header* with [markup](http://example.com).'
+ self.assertEqual(self.md.convert(text),
+ '<h1 id="some-header-with-markup">Some <em>Header</em> with '
+ '<a href="http://example.com">markup</a>.</h1>')
+
+ def testHtmlEntities(self):
+ """ Test HeaderIDs with HTML Entities. """
+ text = '# Foo & bar'
+ self.assertEqual(self.md.convert(text),
+ '<h1 id="foo-bar">Foo & bar</h1>')
+
+ def testRawHtml(self):
+ """ Test HeaderIDs with raw HTML. """
+ text = '# Foo <b>Bar</b> Baz.'
+ self.assertEqual(self.md.convert(text),
+ '<h1 id="foo-bar-baz">Foo <b>Bar</b> Baz.</h1>')
+
+ def testNoAutoIds(self):
+ """ Test HeaderIDs with no auto generated IDs. """
+
+ text = '# Some Header\n# Another Header'
+ self.assertEqual(
+ markdown.markdown(text, [markdown.extensions.headerid.HeaderIdExtension(forceid=False)]),
+ '<h1>Some Header</h1>\n'
+ '<h1>Another Header</h1>')
+
+ def testHeaderIdWithMetaData(self):
+ """ Test Header IDs with MetaData extension. """
+
+ text = '''header_level: 2
+header_forceid: Off
+
+# A Header'''
+ self.assertEqual(markdown.markdown(text, ['markdown.extensions.headerid', 'markdown.extensions.meta']),
+ '<h2>A Header</h2>')
+
+ def testHeaderIdWithAttr_List(self):
+ """ Test HeaderIDs with Attr_List extension. """
+
+ text = '# Header1 {: #foo }\n# Header2 {: .bar }'
+ self.assertEqual(markdown.markdown(text, ['markdown.extensions.headerid', 'markdown.extensions.attr_list']),
+ '<h1 id="foo">Header1</h1>\n'
+ '<h1 class="bar" id="header2">Header2</h1>')
+ # Switch order extensions are loaded - should be no change in behavior.
+ self.assertEqual(markdown.markdown(text, ['markdown.extensions.attr_list', 'markdown.extensions.headerid']),
+ '<h1 id="foo">Header1</h1>\n'
+ '<h1 class="bar" id="header2">Header2</h1>')
+
+class TestMetaData(unittest.TestCase):
+ """ Test MetaData extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.meta'])
+
+ def testBasicMetaData(self):
+ """ Test basic metadata. """
+
+ text = '''Title: A Test Doc.
+Author: Waylan Limberg
+ John Doe
+Blank_Data:
+
+The body. This is paragraph one.'''
+ self.assertEqual(self.md.convert(text),
+ '<p>The body. This is paragraph one.</p>')
+ self.assertEqual(self.md.Meta,
+ {'author': ['Waylan Limberg', 'John Doe'],
+ 'blank_data': [''],
+ 'title': ['A Test Doc.']})
+
+ def testMissingMetaData(self):
+ """ Test document without Meta Data. """
+
+ text = ' Some Code - not extra lines of meta data.'
+ self.assertEqual(self.md.convert(text),
+ '<pre><code>Some Code - not extra lines of meta data.\n'
+ '</code></pre>')
+ self.assertEqual(self.md.Meta, {})
+
+ def testMetaDataWithoutNewline(self):
+ """ Test doocument with only metadata and no newline at end."""
+ text = 'title: No newline'
+ self.assertEqual(self.md.convert(text), '')
+ self.assertEqual(self.md.Meta, {'title': ['No newline']})
+
+
+class TestWikiLinks(unittest.TestCase):
+ """ Test Wikilinks Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.wikilinks'])
+ self.text = "Some text with a [[WikiLink]]."
+
+ def testBasicWikilinks(self):
+ """ Test [[wikilinks]]. """
+
+ self.assertEqual(self.md.convert(self.text),
+ '<p>Some text with a '
+ '<a class="wikilink" href="/WikiLink/">WikiLink</a>.</p>')
+
+ def testWikilinkWhitespace(self):
+ """ Test whitespace in wikilinks. """
+ self.assertEqual(self.md.convert('[[ foo bar_baz ]]'),
+ '<p><a class="wikilink" href="/foo_bar_baz/">foo bar_baz</a></p>')
+ self.assertEqual(self.md.convert('foo [[ ]] bar'),
+ '<p>foo bar</p>')
+
+ def testSimpleSettings(self):
+ """ Test Simple Settings. """
+
+ self.assertEqual(markdown.markdown(self.text,
+ [markdown.extensions.wikilinks.WikiLinkExtension(base_url='/wiki/',
+ end_url='.html',
+ html_class='foo')]),
+ '<p>Some text with a '
+ '<a class="foo" href="/wiki/WikiLink.html">WikiLink</a>.</p>')
+
+ def testComplexSettings(self):
+ """ Test Complex Settings. """
+
+ md = markdown.Markdown(
+ extensions = ['markdown.extensions.wikilinks'],
+ extension_configs = {'markdown.extensions.wikilinks': [
+ ('base_url', 'http://example.com/'),
+ ('end_url', '.html'),
+ ('html_class', '') ]},
+ safe_mode = True)
+ self.assertEqual(md.convert(self.text),
+ '<p>Some text with a '
+ '<a href="http://example.com/WikiLink.html">WikiLink</a>.</p>')
+
+ def testWikilinksMetaData(self):
+ """ test MetaData with Wikilinks Extension. """
+
+ text = """wiki_base_url: http://example.com/
+wiki_end_url: .html
+wiki_html_class:
+
+Some text with a [[WikiLink]]."""
+ md = markdown.Markdown(extensions=['markdown.extensions.meta', 'markdown.extensions.wikilinks'])
+ self.assertEqual(md.convert(text),
+ '<p>Some text with a '
+ '<a href="http://example.com/WikiLink.html">WikiLink</a>.</p>')
+
+ # MetaData should not carry over to next document:
+ self.assertEqual(md.convert("No [[MetaData]] here."),
+ '<p>No <a class="wikilink" href="/MetaData/">MetaData</a> '
+ 'here.</p>')
+
+ def testURLCallback(self):
+ """ Test used of a custom URL builder. """
+
+ from markdown.extensions.wikilinks import WikiLinkExtension
+
+ def my_url_builder(label, base, end):
+ return '/bar/'
+ md = markdown.Markdown(extensions=[WikiLinkExtension(build_url=my_url_builder)])
+ self.assertEqual(md.convert('[[foo]]'),
+ '<p><a class="wikilink" href="/bar/">foo</a></p>')
+
+class TestAdmonition(unittest.TestCase):
+ """ Test Admonition Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.admonition'])
+
+ def testRE(self):
+ RE = self.md.parser.blockprocessors['admonition'].RE
+ tests = [
+ ('!!! note', ('note', None)),
+ ('!!! note "Please Note"', ('note', 'Please Note')),
+ ('!!! note ""', ('note', '')),
+ ]
+ for test, expected in tests:
+ self.assertEqual(RE.match(test).groups(), expected)
+
+class TestTOC(unittest.TestCase):
+ """ Test TOC Extension. """
+
+ def setUp(self):
+ self.md = markdown.Markdown(extensions=['markdown.extensions.toc'])
+
+ def testMarker(self):
+ """ Test TOC with a Marker. """
+ text = '[TOC]\n\n# Header 1\n\n## Header 2'
+ self.assertEqual(self.md.convert(text),
+ '<div class="toc">\n'
+ '<ul>\n'
+ '<li><a href="#header-1">Header 1</a>'
+ '<ul>\n'
+ '<li><a href="#header-2">Header 2</a></li>\n'
+ '</ul>\n'
+ '</li>\n'
+ '</ul>\n'
+ '</div>\n'
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="header-2">Header 2</h2>')
+
+ def testNoMarker(self):
+ """ Test TOC without a Marker. """
+ text = '# Header 1\n\n## Header 2'
+ self.assertEqual(self.md.convert(text),
+ '<h1 id="header-1">Header 1</h1>\n'
+ '<h2 id="header-2">Header 2</h2>')
+ self.assertEqual(self.md.toc,
+ '<div class="toc">\n'
+ '<ul>\n'
+ '<li><a href="#header-1">Header 1</a>'
+ '<ul>\n'
+ '<li><a href="#header-2">Header 2</a></li>\n'
+ '</ul>\n'
+ '</li>\n'
+ '</ul>\n'
+ '</div>\n')
+
+
+class TestSmarty(unittest.TestCase):
+ def setUp(self):
+ config = {
+ 'markdown.extensions.smarty': [
+ ('smart_angled_quotes', True),
+ ('substitutions', {
+ 'ndash': '\u2013',
+ 'mdash': '\u2014',
+ 'ellipsis': '\u2026',
+ 'left-single-quote': '‚', # sb is not a typo!
+ 'right-single-quote': '‘',
+ 'left-double-quote': '„',
+ 'right-double-quote': '“',
+ 'left-angle-quote': '[',
+ 'right-angle-quote': ']',
+ }),]
+ }
+ self.md = markdown.Markdown(extensions=['markdown.extensions.smarty'],
+ extension_configs=config)
+
+ def testCustomSubstitutions(self):
+ text = \
+"""<< The "Unicode char of the year 2014"
+is the 'mdash': ---
+Must not be confused with 'ndash' (--) ... >>
+"""
+ correct = \
+"""<p>[ The „Unicode char of the year 2014“
+is the ‚mdash‘: \u2014
+Must not be confused with ‚ndash‘ (\u2013) \u2026 ]</p>"""
+ self.assertEqual(self.md.convert(text), correct)
+++ /dev/null
-import sys\r
-if sys.version_info[0] == 3:\r
- from configparser import ConfigParser\r
-else:\r
- from ConfigParser import SafeConfigParser as ConfigParser\r
-\r
-class MarkdownSyntaxError(Exception):\r
- pass\r
-\r
-\r
-class CustomConfigParser(ConfigParser):\r
- def get(self, section, option):\r
- value = ConfigParser.get(self, section, option)\r
- if option == 'extensions':\r
- if len(value.strip()):\r
- return value.split(',')\r
- else:\r
- return []\r
- if value.lower() in ['yes', 'true', 'on', '1']:\r
- return True\r
- if value.lower() in ['no', 'false', 'off', '0']:\r
- return False\r
- return value\r
-[tox]\r
-envlist = py26, py27, py31, py32, py33\r
-\r
-[testenv]\r
-downloadcache = {toxworkdir}/cache\r
-deps = nose\r
- git+https://github.com/waylan/pytidylib.git#egg=PyTidyLib\r
-commands = {envpython} {toxinidir}/run-tests.py {posargs}\r
+[tox]
+envlist = py27, py31, py32, py33, py34
+
+[testenv]
+downloadcache = {toxworkdir}/cache
+deps = nose
+ coverage
+ pyyaml
+ pytidylib
+commands = coverage run --source=markdown {toxinidir}/run-tests.py {posargs}
+ coverage report --show-missing